<?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=Jgr</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=Jgr"/>
	<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/wiki/Special:Contributions/Jgr"/>
	<updated>2026-06-10T15:47:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action2/Advanced_Sprite_Layout&amp;diff=5080</id>
		<title>Action2/Advanced Sprite Layout</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action2/Advanced_Sprite_Layout&amp;diff=5080"/>
		<updated>2025-08-19T21:33:09Z</updated>

		<summary type="html">&lt;p&gt;Jgr: /* Colour translation special sprite number */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced sprite layout using register offsets ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Sprite-number&amp;gt; * &amp;lt;Length&amp;gt; 02 07/09/0F/11 &amp;lt;set-id&amp;gt; &amp;lt;0x40 + num-sprites&amp;gt;&lt;br /&gt;
     &amp;lt;groundsprite&amp;gt; &amp;lt;flags&amp;gt; [&amp;lt;register/value&amp;gt;]...&lt;br /&gt;
     [ &amp;lt;buildingsprite&amp;gt; &amp;lt;flags&amp;gt;&lt;br /&gt;
         ( &amp;lt;xoffset&amp;gt; &amp;lt;yoffset&amp;gt; &amp;lt;zoffset&amp;gt; &amp;lt;xextent&amp;gt; &amp;lt;yextent&amp;gt; &amp;lt;zextent&amp;gt; &lt;br /&gt;
         | &amp;lt;xpixeloffset&amp;gt; &amp;lt;ypixeloffset&amp;gt; 80)&lt;br /&gt;
       [&amp;lt;register/value&amp;gt;]...&lt;br /&gt;
     ]...&lt;br /&gt;
&lt;br /&gt;
{{ottdp|1.2|no|ottdrev=r22518}}&lt;br /&gt;
The spritelayout defines fixed spritesets to use from the Action 1. The registers can be used to individually select sprites from the spritesets instead of always using the construction stage. The registers are evaluated and their values are saved when the Action 2 sprite layout is evaluated. Other callbacks called during drawing (like CB 1E) have no effect on the used values of the registers. &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Element!![[GRFActionsDetailed|Size]]!!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Sprite-number|Sprite-number]]&amp;amp;gt;||dec||A sequential sprite number&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Length|length]]&amp;amp;gt;||dec||The total number of bytes used in this action&lt;br /&gt;
|-&lt;br /&gt;
|02||B||Defines action 02&lt;br /&gt;
|-&lt;br /&gt;
|04/07/09/0F/11/14||B||feature: 07 town buildings, 09 industry tiles, 0F objects, 11 airport tiles, or 14 road stops&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Set-id|set-id]]&amp;amp;gt;||B||ID for this definition&lt;br /&gt;
|-&lt;br /&gt;
|40 + &amp;amp;lt;num-sprites&amp;amp;gt;||B||Number of following building sprites (the primary groundsprite mustn&#039;t be counted). Allowed range: 0x40+0 to 0x40+63 (0x40 to 0x7F).&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Sprite definition for ground and building sprites|groundsprite]]&amp;amp;gt;||D||Primary ground sprite for the building (see format below)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Flags in advanced sprite layouts|flags]]&amp;amp;gt;||W||Flags for the primary ground sprite (see format below)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Register or value in advances sprite layouts|register/value]]&amp;amp;gt;||V||Registers / values to be used. Depending on &amp;amp;lt;flags&amp;amp;gt; (see format below)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Sprite definition for ground and building sprites|buildingsprite]]&amp;amp;gt;||D||The sprite to be drawn. Unlike the basic format, zero isn&#039;t allowed here.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Flags in advanced sprite layouts|flags]]&amp;amp;gt;||W||Flags for the building sprite (see format below)&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;| -- for sprites defining a new bounding box --&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;xofs&amp;amp;gt;||B||x-offset from northern tile corner (as a signed byte)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;yofs&amp;amp;gt;||B||y-offset from northern tile corner (as a signed byte)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;zofs&amp;amp;gt;||B||z-offset from the ground&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;xextent&amp;amp;gt;||B||size of sprite in x direction&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;yextent&amp;amp;gt;||B||size of sprite in y direction&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;zextent&amp;amp;gt;||B||size of sprite in z direction&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;| -- for sprites sharing their bounding box with the previous sprite --&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;xpixeloffset&amp;amp;gt;||B||x offset from the top left corner of the previous sprite&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;ypixeloffset&amp;amp;gt;||B||y offset from the top left corner of the previous sprite&lt;br /&gt;
|-&lt;br /&gt;
|80||B||a literal 80h byte to distinguish from new-bounding-box definitions&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Register or value in advances sprite layouts|register/value]]&amp;amp;gt;||V||Registers / values to be used. Depending on &amp;amp;lt;flags&amp;amp;gt; (see format below)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Descriptions of elements ==&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;
=== Set-id ===&lt;br /&gt;
&lt;br /&gt;
The set-ID that you want to define for this set. You can choose any value between 00 and FF, and you can reuse them within a grf file at a later point (if being equal to an existing set ID, the existing one is overwritten and the new one is used).&lt;br /&gt;
&lt;br /&gt;
=== Sprite definition for ground and building sprites ===&lt;br /&gt;
&lt;br /&gt;
The ground and building sprite fields have the following format:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Bits!!Version!!Content&lt;br /&gt;
|-&lt;br /&gt;
|0-13||{{ottdp|0.6|2.5}}||Sprite number, exact meaning specified by bit 31&lt;br /&gt;
|-&lt;br /&gt;
|14-15||{{ottdp|0.6|2.5}}||0: draw sprite normally, 1: draw sprite in transparent mode, 2: recolor sprite&lt;br /&gt;
|-&lt;br /&gt;
|16-29||{{ottdp|0.6|2.5}}||Color translation special sprite number, see below&lt;br /&gt;
|-&lt;br /&gt;
|30||{{ottdp|0.6|2.5|ttdprev=alpha 57}}||If set, sprite is drawn normally even in transparent buildings mode (for building sprites only)&lt;br /&gt;
|-&lt;br /&gt;
|31||{{ottdp|0.6|2.5}}||Sprite type, see below&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.6|2.5|ttdprev=alpha 57}} Since TTDPatch 2.0.1 alpha 57, the groundsprite value can be zero if no ground sprite is needed (this is useful if you need to draw custom foundations, see [[Callbacks#Decide drawing default foundations 30 14E 150|example]]). Ground sprites are always drawn normally, so bit 30 is ignored for them. Bit 30 may get a different meaning for ground sprites in a later version of TTDPatch, so please leave it zero for now. This does not apply to additional groundsprites using the &amp;quot;&amp;amp;lt;xpixeloffset&amp;amp;gt; &amp;amp;lt;ypixeloffset&amp;amp;gt; 80&amp;quot;-syntax (see above); for these bit 30 has the same meaning as for building sprites.&lt;br /&gt;
&lt;br /&gt;
==== Colour translation special sprite number ====&lt;br /&gt;
&lt;br /&gt;
This is used only if bits 14 or 15 are nonzero. Bits 16-29 must be the number of a regular TTD sprite containing a colour translation table (see below for available translation tables). For transparent mode, a suitable translation table is needed, e.g. that of TTD´s sprite number 802 (s.b.). See [[RecolorSprites]] for more information on the usage of transparent and recolouring sprites.&lt;br /&gt;
&lt;br /&gt;
For houses, if no recolour sprite is given but recolouring is turned on in bits 14-15, there are two possibilities:&lt;br /&gt;
* If you have [[Callbacks#Building colour (1E) |callback 1E]] enabled, it is called to determine the colour mapping.&lt;br /&gt;
* If [[Callbacks#Building colour (1E) |callback 1E]] is disabled or fails, one of the colours specified in property 17 will be chosen randomly.&lt;br /&gt;
&lt;br /&gt;
See [[RecolorSprites]] for a list of available colour translations.&lt;br /&gt;
&lt;br /&gt;
For industry tiles, if this field is zero, but recolouring is turned on in bits 14 or 15, the colour of the containing industry will automatically be applied.&lt;br /&gt;
&lt;br /&gt;
The ground sprite should be exactly the same size and shape as TTD&#039;s flat tile. In general, it shouldn&#039;t contain anything that has a z-dimension because any non-ground sprite will cover it.&lt;br /&gt;
&lt;br /&gt;
Useful values for ground sprites:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Sprite number (decimal)!!Contents&lt;br /&gt;
|-&lt;br /&gt;
|3924||bare land&lt;br /&gt;
|-&lt;br /&gt;
|3981||grass&lt;br /&gt;
|-&lt;br /&gt;
|4061||water&lt;br /&gt;
|-&lt;br /&gt;
|4550||snow or desert (depending on climate)&lt;br /&gt;
|-&lt;br /&gt;
|1420||concrete&lt;br /&gt;
|-&lt;br /&gt;
|1314, 1313||straight road with pavement (X and Y)&lt;br /&gt;
|-&lt;br /&gt;
|1333, 1332||straight road with grass (X and Y)&lt;br /&gt;
|-&lt;br /&gt;
|2692 - 2695||bay road stop ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please note that all the ground sprite becomes visible in &amp;quot;transparent buildings&amp;quot; mode, so you should draw parts that seem to be hidden as well.&lt;br /&gt;
&lt;br /&gt;
For road stops, sprite layouts should always set a suitable ground tile sprite, and should not assume that a road type GRF will provide suitable overlay sprites.&lt;br /&gt;
Suggested ground sprite IDs include: 1333/1332 (straight road on grass), 1314/1313 (straight road with pavement), 2692 - 2695 (bay road stop ground).&lt;br /&gt;
&lt;br /&gt;
==== Sprite type ====&lt;br /&gt;
&lt;br /&gt;
If bit 31 is clear, the bottom 14 bits contain a regular TTD sprite number.&lt;br /&gt;
&lt;br /&gt;
If bit 31 is set, the bottom 14 bits contain a number of a sprite set in the most recent action 1, and the used sprite is decided according to the current construction state and the number of sprites in the set:&lt;br /&gt;
* if there&#039;s only one sprite, it&#039;s used always&lt;br /&gt;
* if there are two sprites, the first is used during construction (stages 0-2), and the second is used for the finished building (stage 3)&lt;br /&gt;
* if there are three sprites, the first will be used in the beginning of the construction (stage 0), the second will be used during the rest of the construction (stages 1 and 2) and the third will be used for the complete building (stage 3)&lt;br /&gt;
* if there are four or more sprites, the first four will be used for the four construction stages. Sprites after the first four are always ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flags in advanced sprite layouts ===&lt;br /&gt;
&amp;lt;flags&amp;gt; is a bitset of word size with these meanings:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit !! Hex !! Parentsprite !! Groundsprite/Childsprite&lt;br /&gt;
|-&lt;br /&gt;
|| 0 || 0001 || Skip bounding box including child sprites || Skip sprite&lt;br /&gt;
|-&lt;br /&gt;
|| 1 || 0002 &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add offset to sprite, disable default usage of construction stage or railtype-offset&lt;br /&gt;
|-&lt;br /&gt;
|| 2 || 0004 &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add offset to recoloursprite&lt;br /&gt;
|-&lt;br /&gt;
|| 3 || 0008 &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Recolour sprite is from Action 1 (will be affected by the same construction stage resp. railtype-offsets as sprites, unless bit 2 is set)&lt;br /&gt;
|-&lt;br /&gt;
|| 4 || 0010 || Add offset for &amp;lt;xoffset&amp;gt; and &amp;lt;yoffset&amp;gt; || Add offset for &amp;lt;xpixeloffset&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 5 || 0020 || Add offset for &amp;lt;zoffset&amp;gt; || Add offset for &amp;lt;ypixeloffset&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 6 || 0040&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Resolve sprite with Variable 10 set to a specific value&amp;lt;ref name=&amp;quot;action123&amp;quot;&amp;gt;&lt;br /&gt;
Only valid for stations: The Action 1/2/3 chain is resolved multiple times, sprites can be part of different Action 1: The associated value in &amp;lt;register/value&amp;gt; is the raw value (not a register!) to put into Variable 10 while resolving the sprites.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;only allowed values currently 0-7&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;the value &#039;2&#039; is used when resolving custom foundations, (so, do not conflict with that)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;even if the sprite is not from an Action 1, the value still defines which Action2 chains defines the values for the referenced registers.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The register for &amp;quot;Add offset to recoloursprite&amp;quot; is defined by the Action 1/2/3 chain with Variable 10 as defined for the recolour sprite.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The other registers are defined by the Action 1/2/3 chain with Variable 10 as defined for the sprite.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If no variable 10 values are defined, then station property 13 bit 0 takes effect; i.e. variable 10 is set to 0 or 1 depending on the bit and whether the first groundsprite is resolved or a different sprite. This applies to both the groundsprite and the palette of the groundsprite.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 7 || 0080&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Resolve recoloursprite with Variable 10 set to a specific value&amp;lt;ref name=&amp;quot;action123&amp;quot;/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 8..15 || &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Reserved, should be zero. If the GRF sets unknown bits, it will be disabled.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register or value in advanced sprite layouts ===&lt;br /&gt;
These are the temporary storage registers to add to the individual parts. The register values are considered signed.&lt;br /&gt;
The order of the registers is the same as the bits in &amp;lt;flags&amp;gt;. If a bit is not set, then no registers appears for it.&lt;br /&gt;
Most bits require one register.&lt;br /&gt;
*&amp;lt;xoffset&amp;gt; and &amp;lt;yoffset&amp;gt; can only be enabled together, using two registers,&lt;br /&gt;
*the &amp;quot;skip bounding box&amp;quot;-register uses value 1 to draw the sprite, and 0 to skip it,&lt;br /&gt;
*the &amp;quot;recolorsprite from Action 1&amp;quot; uses no register at all,&lt;br /&gt;
*the Variable 10 values are not set via a register, but via a byte-constant.&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Roadstops&amp;diff=5079</id>
		<title>NML:Roadstops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Roadstops&amp;diff=5079"/>
		<updated>2025-08-19T21:30:26Z</updated>

		<summary type="html">&lt;p&gt;Jgr: /* Road stop IDs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
Road stops can only be defined in OpenTTD {{ottd|14.0}} or later. &lt;br /&gt;
&lt;br /&gt;
==Road stop IDs==&lt;br /&gt;
OpenTTD supports 64000 road stop types per game.&lt;br /&gt;
&lt;br /&gt;
Rpad stop IDs are NewGRF-local and can therefore freely be chosen within the ID ranges. &lt;br /&gt;
&lt;br /&gt;
A road stop is allocated by setting the &#039;class&#039;-property, which should therefore be set first.&lt;br /&gt;
&lt;br /&gt;
Road stop sprite layouts should always set a suitable ground tile sprite, and should not assume that a road type GRF will provide suitable overlay sprites.&lt;br /&gt;
Suggested ground sprite IDs include: GROUNDSPRITE_ROAD_X/GROUNDSPRITE_ROAD_Y (straight road on grass), 1314/1313 (straight road with pavement), 2692 - 2695 (bay road stop ground).&lt;br /&gt;
&lt;br /&gt;
==Road stop properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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;
&#039;&#039;&#039;This property &#039;&#039;must&#039;&#039; be set first, before any other properties or graphics.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Road stops belonging to the same class are grouped in the GUI.&amp;lt;br&amp;gt;&lt;br /&gt;
There is one special class:&lt;br /&gt;
* &amp;quot;WAYP&amp;quot;: {{ottdp|15.0|no}} The road stop type will be shown in the waypoint construction window, instead of the station construction window.&lt;br /&gt;
{{ottdp|15}} Station classes which start with the byte FF are considered waypoint classes, and will appear in the waypoint construction window instead of the station construction window.&lt;br /&gt;
|-&lt;br /&gt;
| classname&lt;br /&gt;
| string&lt;br /&gt;
| You only need to set this for one road stop in every class.&lt;br /&gt;
|-&lt;br /&gt;
| name&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| availability_type&lt;br /&gt;
| RST_AVAILABILITY_TYPE_XXX&lt;br /&gt;
| XXX = [PASSENGER &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; FREIGHT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ALL]&lt;br /&gt;
The default value is RST_AVAILABILITY_TYPE_ALL&lt;br /&gt;
|-&lt;br /&gt;
| draw_mode&lt;br /&gt;
| bitmask(RST_DRAW_FLAG_XXX, ...)&lt;br /&gt;
| See [[#List of draw mode flags|list of draw mode flags]]&lt;br /&gt;
The default value is bitmask(RST_DRAW_FLAG_BAY_ROAD, RST_DRAW_FLAG_DRIVE_THROUGH_ROAD_OVERLAY)&lt;br /&gt;
|-&lt;br /&gt;
| cargo_random_triggers&lt;br /&gt;
| Array of cargo labels from the [[NML:Cargotable|cargotable]]&lt;br /&gt;
| Cargo types, which will [[NML:Random_switch#Stations|trigger re-randomization]] when delivered, loaded or unloaded at the station.&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;
See [[#Animation_triggers|list of animation triggers]]&lt;br /&gt;
|-&lt;br /&gt;
| general_flags&lt;br /&gt;
| bitmask(RST_GENERAL_FLAG_XXX, ...)&lt;br /&gt;
| See [[#List of general flags|list of general flags]]&lt;br /&gt;
|-&lt;br /&gt;
| cost_multipliers&lt;br /&gt;
| [build_cost, clear_cost]&lt;br /&gt;
| Build and clear cost multipliers, 16 is the same as a non-NewGRF road stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of draw mode flags===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_BAY_ROAD&lt;br /&gt;
| Draw road type ground sprite for bay stops.&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_DRIVE_THROUGH_ROAD_OVERLAY&lt;br /&gt;
| Draw road overlays for drive-through stops.&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_WAYPOINT_GROUND&lt;br /&gt;
| {{ottdp|15.0|no}} Draw spritelayout ground sprite on top of underlying road (if unset, the spritelayout ground sprite is not drawn).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of general flags===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_RANDOM_ANIMATION&lt;br /&gt;
| Animation callback requires random bits in variable extra_callback_info1.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_NO_CATENARY&lt;br /&gt;
| Do not show catenary graphics.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_DRIVE_THROUGH_ONLY&lt;br /&gt;
| Only allow drive-through stops (not bay stops).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_NO_AUTO_ROAD_CONNECTION&lt;br /&gt;
| Do not automatically build connecting road pieces.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_BUILD_MENU_ROAD_ONLY&lt;br /&gt;
| Only show in the road build menu (not tram).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_BUILD_MENU_TRAM_ONLY&lt;br /&gt;
| Only show in the tram build menu (not road).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_DRAW_MODE_REGISTER&lt;br /&gt;
| {{ottdp|15.0|no}} Read the road stop draw mode from variable 0x100 (set using STORE_TEMP), this overrides the draw_mode property.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Road stop variables==&lt;br /&gt;
&lt;br /&gt;
===Base station variables===&lt;br /&gt;
The following variables are shared between road stops, [[NML:Stations|stations]] and [[NML:Airports|airports]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| random_bits_station&lt;br /&gt;
| 0..65535&lt;br /&gt;
| 16 random bits, shared between all station sections (rail station sections, airports, ...)&lt;br /&gt;
|-&lt;br /&gt;
| had_vehicle_of_type&lt;br /&gt;
| bitmask(HAD_VEHICLE_OF_TYPE_XXX, ...)&lt;br /&gt;
| Bitmask of vehicle types that have visited the station. XXX = &amp;lt;nowiki&amp;gt;[TRAIN | BUS | TRUCK | AIRCRAFT | SHIP]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| is_waypoint&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Whether the station is a waypoint&lt;br /&gt;
|-&lt;br /&gt;
| facilities&lt;br /&gt;
| bitmask(FACILITY_XXX, ...)&lt;br /&gt;
| Bitmask of facilities associated with the station. XXX = &amp;lt;nowiki&amp;gt;[TRAIN | TRUCK_STOP | BUS_STOP | AIRPORT | DOCK]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| airport_type&lt;br /&gt;
| AIRPORTTYPE_XXX&lt;br /&gt;
| Type of airport, contains a bogus value if the station has no airport. XXX = &amp;lt;nowiki&amp;gt;[SMALL | LARGE | HELIPORT | OILRIG]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| build_date&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;
| Date when the station was built. Is clamped to the 1920-2099 range.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following variables are also shared with [[NML:Stations|stations]] and [[NML:Airports|airports]]. They all require a single argument: a cargo type from your [[NML:Cargotable|cargo translation table]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| cargo_amount_waiting&lt;br /&gt;
| 0..32767&lt;br /&gt;
| Units of cargo of waiting&lt;br /&gt;
|-&lt;br /&gt;
| cargo_rating&lt;br /&gt;
| 0..100&lt;br /&gt;
| Rating for this cargo type (in %)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| cargo_time_since_pickup&lt;br /&gt;
| 0..255&lt;br /&gt;
| Time since the cargo was last picked up. 1 unit equals 185 ticks, or about 2.5 game days.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_time_en_route&lt;br /&gt;
| 0..255&lt;br /&gt;
| Time this cargo has spent en-route. 1 unit equals 185 ticks, or about 2.5 game days.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_last_vehicle_speed&lt;br /&gt;
| 0..255&lt;br /&gt;
| Speed of the last vehicle picking up this cargo type. The unit depends on the type of vehicle. For trains and road vehicles, one unit is 1 km/h; for ships, it&#039;s 0.5 km/h; for aircraft, it&#039;s 8 mph. If the max. speed is above 255 speed units, 255 is used instead. 0 if no vehicle as picked up the cargo type yet.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_last_vehicle_age&lt;br /&gt;
| 0..255&lt;br /&gt;
| Age of the last vehicle picking up this cargo type, in years. 255 if no vehicle has picked up the cargo type yet.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type is currently being accepted at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_ever&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type has ever been accepted at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_last_month&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted last month at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_this_month&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted this month at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_bigtick&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted at the station since the last periodic processing, which happens every 250 ticks. 0 otherwise.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Variables without a parameter===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| view&lt;br /&gt;
| RST_VIEW_XXX&lt;br /&gt;
| The view/rotation of the road stop. See [[#List of road stop views|list of road stop views]]&lt;br /&gt;
|-&lt;br /&gt;
| stop_type&lt;br /&gt;
| RST_TYPE_XXX&lt;br /&gt;
| XXX = [BUS &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; TRUCK &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; {{ottdp|15}}WAYPOINT]&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;
| has_road&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this road stop has road&lt;br /&gt;
|-&lt;br /&gt;
| has_tram&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this road stop has tram&lt;br /&gt;
|-&lt;br /&gt;
| road_type&lt;br /&gt;
| [Road type &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xFF]&lt;br /&gt;
| Entry from [[NML:Railtypetable|roadtype translation table]], or 0xFF if there is no road&lt;br /&gt;
|-&lt;br /&gt;
| tram_type&lt;br /&gt;
| [Tram type &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xFF]&lt;br /&gt;
| Entry from [[NML:Railtypetable|tramtype translation table]], or 0xFF if there is no tram&lt;br /&gt;
|-&lt;br /&gt;
| animation_frame&lt;br /&gt;
| 0 .. (frame_count - 1)&lt;br /&gt;
| Current animation frame, with the maximum defined in the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;animation_info&amp;lt;/code&amp;gt; property.&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;
| company_num&lt;br /&gt;
| 0 ... 14&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;
| &lt;br /&gt;
;PLAYERTYPE_HUMAN&lt;br /&gt;
:human player&lt;br /&gt;
;PLAYERTYPE_AI&lt;br /&gt;
:AI player&lt;br /&gt;
;PLAYERTYPE_HUMAN_IN_AI&lt;br /&gt;
:human managing AI company&lt;br /&gt;
;PLAYERTYPE_AI_IN_HUMAN&lt;br /&gt;
:AI managing human company&lt;br /&gt;
&lt;br /&gt;
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;
|&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;
|&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;
| random_bits_tile&lt;br /&gt;
| 0..255&lt;br /&gt;
| 8 random bits, specific to this road stop tile.&lt;br /&gt;
|-&lt;br /&gt;
| waiting_triggers&lt;br /&gt;
| 0..255&lt;br /&gt;
| Random triggers waiting to be matched. (see [[NML:Random switch|Random switch]])&lt;br /&gt;
|-&lt;br /&gt;
| drawn_in_gui&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| {{ottdp|15}} 1 if this road stop is being drawn in the build window&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;wikitable sortable&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_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_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. Only valid for tiles of the same object.&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_is_road_stop&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the given tile a road stop?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_road_stop_id&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
|&lt;br /&gt;
| Is nearby_tile_same_grf is true, ID of a road stop on a nearby tile&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_same_grf&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile defined by the same GRF?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_other_grf&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile defined by another GRF?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_original_gfx&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile using original graphics?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_same_station&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile the same station as this?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_view&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| RST_VIEW_XXX&lt;br /&gt;
| The view/rotation of a nearby road stop tile. See [[#List of road stop views|list of road stop views]]&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_different_view&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the view/rotation of a road stop on a nearby tile different to that of this tile?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_is_drive_through&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is nearby road stop tile a drive-through road stop?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_stop_type&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| RST_TYPE_XXX&lt;br /&gt;
| Road stop type of a nearby tile. See stop_type&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_same_stop_type&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the stop type of a nearby road stop tile the same as this tile?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_grfid&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| [0xFFFFFFFF &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; GRFID]&lt;br /&gt;
| 0xFFFFFFFF if the nearby tile is not a road stop, 0 if the nearby tile is a non-custom road stop, or else the GRFID of the NewGRF defining the road stop on the nearby tile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of road stop views===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Type&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_NE&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing north-east&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_SE&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing south-east&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_SW&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing south-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_NW&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing north-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_DRIVE_THROUGH_X&lt;br /&gt;
| Drive-through&lt;br /&gt;
| X-axis: north-east to south-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_DRIVE_THROUGH_Y&lt;br /&gt;
| Drive-through&lt;br /&gt;
| Y-axis: north-west to south-east&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Road stop callbacks==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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 a road stop placed on the map&lt;br /&gt;
|-&lt;br /&gt;
| purchase &amp;lt;ref name=&amp;quot;notyetbuilt&amp;quot;&amp;gt;These callbacks are called when the road stop is not yet built&amp;lt;/ref&amp;gt;&lt;br /&gt;
| Sprite layout&lt;br /&gt;
| Graphics shown in the build menu&lt;br /&gt;
|-&lt;br /&gt;
| availability&lt;br /&gt;
| 0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1&lt;br /&gt;
| Whether this road stop type is available in the build menu, 1 is available, 0 is unavailable&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. 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;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt;: 32 random bits, if the object flag OBJ_FLAG_RANDOM_ANIMATION is set.&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. Returning a sound effect in the high byte will cause that sound effect to be played.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt;: 32 random bits, if the object flag OBJ_FLAG_RANDOM_ANIMATION is set.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;getbits(extra_callback_info2, 0, 8)&amp;lt;/code&amp;gt;: Reason for the callback trigger, see the [[#Animation triggers| table]] below.&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;
&lt;br /&gt;
&lt;br /&gt;
===Animation triggers===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Animation trigger&lt;br /&gt;
! Description&lt;br /&gt;
! Happens on&lt;br /&gt;
! extra_callback_info2&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_BUILT&lt;br /&gt;
| Road stop is built&lt;br /&gt;
| Newly built tile&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_NEW_CARGO&lt;br /&gt;
| New cargo arrives at station&lt;br /&gt;
| All tiles&lt;br /&gt;
| Bits 8..15 contain the triggering cargo type&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_CARGO_TAKEN&lt;br /&gt;
| CRGO removed from station&lt;br /&gt;
| All tiles&lt;br /&gt;
| Bits 8..15 contain the triggering cargo type&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_VEH_ENTER&lt;br /&gt;
| Road vehicle enters stop (starts loading/unloading)&lt;br /&gt;
| Tile where the vehicle is	&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_VEH_LEAVE&lt;br /&gt;
| Road vehicle leaves stop (done loading/unloading)&lt;br /&gt;
| Tile where the vehicle is	&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_VEH_LOAD&lt;br /&gt;
| Road vehicle loads/unloads cargo&lt;br /&gt;
| Tile where the vehicle is	&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_250_TICKS&lt;br /&gt;
| Every 250 ticks&lt;br /&gt;
| All tiles&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action2/Advanced_Sprite_Layout&amp;diff=5078</id>
		<title>Action2/Advanced Sprite Layout</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action2/Advanced_Sprite_Layout&amp;diff=5078"/>
		<updated>2025-08-19T21:29:01Z</updated>

		<summary type="html">&lt;p&gt;Jgr: /* Colour translation special sprite number */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced sprite layout using register offsets ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Sprite-number&amp;gt; * &amp;lt;Length&amp;gt; 02 07/09/0F/11 &amp;lt;set-id&amp;gt; &amp;lt;0x40 + num-sprites&amp;gt;&lt;br /&gt;
     &amp;lt;groundsprite&amp;gt; &amp;lt;flags&amp;gt; [&amp;lt;register/value&amp;gt;]...&lt;br /&gt;
     [ &amp;lt;buildingsprite&amp;gt; &amp;lt;flags&amp;gt;&lt;br /&gt;
         ( &amp;lt;xoffset&amp;gt; &amp;lt;yoffset&amp;gt; &amp;lt;zoffset&amp;gt; &amp;lt;xextent&amp;gt; &amp;lt;yextent&amp;gt; &amp;lt;zextent&amp;gt; &lt;br /&gt;
         | &amp;lt;xpixeloffset&amp;gt; &amp;lt;ypixeloffset&amp;gt; 80)&lt;br /&gt;
       [&amp;lt;register/value&amp;gt;]...&lt;br /&gt;
     ]...&lt;br /&gt;
&lt;br /&gt;
{{ottdp|1.2|no|ottdrev=r22518}}&lt;br /&gt;
The spritelayout defines fixed spritesets to use from the Action 1. The registers can be used to individually select sprites from the spritesets instead of always using the construction stage. The registers are evaluated and their values are saved when the Action 2 sprite layout is evaluated. Other callbacks called during drawing (like CB 1E) have no effect on the used values of the registers. &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Element!![[GRFActionsDetailed|Size]]!!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Sprite-number|Sprite-number]]&amp;amp;gt;||dec||A sequential sprite number&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Length|length]]&amp;amp;gt;||dec||The total number of bytes used in this action&lt;br /&gt;
|-&lt;br /&gt;
|02||B||Defines action 02&lt;br /&gt;
|-&lt;br /&gt;
|04/07/09/0F/11/14||B||feature: 07 town buildings, 09 industry tiles, 0F objects, 11 airport tiles, or 14 road stops&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Set-id|set-id]]&amp;amp;gt;||B||ID for this definition&lt;br /&gt;
|-&lt;br /&gt;
|40 + &amp;amp;lt;num-sprites&amp;amp;gt;||B||Number of following building sprites (the primary groundsprite mustn&#039;t be counted). Allowed range: 0x40+0 to 0x40+63 (0x40 to 0x7F).&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Sprite definition for ground and building sprites|groundsprite]]&amp;amp;gt;||D||Primary ground sprite for the building (see format below)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Flags in advanced sprite layouts|flags]]&amp;amp;gt;||W||Flags for the primary ground sprite (see format below)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Register or value in advances sprite layouts|register/value]]&amp;amp;gt;||V||Registers / values to be used. Depending on &amp;amp;lt;flags&amp;amp;gt; (see format below)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Sprite definition for ground and building sprites|buildingsprite]]&amp;amp;gt;||D||The sprite to be drawn. Unlike the basic format, zero isn&#039;t allowed here.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Flags in advanced sprite layouts|flags]]&amp;amp;gt;||W||Flags for the building sprite (see format below)&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;| -- for sprites defining a new bounding box --&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;xofs&amp;amp;gt;||B||x-offset from northern tile corner (as a signed byte)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;yofs&amp;amp;gt;||B||y-offset from northern tile corner (as a signed byte)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;zofs&amp;amp;gt;||B||z-offset from the ground&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;xextent&amp;amp;gt;||B||size of sprite in x direction&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;yextent&amp;amp;gt;||B||size of sprite in y direction&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;zextent&amp;amp;gt;||B||size of sprite in z direction&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;| -- for sprites sharing their bounding box with the previous sprite --&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;xpixeloffset&amp;amp;gt;||B||x offset from the top left corner of the previous sprite&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;ypixeloffset&amp;amp;gt;||B||y offset from the top left corner of the previous sprite&lt;br /&gt;
|-&lt;br /&gt;
|80||B||a literal 80h byte to distinguish from new-bounding-box definitions&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Register or value in advances sprite layouts|register/value]]&amp;amp;gt;||V||Registers / values to be used. Depending on &amp;amp;lt;flags&amp;amp;gt; (see format below)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Descriptions of elements ==&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;
=== Set-id ===&lt;br /&gt;
&lt;br /&gt;
The set-ID that you want to define for this set. You can choose any value between 00 and FF, and you can reuse them within a grf file at a later point (if being equal to an existing set ID, the existing one is overwritten and the new one is used).&lt;br /&gt;
&lt;br /&gt;
=== Sprite definition for ground and building sprites ===&lt;br /&gt;
&lt;br /&gt;
The ground and building sprite fields have the following format:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Bits!!Version!!Content&lt;br /&gt;
|-&lt;br /&gt;
|0-13||{{ottdp|0.6|2.5}}||Sprite number, exact meaning specified by bit 31&lt;br /&gt;
|-&lt;br /&gt;
|14-15||{{ottdp|0.6|2.5}}||0: draw sprite normally, 1: draw sprite in transparent mode, 2: recolor sprite&lt;br /&gt;
|-&lt;br /&gt;
|16-29||{{ottdp|0.6|2.5}}||Color translation special sprite number, see below&lt;br /&gt;
|-&lt;br /&gt;
|30||{{ottdp|0.6|2.5|ttdprev=alpha 57}}||If set, sprite is drawn normally even in transparent buildings mode (for building sprites only)&lt;br /&gt;
|-&lt;br /&gt;
|31||{{ottdp|0.6|2.5}}||Sprite type, see below&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.6|2.5|ttdprev=alpha 57}} Since TTDPatch 2.0.1 alpha 57, the groundsprite value can be zero if no ground sprite is needed (this is useful if you need to draw custom foundations, see [[Callbacks#Decide drawing default foundations 30 14E 150|example]]). Ground sprites are always drawn normally, so bit 30 is ignored for them. Bit 30 may get a different meaning for ground sprites in a later version of TTDPatch, so please leave it zero for now. This does not apply to additional groundsprites using the &amp;quot;&amp;amp;lt;xpixeloffset&amp;amp;gt; &amp;amp;lt;ypixeloffset&amp;amp;gt; 80&amp;quot;-syntax (see above); for these bit 30 has the same meaning as for building sprites.&lt;br /&gt;
&lt;br /&gt;
==== Colour translation special sprite number ====&lt;br /&gt;
&lt;br /&gt;
This is used only if bits 14 or 15 are nonzero. Bits 16-29 must be the number of a regular TTD sprite containing a colour translation table (see below for available translation tables). For transparent mode, a suitable translation table is needed, e.g. that of TTD´s sprite number 802 (s.b.). See [[RecolorSprites]] for more information on the usage of transparent and recolouring sprites.&lt;br /&gt;
&lt;br /&gt;
For houses, if no recolour sprite is given but recolouring is turned on in bits 14-15, there are two possibilities:&lt;br /&gt;
* If you have [[Callbacks#Building colour (1E) |callback 1E]] enabled, it is called to determine the colour mapping.&lt;br /&gt;
* If [[Callbacks#Building colour (1E) |callback 1E]] is disabled or fails, one of the colours specified in property 17 will be chosen randomly.&lt;br /&gt;
&lt;br /&gt;
See [[RecolorSprites]] for a list of available colour translations.&lt;br /&gt;
&lt;br /&gt;
For industry tiles, if this field is zero, but recolouring is turned on in bits 14 or 15, the colour of the containing industry will automatically be applied.&lt;br /&gt;
&lt;br /&gt;
The ground sprite should be exactly the same size and shape as TTD&#039;s flat tile. In general, it shouldn&#039;t contain anything that has a z-dimension because any non-ground sprite will cover it.&lt;br /&gt;
&lt;br /&gt;
Useful values for ground sprites:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Sprite number (decimal)!!Contents&lt;br /&gt;
|-&lt;br /&gt;
|3924||bare land&lt;br /&gt;
|-&lt;br /&gt;
|3981||grass&lt;br /&gt;
|-&lt;br /&gt;
|4061||water&lt;br /&gt;
|-&lt;br /&gt;
|4550||snow or desert (depending on climate)&lt;br /&gt;
|-&lt;br /&gt;
|1420||concrete&lt;br /&gt;
|-&lt;br /&gt;
|1314, 1313||road with pavement (X and Y)&lt;br /&gt;
|-&lt;br /&gt;
|1333, 1332||road with grass (X and Y)&lt;br /&gt;
|-&lt;br /&gt;
|2692 - 2695||bay road stop ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please note that all the ground sprite becomes visible in &amp;quot;transparent buildings&amp;quot; mode, so you should draw parts that seem to be hidden as well.&lt;br /&gt;
&lt;br /&gt;
==== Sprite type ====&lt;br /&gt;
&lt;br /&gt;
If bit 31 is clear, the bottom 14 bits contain a regular TTD sprite number.&lt;br /&gt;
&lt;br /&gt;
If bit 31 is set, the bottom 14 bits contain a number of a sprite set in the most recent action 1, and the used sprite is decided according to the current construction state and the number of sprites in the set:&lt;br /&gt;
* if there&#039;s only one sprite, it&#039;s used always&lt;br /&gt;
* if there are two sprites, the first is used during construction (stages 0-2), and the second is used for the finished building (stage 3)&lt;br /&gt;
* if there are three sprites, the first will be used in the beginning of the construction (stage 0), the second will be used during the rest of the construction (stages 1 and 2) and the third will be used for the complete building (stage 3)&lt;br /&gt;
* if there are four or more sprites, the first four will be used for the four construction stages. Sprites after the first four are always ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flags in advanced sprite layouts ===&lt;br /&gt;
&amp;lt;flags&amp;gt; is a bitset of word size with these meanings:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit !! Hex !! Parentsprite !! Groundsprite/Childsprite&lt;br /&gt;
|-&lt;br /&gt;
|| 0 || 0001 || Skip bounding box including child sprites || Skip sprite&lt;br /&gt;
|-&lt;br /&gt;
|| 1 || 0002 &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add offset to sprite, disable default usage of construction stage or railtype-offset&lt;br /&gt;
|-&lt;br /&gt;
|| 2 || 0004 &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add offset to recoloursprite&lt;br /&gt;
|-&lt;br /&gt;
|| 3 || 0008 &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Recolour sprite is from Action 1 (will be affected by the same construction stage resp. railtype-offsets as sprites, unless bit 2 is set)&lt;br /&gt;
|-&lt;br /&gt;
|| 4 || 0010 || Add offset for &amp;lt;xoffset&amp;gt; and &amp;lt;yoffset&amp;gt; || Add offset for &amp;lt;xpixeloffset&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 5 || 0020 || Add offset for &amp;lt;zoffset&amp;gt; || Add offset for &amp;lt;ypixeloffset&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 6 || 0040&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Resolve sprite with Variable 10 set to a specific value&amp;lt;ref name=&amp;quot;action123&amp;quot;&amp;gt;&lt;br /&gt;
Only valid for stations: The Action 1/2/3 chain is resolved multiple times, sprites can be part of different Action 1: The associated value in &amp;lt;register/value&amp;gt; is the raw value (not a register!) to put into Variable 10 while resolving the sprites.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;only allowed values currently 0-7&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;the value &#039;2&#039; is used when resolving custom foundations, (so, do not conflict with that)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;even if the sprite is not from an Action 1, the value still defines which Action2 chains defines the values for the referenced registers.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The register for &amp;quot;Add offset to recoloursprite&amp;quot; is defined by the Action 1/2/3 chain with Variable 10 as defined for the recolour sprite.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The other registers are defined by the Action 1/2/3 chain with Variable 10 as defined for the sprite.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If no variable 10 values are defined, then station property 13 bit 0 takes effect; i.e. variable 10 is set to 0 or 1 depending on the bit and whether the first groundsprite is resolved or a different sprite. This applies to both the groundsprite and the palette of the groundsprite.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 7 || 0080&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Resolve recoloursprite with Variable 10 set to a specific value&amp;lt;ref name=&amp;quot;action123&amp;quot;/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 8..15 || &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Reserved, should be zero. If the GRF sets unknown bits, it will be disabled.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register or value in advanced sprite layouts ===&lt;br /&gt;
These are the temporary storage registers to add to the individual parts. The register values are considered signed.&lt;br /&gt;
The order of the registers is the same as the bits in &amp;lt;flags&amp;gt;. If a bit is not set, then no registers appears for it.&lt;br /&gt;
Most bits require one register.&lt;br /&gt;
*&amp;lt;xoffset&amp;gt; and &amp;lt;yoffset&amp;gt; can only be enabled together, using two registers,&lt;br /&gt;
*the &amp;quot;skip bounding box&amp;quot;-register uses value 1 to draw the sprite, and 0 to skip it,&lt;br /&gt;
*the &amp;quot;recolorsprite from Action 1&amp;quot; uses no register at all,&lt;br /&gt;
*the Variable 10 values are not set via a register, but via a byte-constant.&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Spritelayout&amp;diff=5077</id>
		<title>NML:Spritelayout</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Spritelayout&amp;diff=5077"/>
		<updated>2025-08-19T21:23:28Z</updated>

		<summary type="html">&lt;p&gt;Jgr: /* Sprite */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavBlocksyntax}}&lt;br /&gt;
&lt;br /&gt;
Stations, houses, industry tiles, objects, and airport tiles use spritelayouts to define layouts how sprites are supposed to be arranged on a tile. A &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;spritelayout&amp;lt;/code&amp;gt; can combine multiple sprites into one entity, which represents everything that is to be drawn on a particular tile. A simple example to illustrate how it works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:blue&amp;quot;&amp;gt;&lt;br /&gt;
 spritelayout airport_building1 {&lt;br /&gt;
 	ground { sprite: GROUNDSPRITE_NORMAL; }&lt;br /&gt;
 	childsprite {&lt;br /&gt;
 		sprite: spr_small_dirt_ne; // custom spriteset&lt;br /&gt;
 		always_draw: 1; // also draw in transparent mode&lt;br /&gt;
 	}&lt;br /&gt;
 	building {&lt;br /&gt;
 		sprite: 0xA67; // reuse this existing base set sprite&lt;br /&gt;
 		xoffset: 0x0F;&lt;br /&gt;
 		xextent: 1;&lt;br /&gt;
 		zextent: 6;&lt;br /&gt;
 		recolour_mode: RECOLOUR_REMAP;&lt;br /&gt;
 		palette: PALETTE_USE_DEFAULT;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The sprite layout is composed of one or more sprites. Each sprite is defined by a &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;ground&amp;lt;/code&amp;gt;, &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;building&amp;lt;/code&amp;gt; or &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;childsprite&amp;lt;/code&amp;gt; block. What block to use depends on how the sprite is to be placed on the tile.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;ground&amp;lt;/code&amp;gt; sprites are drawn at the base of the tile, like grass and concrete, rails etc. in normal TTD. With a few exceptions (e.g. when using custom foundations), you should always provide a ground sprite, even when the building above fully covers it. This because in transparent mode, the building becomes invisible. A tile can only have one ground sprite.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;building&amp;lt;/code&amp;gt; sprites are drawn on top of the ground sprite. To determine their location and drawing order (what goes in front of what), they have a 3D bounding box.&lt;br /&gt;
* With &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;childsprite&amp;lt;/code&amp;gt;(s), you can effectively compose sprites from multiple parts. When placing these after a building sprite, they will use the same bounding box as the previous building sprite. When placing them before the first building sprite, they will have no bounding box, as if they would use the &#039;bounding box&#039; of the ground tile. Multiple childsprites may be used per ground / building sprite.&lt;br /&gt;
&lt;br /&gt;
The sprite order is genrally determined by the sprite sorter, that evaluates the bounding box (see below) of each sprite. Child sprites are always part of the building (or ground) sprite that precedes them. In the GUI, sprites are always drawn in the order specified in the layout, so be sure to get this correct for spritelayouts that are to be displayed there.&lt;br /&gt;
&lt;br /&gt;
Per sprite, a number of parameters may be set. These are listed below. Unless otherwise indicated, each may have a value that is dependant on &#039;&#039;&#039;variables, parameters or registers&#039;&#039;&#039;. Accessed variables are always in the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;SELF&amp;lt;/code&amp;gt; scope. Accessing variables inside the purchase list is &#039;&#039;&#039;not&#039;&#039;&#039; supported, make sure that layouts accessed from there do not use them. Using variables and parameters, it&#039;s possible to create wildly differing looks with few spritelayouts.&lt;br /&gt;
&lt;br /&gt;
===Sprite===&lt;br /&gt;
&lt;br /&gt;
The most important parameter is &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;sprite&amp;lt;/code&amp;gt;, this determines the actual sprite to be drawn. If you set this to a number, a TTD sprite will be drawn, usually from the base set. Pre-defined constants for some base set sprites are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_NORMAL&amp;lt;ref name=&amp;quot;spritenames&amp;quot;&amp;gt;These constants can be used for sprites on flat ground. There are also equivalent sprites for sloped ground, however. These sprites follow the initial ground sprite, 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; may be used to compute the required offset. Refer to the reference on [[NML:List of tile slopes|slopes]] or the [[#Example_.28advanced.29_Spritelayout|example]] below.&amp;lt;/ref&amp;gt;&amp;lt;/code&amp;gt; default terrain type for that climate (temperate, toyland: normal, arctic: without snow, tropical: rainforest).&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_DESERT &amp;lt;ref name=&amp;quot;spritenames&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; desert tile&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_DESERT_1_2 &amp;lt;ref name=&amp;quot;spritenames&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; transition tile between desert and grass&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_SNOW &amp;lt;ref name=&amp;quot;spritenames&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; snowy ground tile&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_SNOW_1_4 &amp;lt;ref name=&amp;quot;spritenames&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; 1/4 snowy ground tile&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_SNOW_2_4 &amp;lt;ref name=&amp;quot;spritenames&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; half-snowy ground tile&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_SNOW_3_4 &amp;lt;ref name=&amp;quot;spritenames&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; 3/4 snowy ground tile&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_SNOW_4_4 &amp;lt;ref name=&amp;quot;spritenames&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; snowy ground tile&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_CONCRETE&amp;lt;/code&amp;gt; concrete ground tile&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_WATER&amp;lt;/code&amp;gt; flat water tile, automatically choosen from sea, river and canal sprites, including river and canal borders.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_CLEARED &amp;lt;ref name=&amp;quot;spritenames&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; ground tile that has just been bulldozed (with brown colour)&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_RAIL_X &amp;lt;ref name=&amp;quot;spritenames&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; ground tile with rail and terrain appropriate ground, NE-SW orientation (provided by railtype)&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_RAIL_Y &amp;lt;ref name=&amp;quot;spritenames&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; ground tile with rail and terrain appropriate ground, NW-SE orientation (provided by railtype)&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_ROAD_X &amp;lt;ref name=&amp;quot;spritenames&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; ground tile with straight road piece on grass, NE-SW orientation&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;GROUNDSPRITE_ROAD_Y &amp;lt;ref name=&amp;quot;spritenames&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; ground tile with straight road piece on grass, NW-SE orientation&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can set the value to (the name of) a [[NML:Spriteset|spriteset]], to provide a custom sprite. When the value is just a spriteset identifier, a sprite from that set will be selected depending on the construction stage, see below. All spritesets used in a layout &#039;&#039;&#039;must&#039;&#039;&#039; have the same number of sprites, due to a restriction in the NFO format. If you supply an argument (e.g. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;sprite: some_sprite_set(2);&amp;lt;/code&amp;gt;), the corresponding sprite from the sprite set will be used, with an argument of 0 corresponding to the first sprite. Note that the argument may also be variable, so you could e.g. use &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;sprite: some_set(construction_state);&amp;lt;/code&amp;gt; to use the construction state to select the sprite (as is the default). If the spriteset has labels defined, you can use these labels in the argument expression.&lt;br /&gt;
&lt;br /&gt;
* For stations, objects and airport tiles, there are no construction stages, so the first sprite from the set is used always.&lt;br /&gt;
* For houses and industry tiles, sprite chosen depends on the construction stage and the number of sprites available.&lt;br /&gt;
** If there is only one sprite in the set, it is used always.&lt;br /&gt;
** If there are two sprites, one is used during construction (stages 0-2) and one for the finished building (stage 3)&lt;br /&gt;
** If there are three sprites, one is used for the beginning of construction (stage 0), one for the other construction stages (stages 1-2) and one for the finished building (stage 3).&lt;br /&gt;
** If there are four sprites, one is used for each construction stage.&lt;br /&gt;
** Sprites after the first four are always ignored.&lt;br /&gt;
* For road stops the usage of the ground sprite depends on the [[NML:Roadstops#List of draw mode flags|&#039;&#039;draw_mode&#039;&#039; property]].&lt;br /&gt;
* For objects the usage of the ground sprite may be skipped depending on the [[NML:Objects#List of object flags|&#039;&#039;OBJ_FLAG_DRAW_WATER&#039;&#039; flag]], which has the same effect as &#039;&#039;GROUNDSPRITE_WATER&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Recolouring===&lt;br /&gt;
&lt;br /&gt;
Next, you have the option to apply recolouring, i.e. to change the colours of the sprite. This is done via the following attributes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;recolour_mode&amp;lt;/code&amp;gt;: This must be compile-time constant. Available recolour modes are:&lt;br /&gt;
** &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;RECOLOUR_NONE&amp;lt;/code&amp;gt;: Use no colour translation (default)&lt;br /&gt;
** &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;RECOLOUR_REMAP&amp;lt;/code&amp;gt;: Use a colour translation table as defined by &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;palette&amp;lt;/code&amp;gt;. This tables maps all colours of the sprite to a new colour.&lt;br /&gt;
** &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;RECOLOUR_TRANSPARENT&amp;lt;/code&amp;gt;: Draw the sprite in transparant mode, using a colour translation table as defined by &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;palette&amp;lt;/code&amp;gt;. Normally the palette will be set to PALETTE_TO_TRANSPARANT to draw all underlying colours somewhat darker. Note that the selected palette is applied to the colours of the underlying sprite, whatever that happens to be. The supplied sprite is only used to determine what pixels to recolour.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;palette&amp;lt;/code&amp;gt;: This defines the palette which is used for the colour translation. It may only (and must!) be set when &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;recolour_mode&amp;lt;/code&amp;gt; is set to &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;RECOLOUR_REMAP&amp;lt;/code&amp;gt; or &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;RECOLOUR_TRANSPARENT&amp;lt;/code&amp;gt;. The available values are the same as for &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;sprite&amp;lt;/code&amp;gt;, i.e. you can use either a default sprite or a sprite from a sprite set. In this case, however, the referenced sprite must not be a real sprite, but a [[NML:Recolour sprites|recolour sprite]]. For available default recolour sprites, see the appendix on [[NML:List of default colour translation palettes|available palettes]].&lt;br /&gt;
&lt;br /&gt;
===Display yes/no===&lt;br /&gt;
&lt;br /&gt;
The following attributes allow configuring whether the sprite will be displayed or not.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;hide_sprite&amp;lt;/code&amp;gt;: If set to 1, this sprite will not be drawn at all. Default is 0. If a building sprite is not drawn, all child sprites that share its bounding box are not drawn either. Setting this to a constant value makes little sense, but you can use this to enable/disable drawing certain sprites at runtime depending on certain conditions.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;always_draw&amp;lt;/code&amp;gt;: This must be a compile-time-constant. If set to 1, this sprite will also be drawn when the user has enabled transparant mode. The default value is 0. This is not available for ground sprites (those are drawn always), but it is for child sprites that share their bounding box with the ground sprite.&lt;br /&gt;
&lt;br /&gt;
===Positioning===&lt;br /&gt;
&lt;br /&gt;
How to position the sprite depends on the type of sprite:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;ground&amp;lt;/code&amp;gt;: Ground sprites cannot be positioned.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;building&amp;lt;/code&amp;gt;: A three-dimensional bounding box may be defined. The X-axis runs from top-right to bottom-left and the Y-axis from top-left to bottom-right. Both X and Y are measured in 1/16 length of the the tile border. The Z axis is vertical and measured in pixels.&amp;lt;br/&amp;gt;Extending the bounding box over the edges of a tile is possible, but not recommended as it may lead to glitches. &#039;&#039;&#039;Unless you know exactly what you are doing, please follow the recommendations below. They are most likely exactly what you need&#039;&#039;&#039;.&amp;lt;br/&amp;gt;In NewGRF developer mode in OpenTTD, it&#039;s possible to view the bounding boxes of all sprites by pressing Ctrl+B. In order to use and define a custom bounding box, the following attributes can be used:&lt;br /&gt;
** &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;xoffset&amp;lt;/code&amp;gt;: Offset from the northwestern edge to the start of the bounding box (X). Unit is 1/16 of the tile border. Default value is 0.&lt;br /&gt;
** &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;yoffset&amp;lt;/code&amp;gt;: Offset from the northeastern edge to the start of the bounding box (Y). Unit is 1/16 of the tile border. Default value is 0.&lt;br /&gt;
** &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;zoffset&amp;lt;/code&amp;gt;: Offset from the lowest tile corner (with foundation added) to the start of the bounding box (Z). Unit is pixels. Default value is 0.&lt;br /&gt;
** &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;xextent&amp;lt;/code&amp;gt;: Size of the bounding box, in the X-direction. Must be a compile-time constant. Unit is 1/16 of the tile border. Default value is 16.&lt;br /&gt;
** &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;yextent&amp;lt;/code&amp;gt;: Size of the bounding box, in the Y-direction. Must be a compile-time constant. Unit is 1/16 of the tile border. Default value is 16.&lt;br /&gt;
** &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;zextent&amp;lt;/code&amp;gt;: Size of the bounding box, in the Z-direction. Must be a compile-time constant. Unit is pixels. Default value is 16.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;childsprite&amp;lt;/code&amp;gt;: Child sprites may be positioned relative to their &#039;parent&#039; sprite that defines the bounding box. &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;xoffset&amp;lt;/code&amp;gt; and &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;yoffset&amp;lt;/code&amp;gt; may be set to specify an offset in pixels between the origin of the parent and child sprite. When the parent sprite is the ground sprite, TTDPatch does not support offsets other than 0,0. Note that all child sprites should fit inside the bounding box of the parent sprite to avoid visual glitches.&lt;br /&gt;
&lt;br /&gt;
===Strong recommendations for bounding boxes===&lt;br /&gt;
&lt;br /&gt;
For industries, houses, objects, and non-track station tiles:&lt;br /&gt;
* Use at most one building sprite; and child sprites for everything else.&lt;br /&gt;
** Do not set &#039;&#039;xoffset&#039;&#039;, &#039;&#039;yoffset&#039;&#039; or &#039;&#039;zoffset&#039;&#039;. The default value 0 applies.&lt;br /&gt;
** Do not set &#039;&#039;xextent&#039;&#039; or &#039;&#039;yextent&#039;&#039;. The default value 16 applies.&lt;br /&gt;
** Set &#039;&#039;zextent&#039;&#039; to &amp;quot;&amp;lt;number of occupied height levels&amp;gt; * 8 - 2&amp;quot;. The number of occupied height levels is important for objects allowed under bridges. Otherwise this only needs to be a rough estimate.&lt;br /&gt;
* If no sprite visually extends over the ground sprite, you do not need any building sprite: Child sprites can be used for further sprites.&lt;br /&gt;
&lt;br /&gt;
For rail station track tiles:&lt;br /&gt;
* Use child sprites of the ground sprite for things &amp;quot;below the train&amp;quot;.&lt;br /&gt;
* Use exactly two building sprites, possibly with child sprites.&lt;br /&gt;
* The first building sprite is used for things &amp;quot;behind the train&amp;quot;.&lt;br /&gt;
** Set &#039;&#039;xoffset&#039;&#039;, &#039;&#039;yoffset&#039;&#039;, &#039;&#039;zoffset&#039;&#039; to 0.&lt;br /&gt;
** For track in X direction: Set &#039;&#039;xextent&#039;&#039; to 16, &#039;&#039;yextent&#039;&#039; to 5.&lt;br /&gt;
** For track in Y direction: Set &#039;&#039;xextent&#039;&#039; to 5, &#039;&#039;yextent&#039;&#039; to 16.&lt;br /&gt;
** Set &#039;&#039;zextent&#039;&#039; to &amp;quot;&amp;lt;number of occupied height levels&amp;gt; * 8 - 2&amp;quot;. A rough estimate is good enough.&lt;br /&gt;
* The second building sprite is used for things &amp;quot;in-front or above the train&amp;quot;.&lt;br /&gt;
** For track in X direction: Set &#039;&#039;xoffset&#039;&#039; to 0, &#039;&#039;yoffset&#039;&#039; to 11.&lt;br /&gt;
** For track in Y direction: Set &#039;&#039;xoffset&#039;&#039; to 11, &#039;&#039;yoffset&#039;&#039; to 0.&lt;br /&gt;
** Set &#039;&#039;zoffset&#039;&#039; to 0.&lt;br /&gt;
** For track in X direction: Set &#039;&#039;xextent&#039;&#039; to 16, &#039;&#039;yextent&#039;&#039; to 5.&lt;br /&gt;
** For track in Y direction: Set &#039;&#039;xextent&#039;&#039; to 5, &#039;&#039;yextent&#039;&#039; to 16.&lt;br /&gt;
** Set &#039;&#039;zextent&#039;&#039; to &amp;quot;&amp;lt;number of occupied height levels&amp;gt; * 8 - 2&amp;quot;. A rough estimate is good enough.&lt;br /&gt;
&lt;br /&gt;
===Maximum sprite size===&lt;br /&gt;
&lt;br /&gt;
Ground sprites and their child sprites must not extend over the edges of a regular ground sprite of the slope.&lt;br /&gt;
&lt;br /&gt;
Building sprites and their child sprites:&lt;br /&gt;
* must not extend below the south tile edges,&lt;br /&gt;
* must not extend left/right of the west/east tile corners,&lt;br /&gt;
* must not extend above the north corner by more than 200 pixels including the (default) foundation. If foundations are present, this is reduced by up to 16 pixels (steep slope S) to 184 pixels.&lt;br /&gt;
&lt;br /&gt;
The following image shows the limitations for flat tiles, and the extreme cases of steep slopes:&lt;br /&gt;
&lt;br /&gt;
[[File:Max_tile_sprite_size.png]]&lt;br /&gt;
&lt;br /&gt;
These values apply since {{ottd|1.5}}.&lt;br /&gt;
&lt;br /&gt;
===Example (advanced) Spritelayout===&lt;br /&gt;
&lt;br /&gt;
OpenTTD 1.2 (r22723) allows for nice shorthands in defining multiple views, e.g. for different slopes: Spritelayout can have parameters and may use variables and temporary storage inside of a layout. A common usage for such parametrized spritelayout is taking care of the tile slope and ground type as illustrated in this example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color:blue&amp;quot;&amp;gt;&lt;br /&gt;
 spritelayout company_land_layout {&lt;br /&gt;
 	ground {&lt;br /&gt;
 		// normal ground sprite - always draw&lt;br /&gt;
 		sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
 	}&lt;br /&gt;
 	childsprite {&lt;br /&gt;
 		// company-coloured border - always draw&lt;br /&gt;
 		sprite:        cc_frame(LOAD_TEMP(0));&lt;br /&gt;
 		always_draw:   1;&lt;br /&gt;
 		recolour_mode: RECOLOUR_REMAP;&lt;br /&gt;
 		palette:       PALETTE_USE_DEFAULT;&lt;br /&gt;
 	}&lt;br /&gt;
 	childsprite {&lt;br /&gt;
 		// again the normal ground sprite. Thus in non-transparent view&lt;br /&gt;
 		// only the normal ground sprite is shown. In transparent view&lt;br /&gt;
 		// this acts as sprite which darkens the other two sprites via&lt;br /&gt;
 		// a translation to transparency.&lt;br /&gt;
 		sprite: LOAD_TEMP(0) + LOAD_TEMP(1);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // A pseudo-switch which sets the temporary parameters for the sprite layout, storing the sprite number&lt;br /&gt;
 // which belongs to the terrain type and the corresponding offset due to the tile slope&lt;br /&gt;
 switch (FEAT_OBJECTS, SELF, company_land_terrain_switch, [&lt;br /&gt;
 			// We store the offset into the spriteset due to the tile slope into the 1st temporary variable&lt;br /&gt;
 			STORE_TEMP(slope_to_sprite_offset(tile_slope), 0),&lt;br /&gt;
 &lt;br /&gt;
 			// We store the offset to the flat groundsprite we use into the 2nd temporary variable&lt;br /&gt;
 			STORE_TEMP(GROUNDSPRITE_NORMAL, 1),&lt;br /&gt;
 			STORE_TEMP(terrain_type == TILETYPE_DESERT      ? GROUNDSPRITE_DESERT : LOAD_TEMP(1), 1),&lt;br /&gt;
 			STORE_TEMP(terrain_type == TILETYPE_SNOW        ? GROUNDSPRITE_SNOW   : LOAD_TEMP(1), 1),&lt;br /&gt;
 &lt;br /&gt;
 			1&lt;br /&gt;
 			]) {&lt;br /&gt;
 	company_land_layout;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action2/Advanced_Sprite_Layout&amp;diff=5076</id>
		<title>Action2/Advanced Sprite Layout</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action2/Advanced_Sprite_Layout&amp;diff=5076"/>
		<updated>2025-08-19T21:20:17Z</updated>

		<summary type="html">&lt;p&gt;Jgr: /* Colour translation special sprite number */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced sprite layout using register offsets ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Sprite-number&amp;gt; * &amp;lt;Length&amp;gt; 02 07/09/0F/11 &amp;lt;set-id&amp;gt; &amp;lt;0x40 + num-sprites&amp;gt;&lt;br /&gt;
     &amp;lt;groundsprite&amp;gt; &amp;lt;flags&amp;gt; [&amp;lt;register/value&amp;gt;]...&lt;br /&gt;
     [ &amp;lt;buildingsprite&amp;gt; &amp;lt;flags&amp;gt;&lt;br /&gt;
         ( &amp;lt;xoffset&amp;gt; &amp;lt;yoffset&amp;gt; &amp;lt;zoffset&amp;gt; &amp;lt;xextent&amp;gt; &amp;lt;yextent&amp;gt; &amp;lt;zextent&amp;gt; &lt;br /&gt;
         | &amp;lt;xpixeloffset&amp;gt; &amp;lt;ypixeloffset&amp;gt; 80)&lt;br /&gt;
       [&amp;lt;register/value&amp;gt;]...&lt;br /&gt;
     ]...&lt;br /&gt;
&lt;br /&gt;
{{ottdp|1.2|no|ottdrev=r22518}}&lt;br /&gt;
The spritelayout defines fixed spritesets to use from the Action 1. The registers can be used to individually select sprites from the spritesets instead of always using the construction stage. The registers are evaluated and their values are saved when the Action 2 sprite layout is evaluated. Other callbacks called during drawing (like CB 1E) have no effect on the used values of the registers. &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Element!![[GRFActionsDetailed|Size]]!!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Sprite-number|Sprite-number]]&amp;amp;gt;||dec||A sequential sprite number&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Length|length]]&amp;amp;gt;||dec||The total number of bytes used in this action&lt;br /&gt;
|-&lt;br /&gt;
|02||B||Defines action 02&lt;br /&gt;
|-&lt;br /&gt;
|04/07/09/0F/11/14||B||feature: 07 town buildings, 09 industry tiles, 0F objects, 11 airport tiles, or 14 road stops&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Set-id|set-id]]&amp;amp;gt;||B||ID for this definition&lt;br /&gt;
|-&lt;br /&gt;
|40 + &amp;amp;lt;num-sprites&amp;amp;gt;||B||Number of following building sprites (the primary groundsprite mustn&#039;t be counted). Allowed range: 0x40+0 to 0x40+63 (0x40 to 0x7F).&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Sprite definition for ground and building sprites|groundsprite]]&amp;amp;gt;||D||Primary ground sprite for the building (see format below)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Flags in advanced sprite layouts|flags]]&amp;amp;gt;||W||Flags for the primary ground sprite (see format below)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Register or value in advances sprite layouts|register/value]]&amp;amp;gt;||V||Registers / values to be used. Depending on &amp;amp;lt;flags&amp;amp;gt; (see format below)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Sprite definition for ground and building sprites|buildingsprite]]&amp;amp;gt;||D||The sprite to be drawn. Unlike the basic format, zero isn&#039;t allowed here.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Flags in advanced sprite layouts|flags]]&amp;amp;gt;||W||Flags for the building sprite (see format below)&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;| -- for sprites defining a new bounding box --&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;xofs&amp;amp;gt;||B||x-offset from northern tile corner (as a signed byte)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;yofs&amp;amp;gt;||B||y-offset from northern tile corner (as a signed byte)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;zofs&amp;amp;gt;||B||z-offset from the ground&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;xextent&amp;amp;gt;||B||size of sprite in x direction&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;yextent&amp;amp;gt;||B||size of sprite in y direction&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;zextent&amp;amp;gt;||B||size of sprite in z direction&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;| -- for sprites sharing their bounding box with the previous sprite --&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;xpixeloffset&amp;amp;gt;||B||x offset from the top left corner of the previous sprite&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;ypixeloffset&amp;amp;gt;||B||y offset from the top left corner of the previous sprite&lt;br /&gt;
|-&lt;br /&gt;
|80||B||a literal 80h byte to distinguish from new-bounding-box definitions&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;lt;[[#Register or value in advances sprite layouts|register/value]]&amp;amp;gt;||V||Registers / values to be used. Depending on &amp;amp;lt;flags&amp;amp;gt; (see format below)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Descriptions of elements ==&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;
=== Set-id ===&lt;br /&gt;
&lt;br /&gt;
The set-ID that you want to define for this set. You can choose any value between 00 and FF, and you can reuse them within a grf file at a later point (if being equal to an existing set ID, the existing one is overwritten and the new one is used).&lt;br /&gt;
&lt;br /&gt;
=== Sprite definition for ground and building sprites ===&lt;br /&gt;
&lt;br /&gt;
The ground and building sprite fields have the following format:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Bits!!Version!!Content&lt;br /&gt;
|-&lt;br /&gt;
|0-13||{{ottdp|0.6|2.5}}||Sprite number, exact meaning specified by bit 31&lt;br /&gt;
|-&lt;br /&gt;
|14-15||{{ottdp|0.6|2.5}}||0: draw sprite normally, 1: draw sprite in transparent mode, 2: recolor sprite&lt;br /&gt;
|-&lt;br /&gt;
|16-29||{{ottdp|0.6|2.5}}||Color translation special sprite number, see below&lt;br /&gt;
|-&lt;br /&gt;
|30||{{ottdp|0.6|2.5|ttdprev=alpha 57}}||If set, sprite is drawn normally even in transparent buildings mode (for building sprites only)&lt;br /&gt;
|-&lt;br /&gt;
|31||{{ottdp|0.6|2.5}}||Sprite type, see below&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.6|2.5|ttdprev=alpha 57}} Since TTDPatch 2.0.1 alpha 57, the groundsprite value can be zero if no ground sprite is needed (this is useful if you need to draw custom foundations, see [[Callbacks#Decide drawing default foundations 30 14E 150|example]]). Ground sprites are always drawn normally, so bit 30 is ignored for them. Bit 30 may get a different meaning for ground sprites in a later version of TTDPatch, so please leave it zero for now. This does not apply to additional groundsprites using the &amp;quot;&amp;amp;lt;xpixeloffset&amp;amp;gt; &amp;amp;lt;ypixeloffset&amp;amp;gt; 80&amp;quot;-syntax (see above); for these bit 30 has the same meaning as for building sprites.&lt;br /&gt;
&lt;br /&gt;
==== Colour translation special sprite number ====&lt;br /&gt;
&lt;br /&gt;
This is used only if bits 14 or 15 are nonzero. Bits 16-29 must be the number of a regular TTD sprite containing a colour translation table (see below for available translation tables). For transparent mode, a suitable translation table is needed, e.g. that of TTD´s sprite number 802 (s.b.). See [[RecolorSprites]] for more information on the usage of transparent and recolouring sprites.&lt;br /&gt;
&lt;br /&gt;
For houses, if no recolour sprite is given but recolouring is turned on in bits 14-15, there are two possibilities:&lt;br /&gt;
* If you have [[Callbacks#Building colour (1E) |callback 1E]] enabled, it is called to determine the colour mapping.&lt;br /&gt;
* If [[Callbacks#Building colour (1E) |callback 1E]] is disabled or fails, one of the colours specified in property 17 will be chosen randomly.&lt;br /&gt;
&lt;br /&gt;
See [[RecolorSprites]] for a list of available colour translations.&lt;br /&gt;
&lt;br /&gt;
For industry tiles, if this field is zero, but recolouring is turned on in bits 14 or 15, the colour of the containing industry will automatically be applied.&lt;br /&gt;
&lt;br /&gt;
The ground sprite should be exactly the same size and shape as TTD&#039;s flat tile. In general, it shouldn&#039;t contain anything that has a z-dimension because any non-ground sprite will cover it.&lt;br /&gt;
&lt;br /&gt;
Useful values for ground sprites:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Sprite number (decimal)!!Contents&lt;br /&gt;
|-&lt;br /&gt;
|3924||bare land&lt;br /&gt;
|-&lt;br /&gt;
|3981||grass&lt;br /&gt;
|-&lt;br /&gt;
|4061||water&lt;br /&gt;
|-&lt;br /&gt;
|4550||snow or desert (depending on climate)&lt;br /&gt;
|-&lt;br /&gt;
|1420||concrete&lt;br /&gt;
|-&lt;br /&gt;
|1313, 1314||road with pavement (X and Y)&lt;br /&gt;
|-&lt;br /&gt;
|1332, 1333||road with grass (X and Y)&lt;br /&gt;
|-&lt;br /&gt;
|2692 - 2695||bay road stop ground&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please note that all the ground sprite becomes visible in &amp;quot;transparent buildings&amp;quot; mode, so you should draw parts that seem to be hidden as well.&lt;br /&gt;
&lt;br /&gt;
==== Sprite type ====&lt;br /&gt;
&lt;br /&gt;
If bit 31 is clear, the bottom 14 bits contain a regular TTD sprite number.&lt;br /&gt;
&lt;br /&gt;
If bit 31 is set, the bottom 14 bits contain a number of a sprite set in the most recent action 1, and the used sprite is decided according to the current construction state and the number of sprites in the set:&lt;br /&gt;
* if there&#039;s only one sprite, it&#039;s used always&lt;br /&gt;
* if there are two sprites, the first is used during construction (stages 0-2), and the second is used for the finished building (stage 3)&lt;br /&gt;
* if there are three sprites, the first will be used in the beginning of the construction (stage 0), the second will be used during the rest of the construction (stages 1 and 2) and the third will be used for the complete building (stage 3)&lt;br /&gt;
* if there are four or more sprites, the first four will be used for the four construction stages. Sprites after the first four are always ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flags in advanced sprite layouts ===&lt;br /&gt;
&amp;lt;flags&amp;gt; is a bitset of word size with these meanings:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bit !! Hex !! Parentsprite !! Groundsprite/Childsprite&lt;br /&gt;
|-&lt;br /&gt;
|| 0 || 0001 || Skip bounding box including child sprites || Skip sprite&lt;br /&gt;
|-&lt;br /&gt;
|| 1 || 0002 &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add offset to sprite, disable default usage of construction stage or railtype-offset&lt;br /&gt;
|-&lt;br /&gt;
|| 2 || 0004 &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add offset to recoloursprite&lt;br /&gt;
|-&lt;br /&gt;
|| 3 || 0008 &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Recolour sprite is from Action 1 (will be affected by the same construction stage resp. railtype-offsets as sprites, unless bit 2 is set)&lt;br /&gt;
|-&lt;br /&gt;
|| 4 || 0010 || Add offset for &amp;lt;xoffset&amp;gt; and &amp;lt;yoffset&amp;gt; || Add offset for &amp;lt;xpixeloffset&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 5 || 0020 || Add offset for &amp;lt;zoffset&amp;gt; || Add offset for &amp;lt;ypixeloffset&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 6 || 0040&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Resolve sprite with Variable 10 set to a specific value&amp;lt;ref name=&amp;quot;action123&amp;quot;&amp;gt;&lt;br /&gt;
Only valid for stations: The Action 1/2/3 chain is resolved multiple times, sprites can be part of different Action 1: The associated value in &amp;lt;register/value&amp;gt; is the raw value (not a register!) to put into Variable 10 while resolving the sprites.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;only allowed values currently 0-7&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;the value &#039;2&#039; is used when resolving custom foundations, (so, do not conflict with that)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;even if the sprite is not from an Action 1, the value still defines which Action2 chains defines the values for the referenced registers.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The register for &amp;quot;Add offset to recoloursprite&amp;quot; is defined by the Action 1/2/3 chain with Variable 10 as defined for the recolour sprite.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The other registers are defined by the Action 1/2/3 chain with Variable 10 as defined for the sprite.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If no variable 10 values are defined, then station property 13 bit 0 takes effect; i.e. variable 10 is set to 0 or 1 depending on the bit and whether the first groundsprite is resolved or a different sprite. This applies to both the groundsprite and the palette of the groundsprite.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 7 || 0080&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Resolve recoloursprite with Variable 10 set to a specific value&amp;lt;ref name=&amp;quot;action123&amp;quot;/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|| 8..15 || &lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Reserved, should be zero. If the GRF sets unknown bits, it will be disabled.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Register or value in advanced sprite layouts ===&lt;br /&gt;
These are the temporary storage registers to add to the individual parts. The register values are considered signed.&lt;br /&gt;
The order of the registers is the same as the bits in &amp;lt;flags&amp;gt;. If a bit is not set, then no registers appears for it.&lt;br /&gt;
Most bits require one register.&lt;br /&gt;
*&amp;lt;xoffset&amp;gt; and &amp;lt;yoffset&amp;gt; can only be enabled together, using two registers,&lt;br /&gt;
*the &amp;quot;skip bounding box&amp;quot;-register uses value 1 to draw the sprite, and 0 to skip it,&lt;br /&gt;
*the &amp;quot;recolorsprite from Action 1&amp;quot; uses no register at all,&lt;br /&gt;
*the Variable 10 values are not set via a register, but via a byte-constant.&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5071</id>
		<title>GRFv9</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5071"/>
		<updated>2025-06-27T19:30:03Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Spelling/grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page describes work so far, design considerations and other items of interest for a potential version 9 of the GRF specification (GRFv9), or equivalent specification evolution.&lt;br /&gt;
&lt;br /&gt;
This page is a not a guarantee that any such changes will be occur in future, or that any such future work will closely match that described here.&lt;br /&gt;
&lt;br /&gt;
== Existing Work ==&lt;br /&gt;
&lt;br /&gt;
GRFv9 PRs (closed)&lt;br /&gt;
https://github.com/OpenTTD/OpenTTD/pull/13309 (NML: https://github.com/OpenTTD/nml/pull/357)&lt;br /&gt;
&lt;br /&gt;
For 15.0:&lt;br /&gt;
Add explicit (Var)Action2 results for &amp;quot;callback failed&amp;quot; and &amp;quot;calculated result&amp;quot;. https://github.com/OpenTTD/OpenTTD/pull/14149&lt;br /&gt;
&lt;br /&gt;
== Design Considerations ==&lt;br /&gt;
&lt;br /&gt;
The current GRF specification has several areas which are not ideal and could be improved in a subsequent specification version.&lt;br /&gt;
&lt;br /&gt;
This section should list current pain points and non-ideal aspects of the specification, and where possible suggest improvements or general design principles for future additions.&lt;br /&gt;
This section is non-exhaustive.&lt;br /&gt;
&lt;br /&gt;
=== Concurrent Action2 ID Limit ===&lt;br /&gt;
&lt;br /&gt;
GRFs are currently limited to 256 simultaneous action2 IDs. This is a common pain point for NewGRF authors. NewGRF authors are encouraged to needlessly duplicate action2s (e.g. by use of templating mechanisms) to mitigate this, this results in larger GRF files which has a negative impact on content distribution and run-time performance.&lt;br /&gt;
Moving to 16 bit Action2 IDs would remove this problem without imposing significant technical difficulty.&lt;br /&gt;
&lt;br /&gt;
=== General Design Comments on VariationalAction2 ===&lt;br /&gt;
&lt;br /&gt;
Currently only variables 60 to 7F are parameterised, this ID space is too small and should be expanded.&lt;br /&gt;
Currently many 60x variables are multiplexed to return multiple unrelated or only partially related values, this is a non-ideal for the following reasons.&lt;br /&gt;
* Some 60x variables sub-parts are too small in order to fit them into a single 32-bit variable, this leads to surprising/buggy behaviour in some GRFs (e.g. house variables 60/61 and 44).&lt;br /&gt;
* 60x variable sub-parts can become too small when ID ranges are extended, creating a need for a replacement variable and more work than would otherwise be necessary (e.g. station variable 6B).&lt;br /&gt;
* Some 60x variables are needlessly expensive at run-time because expensive sub-parts are calculated even when the GRF only needed another part of the variable (e.g. industry variable 67/68) (this can be reasonably mitigated without a spec change).&lt;br /&gt;
&lt;br /&gt;
The current &amp;quot;error group&amp;quot; behaviour for unavailable variables is unintuitive, especially when working from a higher abstraction layer such as NML. This also interacts unfavourably with the suggested callback topology where unhandled callbacks are routed onto the graphics chain.&lt;br /&gt;
&lt;br /&gt;
Code patterns very commonly used by NewGRF authors such as &amp;lt;code&amp;gt;flag ? a : b&amp;lt;/code&amp;gt; in NML read and immediately throw away the value of &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; when &amp;lt;code&amp;gt;flag&amp;lt;/code&amp;gt; is false. The generated VarationalAction2 sequence for this is also overly verbose. It may be useful to consider adding operators or other mechanisms to enable these types of patterns to be expressed more efficiently.&lt;br /&gt;
&lt;br /&gt;
Likewise, adding simple relational operators (as opposed to the current cmp/ucmp) could reduce the need for verbose sequences to do comparisons.&lt;br /&gt;
&lt;br /&gt;
Procedure calls (variable 7E) truncate the result value to 15 bits, this is a source of surprising behaviour for NewGRF authors. Avoiding this requires using variable 1C. It may be useful to remove the need for this truncation.&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5046</id>
		<title>GRFv9</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5046"/>
		<updated>2025-06-04T22:07:09Z</updated>

		<summary type="html">&lt;p&gt;Jgr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page describes work so far, design considerations and other items of interest for a potential version 9 of the GRF specification (GRFv9), or equivalent specification evolution.&lt;br /&gt;
&lt;br /&gt;
This page is a not a guarantee that any such changes will be occur in future, or that any such future work will closely match that described here.&lt;br /&gt;
&lt;br /&gt;
== Existing Work ==&lt;br /&gt;
&lt;br /&gt;
GRFv9 PRs (closed)&lt;br /&gt;
https://github.com/OpenTTD/OpenTTD/pull/13309 (NML: https://github.com/OpenTTD/nml/pull/357)&lt;br /&gt;
&lt;br /&gt;
For 15.0:&lt;br /&gt;
Add explicit (Var)Action2 results for &amp;quot;callback failed&amp;quot; and &amp;quot;calculated result&amp;quot;. https://github.com/OpenTTD/OpenTTD/pull/14149&lt;br /&gt;
&lt;br /&gt;
== Design Considerations ==&lt;br /&gt;
&lt;br /&gt;
The current GRF specification has several areas which are not ideal and could be improved in a subsequent specification version.&lt;br /&gt;
&lt;br /&gt;
This section should list current pain points and non-idea specification aspects, and where possible suggest improvements or general design principles for future additions.&lt;br /&gt;
This section is non-exhaustive.&lt;br /&gt;
&lt;br /&gt;
=== Concurrent Action2 ID Limit ===&lt;br /&gt;
&lt;br /&gt;
GRFs are currently limited to 256 simultaneous action2 IDs. This is a common pain point for NewGRF authors. NewGRF authors are encouraged to needlessly duplicate action2s (e.g. by use of templating mechanisms) to mitigate this, this results in larger GRF files which has a negative impact on content distribution and run-time performance.&lt;br /&gt;
Moving to 16 bit Action2 IDs would remove this problem without imposing significant technical difficulty.&lt;br /&gt;
&lt;br /&gt;
=== General Design Comments on VariationalAction2 ===&lt;br /&gt;
&lt;br /&gt;
Currently only variables 60 to 7F are parameterised, this ID space is too small and should be expanded.&lt;br /&gt;
Currently many 60x variables are multiplexed to return multiple unrelated or only partially related values, this is a non-ideal for the following reasons.&lt;br /&gt;
* Some 60x variables sub-parts are too small in order to fit them into a single 32-bit variable, this leads to surprising/buggy behaviour in some GRFs (e.g. house variables 60/61 and 44).&lt;br /&gt;
* 60x variable sub-parts can become too small when ID ranges are extended, creating a need for a replacement variable and more work than would otherwise be necessary (e.g. station variable 6B).&lt;br /&gt;
* Some 60x variables are needlessly expensive at run-time because expensive sub-parts are calculated even when the GRF only needed another part of the variable (e.g. industry variable 67/68) (this can be reasonably mitigated without a spec change).&lt;br /&gt;
&lt;br /&gt;
The current &amp;quot;error group&amp;quot; behaviour for unavailable variables is unintuitive, especially when working from a higher abstraction layer such as NML. This also interacts unfavourably with the suggested callback topology where unhandled callbacks are routed onto the graphics chain.&lt;br /&gt;
&lt;br /&gt;
Code patterns very commonly used by NewGRF authors such as &amp;lt;code&amp;gt;flag ? a : b&amp;lt;/code&amp;gt; in NML read and immediately throw away the value of &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; when &amp;lt;code&amp;gt;flag&amp;lt;/code&amp;gt; is false. The generated VarationalAction2 sequence for this is also overly verbose. It may be useful to consider adding operators or other mechanisms to enable these types of patterns to be expressed more efficiently.&lt;br /&gt;
&lt;br /&gt;
Likewise, adding simple relational operators (as opposed to the current cmp/ucmp) could reduce the need for verbose sequences to do comparisons.&lt;br /&gt;
&lt;br /&gt;
Procedure calls (variable 7E) truncate the result value to 15 bits, this is a source of surprising behaviour for NewGRF authors. Avoiding this requires using variable 1C. It may be useful to remove the need for this truncation.&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5045</id>
		<title>GRFv9</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5045"/>
		<updated>2025-06-04T22:06:39Z</updated>

		<summary type="html">&lt;p&gt;Jgr: /* Existing Work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page describes work so far, design considerations and other items of interest for a potential version 9 of the GRF specification (GRFv9), or equivalent specification evolution.&lt;br /&gt;
&lt;br /&gt;
This page is a not a guarantee that any such changes will be occur in future, or that any such future work will closely match that described here.&lt;br /&gt;
&lt;br /&gt;
== Existing Work ==&lt;br /&gt;
&lt;br /&gt;
GRFv9 PRs (closed)&lt;br /&gt;
https://github.com/OpenTTD/OpenTTD/pull/13309 (NML: https://github.com/OpenTTD/nml/pull/357)&lt;br /&gt;
&lt;br /&gt;
For 15.0:&lt;br /&gt;
Add explicit (Var)Action2 results for &amp;quot;callback failed&amp;quot; and &amp;quot;calculated result&amp;quot;. https://github.com/OpenTTD/OpenTTD/pull/14149&lt;br /&gt;
&lt;br /&gt;
== Design Considerations ==&lt;br /&gt;
&lt;br /&gt;
The current GRF specification has several areas which are not ideal and could be improved in a subsequent specification version.&lt;br /&gt;
&lt;br /&gt;
This section should list current pain points and non-idea specification aspects, and where possible suggest improvements or general design principles for future additions.&lt;br /&gt;
This section is non-exhaustive.&lt;br /&gt;
&lt;br /&gt;
=== Concurrent Action2 ID Limit ===&lt;br /&gt;
&lt;br /&gt;
GRFs are currently limited to 256 simultaneous action2 IDs. This is a common pain point for NewGRF authors. NewGRF authors are encouraged to needlessly duplicate action2s (e.g. by use of templating mechanisms) to mitigate this, this results in larger GRF files which has a negative impact on content distribution and run-time performance.&lt;br /&gt;
Moving to 16 bit Action2 IDs would remove this problem without imposing significant technical difficult.&lt;br /&gt;
&lt;br /&gt;
=== General Design Comments on VariationalAction2 ===&lt;br /&gt;
&lt;br /&gt;
Currently only variables 60 to 7F are parameterised, this ID space is too small and should be expanded.&lt;br /&gt;
Currently many 60x variables are multiplexed to return multiple unrelated or only partially related values, this is a non-ideal for the following reasons.&lt;br /&gt;
* Some 60x variables sub-parts are too small in order to fit them into a single 32-bit variable, this leads to surprising/buggy behaviour in some GRFs (e.g. house variables 60/61 and 44).&lt;br /&gt;
* 60x variable sub-parts can become too small when ID ranges are extended, creating a need for a replacement variable and more work than would otherwise be necessary (e.g. station variable 6B).&lt;br /&gt;
* Some 60x variables are needlessly expensive at run-time because expensive sub-parts are calculated even when the GRF only needed another part of the variable (e.g. industry variable 67/68) (this can be reasonably mitigated without a spec change).&lt;br /&gt;
&lt;br /&gt;
The current &amp;quot;error group&amp;quot; behaviour for unavailable variables is unintuitive, especially when working from a higher abstraction layer such as NML. This also interacts unfavourably with the suggested callback topology where unhandled callbacks are routed onto the graphics chain.&lt;br /&gt;
&lt;br /&gt;
Code patterns very commonly used by NewGRF authors such as &amp;lt;code&amp;gt;flag ? a : b&amp;lt;/code&amp;gt; in NML read and immediately throw away the value of &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; when &amp;lt;code&amp;gt;flag&amp;lt;/code&amp;gt; is false. The generated VarationalAction2 sequence for this is also overly verbose. It may be useful to consider adding operators or other mechanisms to enable these types of patterns to be expressed more efficiently.&lt;br /&gt;
&lt;br /&gt;
Likewise, adding simple relational operators (as opposed to the current cmp/ucmp) could reduce the need for verbose sequences to do comparisons.&lt;br /&gt;
&lt;br /&gt;
Procedure calls (variable 7E) truncate the result value to 15 bits, this is a source of surprising behaviour for NewGRF authors. Avoiding this requires using variable 1C. It may be useful to remove the need for this truncation.&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5044</id>
		<title>GRFv9</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5044"/>
		<updated>2025-06-04T21:45:44Z</updated>

		<summary type="html">&lt;p&gt;Jgr: /* General Design Comments on VariationalAction2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page describes work so far, design considerations and other items of interest for a potential version 9 of the GRF specification (GRFv9), or equivalent specification evolution.&lt;br /&gt;
&lt;br /&gt;
This page is a not a guarantee that any such changes will be occur in future, or that any such future work will closely match that described here.&lt;br /&gt;
&lt;br /&gt;
== Existing Work ==&lt;br /&gt;
&lt;br /&gt;
GRFv9 PRs (closed)&lt;br /&gt;
https://github.com/OpenTTD/OpenTTD/pull/13309 (NML: https://github.com/OpenTTD/nml/pull/357)&lt;br /&gt;
&lt;br /&gt;
== Design Considerations ==&lt;br /&gt;
&lt;br /&gt;
The current GRF specification has several areas which are not ideal and could be improved in a subsequent specification version.&lt;br /&gt;
&lt;br /&gt;
This section should list current pain points and non-idea specification aspects, and where possible suggest improvements or general design principles for future additions.&lt;br /&gt;
This section is non-exhaustive.&lt;br /&gt;
&lt;br /&gt;
=== Concurrent Action2 ID Limit ===&lt;br /&gt;
&lt;br /&gt;
GRFs are currently limited to 256 simultaneous action2 IDs. This is a common pain point for NewGRF authors. NewGRF authors are encouraged to needlessly duplicate action2s (e.g. by use of templating mechanisms) to mitigate this, this results in larger GRF files which has a negative impact on content distribution and run-time performance.&lt;br /&gt;
Moving to 16 bit Action2 IDs would remove this problem without imposing significant technical difficult.&lt;br /&gt;
&lt;br /&gt;
=== General Design Comments on VariationalAction2 ===&lt;br /&gt;
&lt;br /&gt;
Currently only variables 60 to 7F are parameterised, this ID space is too small and should be expanded.&lt;br /&gt;
Currently many 60x variables are multiplexed to return multiple unrelated or only partially related values, this is a non-ideal for the following reasons.&lt;br /&gt;
* Some 60x variables sub-parts are too small in order to fit them into a single 32-bit variable, this leads to surprising/buggy behaviour in some GRFs (e.g. house variables 60/61 and 44).&lt;br /&gt;
* 60x variable sub-parts can become too small when ID ranges are extended, creating a need for a replacement variable and more work than would otherwise be necessary (e.g. station variable 6B).&lt;br /&gt;
* Some 60x variables are needlessly expensive at run-time because expensive sub-parts are calculated even when the GRF only needed another part of the variable (e.g. industry variable 67/68) (this can be reasonably mitigated without a spec change).&lt;br /&gt;
&lt;br /&gt;
The current &amp;quot;error group&amp;quot; behaviour for unavailable variables is unintuitive, especially when working from a higher abstraction layer such as NML. This also interacts unfavourably with the suggested callback topology where unhandled callbacks are routed onto the graphics chain.&lt;br /&gt;
&lt;br /&gt;
Code patterns very commonly used by NewGRF authors such as &amp;lt;code&amp;gt;flag ? a : b&amp;lt;/code&amp;gt; in NML read and immediately throw away the value of &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; when &amp;lt;code&amp;gt;flag&amp;lt;/code&amp;gt; is false. The generated VarationalAction2 sequence for this is also overly verbose. It may be useful to consider adding operators or other mechanisms to enable these types of patterns to be expressed more efficiently.&lt;br /&gt;
&lt;br /&gt;
Likewise, adding simple relational operators (as opposed to the current cmp/ucmp) could reduce the need for verbose sequences to do comparisons.&lt;br /&gt;
&lt;br /&gt;
Procedure calls (variable 7E) truncate the result value to 15 bits, this is a source of surprising behaviour for NewGRF authors. Avoiding this requires using variable 1C. It may be useful to remove the need for this truncation.&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5043</id>
		<title>GRFv9</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5043"/>
		<updated>2025-06-04T21:28:06Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Initial comments on VariationalAction2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page describes work so far, design considerations and other items of interest for a potential version 9 of the GRF specification (GRFv9), or equivalent specification evolution.&lt;br /&gt;
&lt;br /&gt;
This page is a not a guarantee that any such changes will be occur in future, or that any such future work will closely match that described here.&lt;br /&gt;
&lt;br /&gt;
== Existing Work ==&lt;br /&gt;
&lt;br /&gt;
GRFv9 PRs (closed)&lt;br /&gt;
https://github.com/OpenTTD/OpenTTD/pull/13309 (NML: https://github.com/OpenTTD/nml/pull/357)&lt;br /&gt;
&lt;br /&gt;
== Design Considerations ==&lt;br /&gt;
&lt;br /&gt;
The current GRF specification has several areas which are not ideal and could be improved in a subsequent specification version.&lt;br /&gt;
&lt;br /&gt;
This section should list current pain points and non-idea specification aspects, and where possible suggest improvements or general design principles for future additions.&lt;br /&gt;
This section is non-exhaustive.&lt;br /&gt;
&lt;br /&gt;
=== Concurrent Action2 ID Limit ===&lt;br /&gt;
&lt;br /&gt;
GRFs are currently limited to 256 simultaneous action2 IDs. This is a common pain point for NewGRF authors. NewGRF authors are encouraged to needlessly duplicate action2s (e.g. by use of templating mechanisms) to mitigate this, this results in larger GRF files which has a negative impact on content distribution and run-time performance.&lt;br /&gt;
Moving to 16 bit Action2 IDs would remove this problem without imposing significant technical difficult.&lt;br /&gt;
&lt;br /&gt;
=== General Design Comments on VariationalAction2 ===&lt;br /&gt;
&lt;br /&gt;
Currently only variables 60 to 7F are parameterised, this ID space is too small and should be expanded.&lt;br /&gt;
Currently many 60x variables are multiplexed to return multiple unrelated or only partially related values, this is a non-ideal for the following reasons.&lt;br /&gt;
* Some 60x variables sub-parts are too small in order to fit them into a single 32-bit variable, this leads to surprising/buggy behaviour in some GRFs (e.g. house variables 60/61 and 44).&lt;br /&gt;
* 60x variable sub-parts can become too small when ID ranges are extended, creating a need for a replacement variable and more work than would otherwise be necessary (e.g. station variable 6B).&lt;br /&gt;
* Some 60x variables are needlessly expensive at run-time because expensive sub-parts are calculated even when the GRF only needed another part of the variable (e.g. industry variable 67/68) (this can be reasonably mitigated without a spec change).&lt;br /&gt;
&lt;br /&gt;
The current &amp;quot;error group&amp;quot; behaviour for unavailable variables is extremely unintuitive, especially when working from a higher abstraction layer such as NML. This also interacts unfavourably with the suggested callback topology where unhandled callbacks are routed onto the graphics chain.&lt;br /&gt;
&lt;br /&gt;
Returning a &amp;quot;failed&amp;quot; result currently requires returning a different value depending on the current value of variable 0C and the feature type (see CB_FAILED in NML), a VariationalAction2 type (or other equivalent mechanism) which results in an unambiguous callback failure in all contexts may be useful.&lt;br /&gt;
&lt;br /&gt;
Code patterns very commonly used by NewGRF authors such as &amp;lt;code&amp;gt;flag ? a : b&amp;lt;/code&amp;gt; in NML read and immediately throw away the value of &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; when &amp;lt;code&amp;gt;flag&amp;lt;/code&amp;gt; is false. The generated VarationalAction2 sequence for this is also overly verbose. It may be useful to consider adding operators or other mechanisms to enable these types of patterns to be expressed more efficiently.&lt;br /&gt;
&lt;br /&gt;
Likewise, adding simple relational operators (as opposed to the current cmp/ucmp) could reduce the need for verbose sequences to do comparisons.&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5042</id>
		<title>GRFv9</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5042"/>
		<updated>2025-06-04T20:42:23Z</updated>

		<summary type="html">&lt;p&gt;Jgr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page describes work so far, design considerations and other items of interest for a potential version 9 of the GRF specification (GRFv9), or equivalent specification evolution.&lt;br /&gt;
&lt;br /&gt;
This page is a not a guarantee that any such changes will be occur in future, or that any such future work will closely match that described here.&lt;br /&gt;
&lt;br /&gt;
== Existing Work ==&lt;br /&gt;
&lt;br /&gt;
GRFv9 PRs (closed)&lt;br /&gt;
https://github.com/OpenTTD/OpenTTD/pull/13309 (NML: https://github.com/OpenTTD/nml/pull/357)&lt;br /&gt;
&lt;br /&gt;
== Design Considerations ==&lt;br /&gt;
&lt;br /&gt;
The current GRF specification has several areas which are not ideal and could be improved in a subsequent specification version.&lt;br /&gt;
&lt;br /&gt;
This section should list current pain points and non-idea specification aspects, and where possible suggest improvements or general design principles for future additions.&lt;br /&gt;
This section is non-exhaustive.&lt;br /&gt;
&lt;br /&gt;
(The list below does not include those already addressed in https://github.com/OpenTTD/OpenTTD/pull/13309, see above).&lt;br /&gt;
&lt;br /&gt;
=== Concurrent Action2 ID Limit ===&lt;br /&gt;
&lt;br /&gt;
GRFs are currently limited to 256 simultaneous action2 IDs. This is a common pain point for NewGRF authors. NewGRF authors are encouraged to needlessly duplicate action2s (e.g. by use of templating mechanisms) to mitigate this, this results in larger GRF files which has a negative impact on content distribution and run-time performance.&lt;br /&gt;
Moving to 16 bit Action2 IDs would remove this problem without imposing significant technical difficult.&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5041</id>
		<title>GRFv9</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=GRFv9&amp;diff=5041"/>
		<updated>2025-06-04T20:27:09Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Initial page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page describes work so far, design considerations and other items of interest for a potential version 9 of the GRF specification (GRFv9), or equivalent evolution of GRF the specification.&lt;br /&gt;
&lt;br /&gt;
This page is a not a guarantee that any such changes will be occur in future, or that any such future work will closely match that described here.&lt;br /&gt;
&lt;br /&gt;
== Existing Work ==&lt;br /&gt;
&lt;br /&gt;
GRFv9 PRs (closed)&lt;br /&gt;
https://github.com/OpenTTD/OpenTTD/pull/13309 (NML: https://github.com/OpenTTD/nml/pull/357)&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Main_Page&amp;diff=5040</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Main_Page&amp;diff=5040"/>
		<updated>2025-06-04T20:19:17Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add link to stub GRFv9 page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sprite types ==&lt;br /&gt;
;[[Action0]] - Defines new properties for anything added or changed by the NewGRF&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
| [[Action0/Vehicles | Vehicles]]&lt;br /&gt;
| [[Action0/Vehicles/Trains | Trains]]&lt;br /&gt;
| [[Action0/Vehicles/RoadVehicles | RoadVehicles]]&lt;br /&gt;
| [[Action0/Vehicles/Ships | Ships]]&lt;br /&gt;
| [[Action0/Vehicles/Planes | Aircraft]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action0/Stations | Stations]]&lt;br /&gt;
| [[Action0/Canals | Canals &amp;amp; Rivers]]&lt;br /&gt;
| [[Action0/Bridges | Bridges]]&lt;br /&gt;
| [[Action0/Houses | Houses]]&lt;br /&gt;
| [[Action0/Global Settings | Global Settings]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action0/Industry Tiles | Industry Tiles]]&lt;br /&gt;
| [[Action0/Industries | Industries]]&lt;br /&gt;
| [[Action0/Cargos | Cargos]]&lt;br /&gt;
| [[Action0/Sound Effects | Sound Effects]]&lt;br /&gt;
| [[Action0/Airports | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Signals&#039;&#039;&lt;br /&gt;
| [[Action0/Objects | Objects]]&lt;br /&gt;
| [[Action0/Railtypes | Railtypes]]&lt;br /&gt;
| [[Action0/Airport Tiles | Airport Tiles]]&lt;br /&gt;
| [[Action0/Roadtypes | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action0/Tramtypes | Tramtypes]]&lt;br /&gt;
| [[Action0/Road Stops| Road Stops]]&lt;br /&gt;
| [[Action0/Badges | Badges]]&lt;br /&gt;
| &#039;&#039;Towns&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
;[[Action1]] - Defines one or more graphics sets&lt;br /&gt;
;[[Action2]] - Defines graphics set IDs&lt;br /&gt;
* Basic Action2&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
|colspan=5| [[Action2/Vehicles | Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action2/Stations | Stations]]&lt;br /&gt;
| [[Action2/Single Set | Canals &amp;amp; Rivers]]&lt;br /&gt;
| &#039;&#039;Bridges&#039;&#039;&lt;br /&gt;
| [[Action2/Sprite Layout | Houses]]&lt;br /&gt;
| &#039;&#039;Global Settings&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[Action2/Sprite Layout | Industry Tiles]]&lt;br /&gt;
| [[Action2/Industries | Industries]]&lt;br /&gt;
| [[Action2/Single Set | Cargos]]&lt;br /&gt;
| [[Action2/Only Callback Failure | Sound Effects]]&lt;br /&gt;
| [[Action2/Single Set | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action2/Only Callback Failure | Signals]]&lt;br /&gt;
| [[Action2/Sprite Layout | Objects]]&lt;br /&gt;
| [[Action2/Single Set | Railtypes]]&lt;br /&gt;
| [[Action2/Sprite Layout | Airport Tiles]]&lt;br /&gt;
| [[Action2/Single Set | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action2/Single Set | Tramtypes]]&lt;br /&gt;
| [[Action2/Sprite Layout | Road Stops]]&lt;br /&gt;
| [[Action2/Single Set | Badges]]&lt;br /&gt;
| &#039;&#039;Towns&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
* [[VariationalAction2]] - A conditional switch that determines a [[Callbacks|callback]] result or chains to another Action 2&lt;br /&gt;
: [[VarAction2Advanced]] - Advanced features of Variational Action 2&lt;br /&gt;
: [[GlobalVariables | Global Variables]]&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;VA2&#039;&#039;&#039;&lt;br /&gt;
|colspan=5| [[VariationalAction2/Vehicles | Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
| [[VariationalAction2/Stations | Stations]]&lt;br /&gt;
| [[VariationalAction2/Canals | Canals &amp;amp; Rivers]]&lt;br /&gt;
| [[VariationalAction2/Bridges | Bridges]]&lt;br /&gt;
| [[VariationalAction2/Houses | Houses]]&lt;br /&gt;
| &#039;&#039;Global Settings&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[VariationalAction2/Industry Tiles | Industry Tiles]]&lt;br /&gt;
| [[VariationalAction2/Industries | Industries]]&lt;br /&gt;
| [[VariationalAction2/Cargos | Cargos]]&lt;br /&gt;
| &#039;&#039;Sound Effects&#039;&#039;&lt;br /&gt;
| [[VariationalAction2/Airports | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| [[VariationalAction2/Signals | Signals]]&lt;br /&gt;
| [[VariationalAction2/Objects | Objects]]&lt;br /&gt;
| [[VariationalAction2/Railtypes | Railtypes]]&lt;br /&gt;
| [[VariationalAction2/Airport Tiles | Airport Tiles]]&lt;br /&gt;
| [[VariationalAction2/Roadtypes | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[VariationalAction2/Tramtypes | Tramtypes]]&lt;br /&gt;
| [[VariationalAction2/Road Stops | Road Stops]]&lt;br /&gt;
| [[VariationalAction2/Badges | Badges]]&lt;br /&gt;
| [[VariationalAction2/Towns | Towns]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
* [[RandomAction2]] - A randomized Variational Action 2&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;R&#039;&#039;&#039;&lt;br /&gt;
|colspan=5| [[RandomAction2#Vehicles | Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
| [[RandomAction2#Stations | Stations]]&lt;br /&gt;
| [[RandomAction2#Canals | Canals &amp;amp; Rivers]]&lt;br /&gt;
| &#039;&#039;Bridges&#039;&#039;&lt;br /&gt;
| [[RandomAction2#Town_building_triggers | Houses]]&lt;br /&gt;
| &#039;&#039;Global Settings&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[RandomAction2#Industry_tile_triggers | Industry Tiles]]&lt;br /&gt;
| [[RandomAction2#Industry_tile_triggers | Industries]]&lt;br /&gt;
| &#039;&#039;Cargos&#039;&#039;&lt;br /&gt;
| &#039;&#039;Sound Effects&#039;&#039;&lt;br /&gt;
| [[RandomAction2#Stations | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Signals&#039;&#039;&lt;br /&gt;
| [[RandomAction2#Objects | Objects]]&lt;br /&gt;
| [[RandomAction2#Rail_types | Railtypes]]&lt;br /&gt;
| [[RandomAction2#Stations | Airport Tiles]]&lt;br /&gt;
| [[RandomAction2#Road_types | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[RandomAction2#Tram_types | Tramtypes]]&lt;br /&gt;
| [[RandomAction2#Road_stops | Road Stops]]&lt;br /&gt;
| &#039;&#039;Badges&#039;&#039;&lt;br /&gt;
| &#039;&#039;Towns&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* [[Callbacks]] - List of available callbacks&lt;br /&gt;
&lt;br /&gt;
;[[Action3]] - Associates Action 2s with an Action 0&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;3&#039;&#039;&#039;&lt;br /&gt;
|colspan=5| [[Action3 | Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action3 | Stations]]&lt;br /&gt;
| [[Action3/Canals | Canals &amp;amp; Rivers]]&lt;br /&gt;
| &#039;&#039;Bridges&#039;&#039;&lt;br /&gt;
| [[Action3 | Houses]]&lt;br /&gt;
| &#039;&#039;Global Settings&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[Action3 | Industry Tiles]]&lt;br /&gt;
| [[Action3 | Industries]]&lt;br /&gt;
| [[Action3 | Cargos]]&lt;br /&gt;
| [[Action3 | Sound Effects]]&lt;br /&gt;
| [[Action3 | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action3 | Signals]]&lt;br /&gt;
| [[Action3 | Objects]]&lt;br /&gt;
| [[Action3/Railtypes | Railtypes]]&lt;br /&gt;
| [[Action3 | Airport Tiles]]&lt;br /&gt;
| [[Action3/Roadtypes | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action3/Tramtypes | Tramtypes]]&lt;br /&gt;
| [[Action3 | Road Stops]]&lt;br /&gt;
| [[Action3/Badges | Badges]]&lt;br /&gt;
| &#039;&#039;Towns&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
: [[Action3LiveryOverride]] - Change wagon livery to match the engine&lt;br /&gt;
;[[Action4]] - Defines text strings&lt;br /&gt;
;[[Action5]] - Replaces base set sprites not present in the original TTD.&lt;br /&gt;
;[[Action6]] - Modifies the contents of the following sprite&lt;br /&gt;
;[[Action7]] - Conditionally skips sprites or jumps to a label&lt;br /&gt;
: [[TTDPatchFlags| GameConfigFlags]] - Configuration flags for Action 7/9 Variable 85&lt;br /&gt;
;[[Action8]] - Defines GRFID, Name and Description&lt;br /&gt;
;[[Action9]] - (see action 7 above)&lt;br /&gt;
;[[ActionA]] - Replaces TTD base set sprites&lt;br /&gt;
;[[ActionB]] - Generates an error message&lt;br /&gt;
;[[ActionC]] - Does nothing (can be used to embed comments)&lt;br /&gt;
;[[ActionD]] - Assigns parameters and calculates results&lt;br /&gt;
* [[ReadingOtherGRFParameters]] - Reading another GRF file&#039;s parameters&lt;br /&gt;
* [[ReadingPatchVariables| ReadingGameSettings]] - Reading game configuration settings&lt;br /&gt;
* [[GRFResourceManagement]] - Preventing conflicts with limited resources&lt;br /&gt;
;[[ActionE]] - Deactivates a NewGRF file&lt;br /&gt;
;[[ActionF]] - Defines new town name styles&lt;br /&gt;
;[[Action10]] - Defines a label for action 7/9&lt;br /&gt;
;[[Action11]] - Defines new sounds&lt;br /&gt;
;[[Action12]] - Adds Unicode font glyphs&lt;br /&gt;
;[[Action13]] - Translates GRF-specific strings&lt;br /&gt;
;[[Action14]] - Static NewGRF information (OpenTTD only)&lt;br /&gt;
;[[RealSprites]] - Sprites that actually are drawn on the screen&lt;br /&gt;
;[[RecolorSprites]] - Changing other sprites&#039; colors&lt;br /&gt;
&lt;br /&gt;
== Graphics properties ==&lt;br /&gt;
* [[PalettesAndCoordinates#Palettes | Palettes]] - Palettes used by the game&lt;br /&gt;
* [[PalettesAndCoordinates#Coordinates | Coordinates]] - Coordinates used for sprite alignement&lt;br /&gt;
&lt;br /&gt;
== TTD defaults ==&lt;br /&gt;
* [[DefaultHouseProps]] - Default property values for TTD&#039;s houses&lt;br /&gt;
* [[IndustryTileDefaultProps]] - Default property values for TTD&#039;s industry tiles&lt;br /&gt;
* [[IndustryDefaultProps]] - Default properties values for TTD&#039;s industries&lt;br /&gt;
* [[CargoDefaultProps]] - Default property values for TTD&#039;s cargo types&lt;br /&gt;
* [[VehicleIDs]] - Default vehicle IDs&lt;br /&gt;
* [[NML:Default_Vehicle_Properties]] - Default Vehicle Properties (NML)&lt;br /&gt;
* [[AirportTypes]] - Default Airport IDs&lt;br /&gt;
* [[AirportTileDefaultProps]] - Default airport tile properties&lt;br /&gt;
&lt;br /&gt;
== NewGRF commons ==&lt;br /&gt;
* [[Action0Cargos#CargoClasses_.2816.29 | Cargo classes]] - Commonly used cargo classes&lt;br /&gt;
* [[CargoTypes | Cargo labels]] - Commonly used cargo labels&lt;br /&gt;
* [[ObjectLabels | Object classes]] - Commonly used object clases&lt;br /&gt;
* [[TracktypeLabels | Rail/road/tram type labels]] - Commonly used labels for rail/road/tram types&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
* [[Features]] - List of all features and feature-specific actions.&lt;br /&gt;
* [[BaseCosts | Base Costs]]&lt;br /&gt;
* [[VehicleRefitting | Vehicle Refitting]]&lt;br /&gt;
* [[GrfLoadingStages | GRF loading stages]]&lt;br /&gt;
* [[GlobalVariables | Global variables]]&lt;br /&gt;
* [[Storages | Storages]]&lt;br /&gt;
* [[StringCodes | String control codes]]&lt;br /&gt;
* [[TextIDs | Text IDs (TTD + TTDPatch + NewGRF defined)]]&lt;br /&gt;
* [[GRFActionsDetailed | Syntax details]]&lt;br /&gt;
* [[Version numbers | Types of version numbers used throughout the specs]]&lt;br /&gt;
* [[DebuggingGRFCode | Debugging NewGRFs]]&lt;br /&gt;
* [[SpriteErrors | TTDPatch error codes on loading NewGRFs]]&lt;br /&gt;
* [[GRFv9 | GRFv9 Proposals]]&lt;br /&gt;
* [https://wiki.openttd.org/en/Development/NewGRF/Specification%20Status Specification Status]&lt;br /&gt;
&lt;br /&gt;
== Game mechanics ==&lt;br /&gt;
* [[TownZones | Town zones]]&lt;br /&gt;
* [[NMLMain | NML]]&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Main_Page&amp;diff=5039</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Main_Page&amp;diff=5039"/>
		<updated>2025-06-04T20:15:08Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add specification status link (this page is impossible to find otherwise)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sprite types ==&lt;br /&gt;
;[[Action0]] - Defines new properties for anything added or changed by the NewGRF&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
| [[Action0/Vehicles | Vehicles]]&lt;br /&gt;
| [[Action0/Vehicles/Trains | Trains]]&lt;br /&gt;
| [[Action0/Vehicles/RoadVehicles | RoadVehicles]]&lt;br /&gt;
| [[Action0/Vehicles/Ships | Ships]]&lt;br /&gt;
| [[Action0/Vehicles/Planes | Aircraft]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action0/Stations | Stations]]&lt;br /&gt;
| [[Action0/Canals | Canals &amp;amp; Rivers]]&lt;br /&gt;
| [[Action0/Bridges | Bridges]]&lt;br /&gt;
| [[Action0/Houses | Houses]]&lt;br /&gt;
| [[Action0/Global Settings | Global Settings]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action0/Industry Tiles | Industry Tiles]]&lt;br /&gt;
| [[Action0/Industries | Industries]]&lt;br /&gt;
| [[Action0/Cargos | Cargos]]&lt;br /&gt;
| [[Action0/Sound Effects | Sound Effects]]&lt;br /&gt;
| [[Action0/Airports | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Signals&#039;&#039;&lt;br /&gt;
| [[Action0/Objects | Objects]]&lt;br /&gt;
| [[Action0/Railtypes | Railtypes]]&lt;br /&gt;
| [[Action0/Airport Tiles | Airport Tiles]]&lt;br /&gt;
| [[Action0/Roadtypes | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action0/Tramtypes | Tramtypes]]&lt;br /&gt;
| [[Action0/Road Stops| Road Stops]]&lt;br /&gt;
| [[Action0/Badges | Badges]]&lt;br /&gt;
| &#039;&#039;Towns&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
;[[Action1]] - Defines one or more graphics sets&lt;br /&gt;
;[[Action2]] - Defines graphics set IDs&lt;br /&gt;
* Basic Action2&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
|colspan=5| [[Action2/Vehicles | Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action2/Stations | Stations]]&lt;br /&gt;
| [[Action2/Single Set | Canals &amp;amp; Rivers]]&lt;br /&gt;
| &#039;&#039;Bridges&#039;&#039;&lt;br /&gt;
| [[Action2/Sprite Layout | Houses]]&lt;br /&gt;
| &#039;&#039;Global Settings&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[Action2/Sprite Layout | Industry Tiles]]&lt;br /&gt;
| [[Action2/Industries | Industries]]&lt;br /&gt;
| [[Action2/Single Set | Cargos]]&lt;br /&gt;
| [[Action2/Only Callback Failure | Sound Effects]]&lt;br /&gt;
| [[Action2/Single Set | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action2/Only Callback Failure | Signals]]&lt;br /&gt;
| [[Action2/Sprite Layout | Objects]]&lt;br /&gt;
| [[Action2/Single Set | Railtypes]]&lt;br /&gt;
| [[Action2/Sprite Layout | Airport Tiles]]&lt;br /&gt;
| [[Action2/Single Set | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action2/Single Set | Tramtypes]]&lt;br /&gt;
| [[Action2/Sprite Layout | Road Stops]]&lt;br /&gt;
| [[Action2/Single Set | Badges]]&lt;br /&gt;
| &#039;&#039;Towns&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
* [[VariationalAction2]] - A conditional switch that determines a [[Callbacks|callback]] result or chains to another Action 2&lt;br /&gt;
: [[VarAction2Advanced]] - Advanced features of Variational Action 2&lt;br /&gt;
: [[GlobalVariables | Global Variables]]&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;VA2&#039;&#039;&#039;&lt;br /&gt;
|colspan=5| [[VariationalAction2/Vehicles | Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
| [[VariationalAction2/Stations | Stations]]&lt;br /&gt;
| [[VariationalAction2/Canals | Canals &amp;amp; Rivers]]&lt;br /&gt;
| [[VariationalAction2/Bridges | Bridges]]&lt;br /&gt;
| [[VariationalAction2/Houses | Houses]]&lt;br /&gt;
| &#039;&#039;Global Settings&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[VariationalAction2/Industry Tiles | Industry Tiles]]&lt;br /&gt;
| [[VariationalAction2/Industries | Industries]]&lt;br /&gt;
| [[VariationalAction2/Cargos | Cargos]]&lt;br /&gt;
| &#039;&#039;Sound Effects&#039;&#039;&lt;br /&gt;
| [[VariationalAction2/Airports | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| [[VariationalAction2/Signals | Signals]]&lt;br /&gt;
| [[VariationalAction2/Objects | Objects]]&lt;br /&gt;
| [[VariationalAction2/Railtypes | Railtypes]]&lt;br /&gt;
| [[VariationalAction2/Airport Tiles | Airport Tiles]]&lt;br /&gt;
| [[VariationalAction2/Roadtypes | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[VariationalAction2/Tramtypes | Tramtypes]]&lt;br /&gt;
| [[VariationalAction2/Road Stops | Road Stops]]&lt;br /&gt;
| [[VariationalAction2/Badges | Badges]]&lt;br /&gt;
| [[VariationalAction2/Towns | Towns]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
* [[RandomAction2]] - A randomized Variational Action 2&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;R&#039;&#039;&#039;&lt;br /&gt;
|colspan=5| [[RandomAction2#Vehicles | Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
| [[RandomAction2#Stations | Stations]]&lt;br /&gt;
| [[RandomAction2#Canals | Canals &amp;amp; Rivers]]&lt;br /&gt;
| &#039;&#039;Bridges&#039;&#039;&lt;br /&gt;
| [[RandomAction2#Town_building_triggers | Houses]]&lt;br /&gt;
| &#039;&#039;Global Settings&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[RandomAction2#Industry_tile_triggers | Industry Tiles]]&lt;br /&gt;
| [[RandomAction2#Industry_tile_triggers | Industries]]&lt;br /&gt;
| &#039;&#039;Cargos&#039;&#039;&lt;br /&gt;
| &#039;&#039;Sound Effects&#039;&#039;&lt;br /&gt;
| [[RandomAction2#Stations | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Signals&#039;&#039;&lt;br /&gt;
| [[RandomAction2#Objects | Objects]]&lt;br /&gt;
| [[RandomAction2#Rail_types | Railtypes]]&lt;br /&gt;
| [[RandomAction2#Stations | Airport Tiles]]&lt;br /&gt;
| [[RandomAction2#Road_types | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[RandomAction2#Tram_types | Tramtypes]]&lt;br /&gt;
| [[RandomAction2#Road_stops | Road Stops]]&lt;br /&gt;
| &#039;&#039;Badges&#039;&#039;&lt;br /&gt;
| &#039;&#039;Towns&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* [[Callbacks]] - List of available callbacks&lt;br /&gt;
&lt;br /&gt;
;[[Action3]] - Associates Action 2s with an Action 0&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;3&#039;&#039;&#039;&lt;br /&gt;
|colspan=5| [[Action3 | Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action3 | Stations]]&lt;br /&gt;
| [[Action3/Canals | Canals &amp;amp; Rivers]]&lt;br /&gt;
| &#039;&#039;Bridges&#039;&#039;&lt;br /&gt;
| [[Action3 | Houses]]&lt;br /&gt;
| &#039;&#039;Global Settings&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[Action3 | Industry Tiles]]&lt;br /&gt;
| [[Action3 | Industries]]&lt;br /&gt;
| [[Action3 | Cargos]]&lt;br /&gt;
| [[Action3 | Sound Effects]]&lt;br /&gt;
| [[Action3 | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action3 | Signals]]&lt;br /&gt;
| [[Action3 | Objects]]&lt;br /&gt;
| [[Action3/Railtypes | Railtypes]]&lt;br /&gt;
| [[Action3 | Airport Tiles]]&lt;br /&gt;
| [[Action3/Roadtypes | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action3/Tramtypes | Tramtypes]]&lt;br /&gt;
| [[Action3 | Road Stops]]&lt;br /&gt;
| [[Action3/Badges | Badges]]&lt;br /&gt;
| &#039;&#039;Towns&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
: [[Action3LiveryOverride]] - Change wagon livery to match the engine&lt;br /&gt;
;[[Action4]] - Defines text strings&lt;br /&gt;
;[[Action5]] - Replaces base set sprites not present in the original TTD.&lt;br /&gt;
;[[Action6]] - Modifies the contents of the following sprite&lt;br /&gt;
;[[Action7]] - Conditionally skips sprites or jumps to a label&lt;br /&gt;
: [[TTDPatchFlags| GameConfigFlags]] - Configuration flags for Action 7/9 Variable 85&lt;br /&gt;
;[[Action8]] - Defines GRFID, Name and Description&lt;br /&gt;
;[[Action9]] - (see action 7 above)&lt;br /&gt;
;[[ActionA]] - Replaces TTD base set sprites&lt;br /&gt;
;[[ActionB]] - Generates an error message&lt;br /&gt;
;[[ActionC]] - Does nothing (can be used to embed comments)&lt;br /&gt;
;[[ActionD]] - Assigns parameters and calculates results&lt;br /&gt;
* [[ReadingOtherGRFParameters]] - Reading another GRF file&#039;s parameters&lt;br /&gt;
* [[ReadingPatchVariables| ReadingGameSettings]] - Reading game configuration settings&lt;br /&gt;
* [[GRFResourceManagement]] - Preventing conflicts with limited resources&lt;br /&gt;
;[[ActionE]] - Deactivates a NewGRF file&lt;br /&gt;
;[[ActionF]] - Defines new town name styles&lt;br /&gt;
;[[Action10]] - Defines a label for action 7/9&lt;br /&gt;
;[[Action11]] - Defines new sounds&lt;br /&gt;
;[[Action12]] - Adds Unicode font glyphs&lt;br /&gt;
;[[Action13]] - Translates GRF-specific strings&lt;br /&gt;
;[[Action14]] - Static NewGRF information (OpenTTD only)&lt;br /&gt;
;[[RealSprites]] - Sprites that actually are drawn on the screen&lt;br /&gt;
;[[RecolorSprites]] - Changing other sprites&#039; colors&lt;br /&gt;
&lt;br /&gt;
== Graphics properties ==&lt;br /&gt;
* [[PalettesAndCoordinates#Palettes | Palettes]] - Palettes used by the game&lt;br /&gt;
* [[PalettesAndCoordinates#Coordinates | Coordinates]] - Coordinates used for sprite alignement&lt;br /&gt;
&lt;br /&gt;
== TTD defaults ==&lt;br /&gt;
* [[DefaultHouseProps]] - Default property values for TTD&#039;s houses&lt;br /&gt;
* [[IndustryTileDefaultProps]] - Default property values for TTD&#039;s industry tiles&lt;br /&gt;
* [[IndustryDefaultProps]] - Default properties values for TTD&#039;s industries&lt;br /&gt;
* [[CargoDefaultProps]] - Default property values for TTD&#039;s cargo types&lt;br /&gt;
* [[VehicleIDs]] - Default vehicle IDs&lt;br /&gt;
* [[NML:Default_Vehicle_Properties]] - Default Vehicle Properties (NML)&lt;br /&gt;
* [[AirportTypes]] - Default Airport IDs&lt;br /&gt;
* [[AirportTileDefaultProps]] - Default airport tile properties&lt;br /&gt;
&lt;br /&gt;
== NewGRF commons ==&lt;br /&gt;
* [[Action0Cargos#CargoClasses_.2816.29 | Cargo classes]] - Commonly used cargo classes&lt;br /&gt;
* [[CargoTypes | Cargo labels]] - Commonly used cargo labels&lt;br /&gt;
* [[ObjectLabels | Object classes]] - Commonly used object clases&lt;br /&gt;
* [[TracktypeLabels | Rail/road/tram type labels]] - Commonly used labels for rail/road/tram types&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
* [[Features]] - List of all features and feature-specific actions.&lt;br /&gt;
* [[BaseCosts | Base Costs]]&lt;br /&gt;
* [[VehicleRefitting | Vehicle Refitting]]&lt;br /&gt;
* [[GrfLoadingStages | GRF loading stages]]&lt;br /&gt;
* [[GlobalVariables | Global variables]]&lt;br /&gt;
* [[Storages | Storages]]&lt;br /&gt;
* [[StringCodes | String control codes]]&lt;br /&gt;
* [[TextIDs | Text IDs (TTD + TTDPatch + NewGRF defined)]]&lt;br /&gt;
* [[GRFActionsDetailed | Syntax details]]&lt;br /&gt;
* [[Version numbers | Types of version numbers used throughout the specs]]&lt;br /&gt;
* [[DebuggingGRFCode | Debugging NewGRFs]]&lt;br /&gt;
* [[SpriteErrors | TTDPatch error codes on loading NewGRFs]]&lt;br /&gt;
* [https://wiki.openttd.org/en/Development/NewGRF/Specification%20Status Specification Status]&lt;br /&gt;
&lt;br /&gt;
== Game mechanics ==&lt;br /&gt;
* [[TownZones | Town zones]]&lt;br /&gt;
* [[NMLMain | NML]]&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Road_Stops&amp;diff=4804</id>
		<title>Action0/Road Stops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Road_Stops&amp;diff=4804"/>
		<updated>2024-07-09T23:43:18Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Fix table for property 0C (draw mode)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Defining properties of road stops.&lt;br /&gt;
&lt;br /&gt;
Road stop IDs may be freely chosen. In action 0, you need only specify IDs relative to the set, i.e. the ID of the first road stop type is 00, the second road type is 01 and so on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OpenTTD supports 64000 road stops per game, and 64000 road stop IDs per GRF file.&lt;br /&gt;
&lt;br /&gt;
The property you &#039;&#039;&#039;must&#039;&#039;&#039; set for each road stop ID is 08 (in addition to defining an action 3 for it). Also, all road stop IDs must get their classes in the right order, starting from ID 00 onwards.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{|&lt;br /&gt;
!Number!![[GRFActionsDetailed|Size]]!!Version!!Description&lt;br /&gt;
|-&lt;br /&gt;
|08||D||{{ottdp|14}}||Class label, see below&lt;br /&gt;
|-&lt;br /&gt;
|09||B||{{ottdp|14}}||Road stop type&lt;br /&gt;
|-&lt;br /&gt;
|0A||W||{{ottdp|14}}||Road stop name text ID&lt;br /&gt;
|-&lt;br /&gt;
|0B||W||{{ottdp|14}}||Class name text ID&lt;br /&gt;
|-&lt;br /&gt;
|0C||B||{{ottdp|14}}||Draw mode&lt;br /&gt;
|-&lt;br /&gt;
|0D||D||{{ottdp|14}}||Random trigger cargoes&lt;br /&gt;
|-&lt;br /&gt;
|0E||W||{{ottdp|14}}||Animation information&lt;br /&gt;
|-&lt;br /&gt;
|0F||B||{{ottdp|14}}||Animation speed&lt;br /&gt;
|-&lt;br /&gt;
|10||W||{{ottdp|14}}||Animation triggers&lt;br /&gt;
|-&lt;br /&gt;
|11||B||{{ottdp|14}}||Callback flags, see below&lt;br /&gt;
|-&lt;br /&gt;
|12||D||{{ottdp|14}}||General flags, see below&lt;br /&gt;
|-&lt;br /&gt;
|15||W||{{ottdp|14}}||Cost multipiers, see below&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Descriptions ==&lt;br /&gt;
&lt;br /&gt;
=== Road stop class (08) ===&lt;br /&gt;
&lt;br /&gt;
New road stops are grouped graphics into classes.&lt;br /&gt;
&lt;br /&gt;
Only two classes are pre-defined:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Name!!Class ID!!Intended use for road stops&lt;br /&gt;
|-&lt;br /&gt;
|DFLT||44 46 4C 54||Default road stops&lt;br /&gt;
|-&lt;br /&gt;
|WAYP||57 41 59 50||{{ottdp|15}} Road waypoints&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ottdp|15}} Road stop classes which start with the byte FF are considered road waypoint classes, and will appear in the road waypoint construction window instead of the road bus/truck stop construction windows.&lt;br /&gt;
&lt;br /&gt;
It is recommended that the class identifier used is unique to your GRF(s).&lt;br /&gt;
&lt;br /&gt;
=== Road stop type (09) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||Passenger/bus stop&lt;br /&gt;
|-&lt;br /&gt;
|1||Freight/lorry stop&lt;br /&gt;
|-&lt;br /&gt;
|2||Both passenger/bus and freight/lorry stops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default value is 2: Both passenger/bus and freight/lorry stops&lt;br /&gt;
&lt;br /&gt;
=== Road stop name text ID (0A) ===&lt;br /&gt;
&lt;br /&gt;
The text ID for this road stop (word value). This textid should be either a TTD textid or a D4xx textid (set via D0xx in action4).&lt;br /&gt;
&lt;br /&gt;
=== Class name text ID (0B) ===&lt;br /&gt;
&lt;br /&gt;
The text ID for the road stop class.&lt;br /&gt;
&lt;br /&gt;
When specifying a road stop, you don&#039;t need to set a class name again if you already did for another one with the same class.&lt;br /&gt;
&lt;br /&gt;
=== Draw mode (0C) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||1||Bay stops: Draw road type ground sprite&lt;br /&gt;
|-&lt;br /&gt;
|1||2||Drive through stops: Draw road/tram type overlays&lt;br /&gt;
|-&lt;br /&gt;
|2||4||{{ottdp|15}} Road waypoints: Draw the sprite layout ground tile (on top of the road)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default value is 3 (bits 0 and 1 both set).&lt;br /&gt;
&lt;br /&gt;
The remaining bits are reserved for future use.&lt;br /&gt;
&lt;br /&gt;
=== Cargo types for random triggers (0D) ===&lt;br /&gt;
&lt;br /&gt;
This sets which cargo types should trigger re-randomizing. The cargo types are given as a bitmask of the bits from column 3 (type B) in CargoTypes. &amp;amp;nbsp;If nothing is set (the default), the no random triggers will happen, to conserve CPU time.&lt;br /&gt;
&lt;br /&gt;
With GRF version 7 and above, the interpretation of bits changes. Instead of climate-dependent cargo slot numbers (type B), you have to set the bits of climate-independent cargo ID (type A).&lt;br /&gt;
&lt;br /&gt;
=== Animation information (0E) ===&lt;br /&gt;
&lt;br /&gt;
The low byte specifies the number of animation frames minus one, so 00 means 1 frame, 01 means 2 frames etc. The maximum number of frames is 256, although you can have some problems if your animation exceeds FD (253) frames. The high byte must be 0 for non-looping animations and 01 for looping animations. Every other value is reserved for future use. In addition, if the whole word contains FFFF, animation is turned off for this station (this is the default value).&lt;br /&gt;
Since you can&#039;t have properties for individual station tiles, this property applies for every tile of the station. If you don&#039;t want to animate some tiles, you should check the current position during [[Callbacks#Animation control (1B/25/140/152/159)|callback 140]] and return FD if the current tile doesn&#039;t need to be animated. If you also need animations of different length per tile, you&#039;ll have to use [[Callbacks#Next animation frame (1A/26/141/153/158)|callback 141]] for that.&lt;br /&gt;
&lt;br /&gt;
=== Animation speed (0F) ===&lt;br /&gt;
The meaning is the same as for [[Action0Houses#Animation Speed 1B|house property 1B]], but the lower limit is 0 instead of 2, so the fastest possible animation changes frames every game tick (27ms). The default value is 2.&lt;br /&gt;
&lt;br /&gt;
=== Animation triggers (10) ===&lt;br /&gt;
This is a bit mask of events that should trigger [[Callbacks#Animation control (1B/25/140/152/159)|callback 140]], allowing to change the animation state&lt;br /&gt;
&lt;br /&gt;
=== Callback flags (11) ===&lt;br /&gt;
For road stops, the following [[callbacks]] can be defined by setting the corresponding bit in property 0B:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Variable 0C value!!Callback&lt;br /&gt;
|-&lt;br /&gt;
|0||1||13||Whether to make the road stop available in construction window (non-zero callback return) or not (callback returns zero)&lt;br /&gt;
|-&lt;br /&gt;
|1||2||141||Decide next animation frame&lt;br /&gt;
|-&lt;br /&gt;
|2||4||142||Decide animation speed&lt;br /&gt;
|}&lt;br /&gt;
Bit is the bit you have to set, you do this by adding all the values for all the bits. Variable 0C value is what variable 0C will be set to, for checking it in the [[VariationalAction2|VarAction2]] for callbacks.&lt;br /&gt;
&lt;br /&gt;
=== General Flags (12) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||1||[[Callbacks#Next animation frame (1A/26/141/153/158)|callback 141]] needs random bits in var. 10&lt;br /&gt;
|-&lt;br /&gt;
|2||4||Do not show catenary graphics&lt;br /&gt;
|-&lt;br /&gt;
|3||8||Only allow drive-through stops (not bay stops)&lt;br /&gt;
|-&lt;br /&gt;
|4||10||Do not automatically build connecting road pieces&lt;br /&gt;
|-&lt;br /&gt;
|5||20||Only show in the road build menu (not tram)&lt;br /&gt;
|-&lt;br /&gt;
|6||40||Only show in the tram build menu (not road)&lt;br /&gt;
|-&lt;br /&gt;
|8||100||{{ottdp|15}} Read the draw mode from register 0x100, overriding the default value in property 0C&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default value is 0 (no bits set).&lt;br /&gt;
&lt;br /&gt;
The remaining bits are reserved for future use.&lt;br /&gt;
&lt;br /&gt;
=== Cost multipiers (15) ===&lt;br /&gt;
&lt;br /&gt;
The first byte is the build cost multiplier.&lt;br /&gt;
&lt;br /&gt;
The second byte is the removal cost multiplier.&lt;br /&gt;
&lt;br /&gt;
The total property length is 2 bytes.&lt;br /&gt;
&lt;br /&gt;
A value of 16 produces a build or removal cost the same as non-NewGRF road stops.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Road_Stops&amp;diff=4803</id>
		<title>Action0/Road Stops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Road_Stops&amp;diff=4803"/>
		<updated>2024-06-15T22:40:28Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Adjust text for road stop classes starting with 0xFF&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Defining properties of road stops.&lt;br /&gt;
&lt;br /&gt;
Road stop IDs may be freely chosen. In action 0, you need only specify IDs relative to the set, i.e. the ID of the first road stop type is 00, the second road type is 01 and so on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OpenTTD supports 64000 road stops per game, and 64000 road stop IDs per GRF file.&lt;br /&gt;
&lt;br /&gt;
The property you &#039;&#039;&#039;must&#039;&#039;&#039; set for each road stop ID is 08 (in addition to defining an action 3 for it). Also, all road stop IDs must get their classes in the right order, starting from ID 00 onwards.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{|&lt;br /&gt;
!Number!![[GRFActionsDetailed|Size]]!!Version!!Description&lt;br /&gt;
|-&lt;br /&gt;
|08||D||{{ottdp|14}}||Class label, see below&lt;br /&gt;
|-&lt;br /&gt;
|09||B||{{ottdp|14}}||Road stop type&lt;br /&gt;
|-&lt;br /&gt;
|0A||W||{{ottdp|14}}||Road stop name text ID&lt;br /&gt;
|-&lt;br /&gt;
|0B||W||{{ottdp|14}}||Class name text ID&lt;br /&gt;
|-&lt;br /&gt;
|0C||B||{{ottdp|14}}||Draw mode&lt;br /&gt;
|-&lt;br /&gt;
|0D||D||{{ottdp|14}}||Random trigger cargoes&lt;br /&gt;
|-&lt;br /&gt;
|0E||W||{{ottdp|14}}||Animation information&lt;br /&gt;
|-&lt;br /&gt;
|0F||B||{{ottdp|14}}||Animation speed&lt;br /&gt;
|-&lt;br /&gt;
|10||W||{{ottdp|14}}||Animation triggers&lt;br /&gt;
|-&lt;br /&gt;
|11||B||{{ottdp|14}}||Callback flags, see below&lt;br /&gt;
|-&lt;br /&gt;
|12||D||{{ottdp|14}}||General flags, see below&lt;br /&gt;
|-&lt;br /&gt;
|15||W||{{ottdp|14}}||Cost multipiers, see below&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Descriptions ==&lt;br /&gt;
&lt;br /&gt;
=== Road stop class (08) ===&lt;br /&gt;
&lt;br /&gt;
New road stops are grouped graphics into classes.&lt;br /&gt;
&lt;br /&gt;
Only two classes are pre-defined:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Name!!Class ID!!Intended use for road stops&lt;br /&gt;
|-&lt;br /&gt;
|DFLT||44 46 4C 54||Default road stops&lt;br /&gt;
|-&lt;br /&gt;
|WAYP||57 41 59 50||{{ottdp|15}} Road waypoints&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ottdp|15}} Road stop classes which start with the byte FF are considered road waypoint classes, and will appear in the road waypoint construction window instead of the road bus/truck stop construction windows.&lt;br /&gt;
&lt;br /&gt;
It is recommended that the class identifier used is unique to your GRF(s).&lt;br /&gt;
&lt;br /&gt;
=== Road stop type (09) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||Passenger/bus stop&lt;br /&gt;
|-&lt;br /&gt;
|1||Freight/lorry stop&lt;br /&gt;
|-&lt;br /&gt;
|2||Both passenger/bus and freight/lorry stops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default value is 2: Both passenger/bus and freight/lorry stops&lt;br /&gt;
&lt;br /&gt;
=== Road stop name text ID (0A) ===&lt;br /&gt;
&lt;br /&gt;
The text ID for this road stop (word value). This textid should be either a TTD textid or a D4xx textid (set via D0xx in action4).&lt;br /&gt;
&lt;br /&gt;
=== Class name text ID (0B) ===&lt;br /&gt;
&lt;br /&gt;
The text ID for the road stop class.&lt;br /&gt;
&lt;br /&gt;
When specifying a road stop, you don&#039;t need to set a class name again if you already did for another one with the same class.&lt;br /&gt;
&lt;br /&gt;
=== Draw mode (0C) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||1||Bay stops: Draw road type ground sprite&lt;br /&gt;
|-&lt;br /&gt;
|1||2||Drive through stops: Draw road/tram type overlays&lt;br /&gt;
|-&lt;br /&gt;
|1||2||{{ottdp|15}} Road waypoints: Draw the sprite layout ground tile (on top of the road)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default value is 3 (bits 0 and 1 both set).&lt;br /&gt;
&lt;br /&gt;
The remaining bits are reserved for future use.&lt;br /&gt;
&lt;br /&gt;
=== Cargo types for random triggers (0D) ===&lt;br /&gt;
&lt;br /&gt;
This sets which cargo types should trigger re-randomizing. The cargo types are given as a bitmask of the bits from column 3 (type B) in CargoTypes. &amp;amp;nbsp;If nothing is set (the default), the no random triggers will happen, to conserve CPU time.&lt;br /&gt;
&lt;br /&gt;
With GRF version 7 and above, the interpretation of bits changes. Instead of climate-dependent cargo slot numbers (type B), you have to set the bits of climate-independent cargo ID (type A).&lt;br /&gt;
&lt;br /&gt;
=== Animation information (0E) ===&lt;br /&gt;
&lt;br /&gt;
The low byte specifies the number of animation frames minus one, so 00 means 1 frame, 01 means 2 frames etc. The maximum number of frames is 256, although you can have some problems if your animation exceeds FD (253) frames. The high byte must be 0 for non-looping animations and 01 for looping animations. Every other value is reserved for future use. In addition, if the whole word contains FFFF, animation is turned off for this station (this is the default value).&lt;br /&gt;
Since you can&#039;t have properties for individual station tiles, this property applies for every tile of the station. If you don&#039;t want to animate some tiles, you should check the current position during [[Callbacks#Animation control (1B/25/140/152/159)|callback 140]] and return FD if the current tile doesn&#039;t need to be animated. If you also need animations of different length per tile, you&#039;ll have to use [[Callbacks#Next animation frame (1A/26/141/153/158)|callback 141]] for that.&lt;br /&gt;
&lt;br /&gt;
=== Animation speed (0F) ===&lt;br /&gt;
The meaning is the same as for [[Action0Houses#Animation Speed 1B|house property 1B]], but the lower limit is 0 instead of 2, so the fastest possible animation changes frames every game tick (27ms). The default value is 2.&lt;br /&gt;
&lt;br /&gt;
=== Animation triggers (10) ===&lt;br /&gt;
This is a bit mask of events that should trigger [[Callbacks#Animation control (1B/25/140/152/159)|callback 140]], allowing to change the animation state&lt;br /&gt;
&lt;br /&gt;
=== Callback flags (11) ===&lt;br /&gt;
For road stops, the following [[callbacks]] can be defined by setting the corresponding bit in property 0B:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Variable 0C value!!Callback&lt;br /&gt;
|-&lt;br /&gt;
|0||1||13||Whether to make the road stop available in construction window (non-zero callback return) or not (callback returns zero)&lt;br /&gt;
|-&lt;br /&gt;
|1||2||141||Decide next animation frame&lt;br /&gt;
|-&lt;br /&gt;
|2||4||142||Decide animation speed&lt;br /&gt;
|}&lt;br /&gt;
Bit is the bit you have to set, you do this by adding all the values for all the bits. Variable 0C value is what variable 0C will be set to, for checking it in the [[VariationalAction2|VarAction2]] for callbacks.&lt;br /&gt;
&lt;br /&gt;
=== General Flags (12) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||1||[[Callbacks#Next animation frame (1A/26/141/153/158)|callback 141]] needs random bits in var. 10&lt;br /&gt;
|-&lt;br /&gt;
|2||4||Do not show catenary graphics&lt;br /&gt;
|-&lt;br /&gt;
|3||8||Only allow drive-through stops (not bay stops)&lt;br /&gt;
|-&lt;br /&gt;
|4||10||Do not automatically build connecting road pieces&lt;br /&gt;
|-&lt;br /&gt;
|5||20||Only show in the road build menu (not tram)&lt;br /&gt;
|-&lt;br /&gt;
|6||40||Only show in the tram build menu (not road)&lt;br /&gt;
|-&lt;br /&gt;
|8||100||{{ottdp|15}} Read the draw mode from register 0x100, overriding the default value in property 0C&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default value is 0 (no bits set).&lt;br /&gt;
&lt;br /&gt;
The remaining bits are reserved for future use.&lt;br /&gt;
&lt;br /&gt;
=== Cost multipiers (15) ===&lt;br /&gt;
&lt;br /&gt;
The first byte is the build cost multiplier.&lt;br /&gt;
&lt;br /&gt;
The second byte is the removal cost multiplier.&lt;br /&gt;
&lt;br /&gt;
The total property length is 2 bytes.&lt;br /&gt;
&lt;br /&gt;
A value of 16 produces a build or removal cost the same as non-NewGRF road stops.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Roadstops&amp;diff=4791</id>
		<title>NML:Roadstops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Roadstops&amp;diff=4791"/>
		<updated>2024-05-03T20:56:33Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add road stop callbacks and animation triggers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
Road stops can only be defined in OpenTTD {{ottd|14.0}} or later. &lt;br /&gt;
&lt;br /&gt;
==Road stop IDs==&lt;br /&gt;
OpenTTD supports 64000 road stop types per game.&lt;br /&gt;
&lt;br /&gt;
Rpad stop IDs are NewGRF-local and can therefore freely be chosen within the ID ranges. &lt;br /&gt;
&lt;br /&gt;
A road stop is allocated by setting the &#039;class&#039;-property, which should therefore be set first.&lt;br /&gt;
&lt;br /&gt;
==Road stop properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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;
&#039;&#039;&#039;This property &#039;&#039;must&#039;&#039; be set first, before any other properties or graphics.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Road stops belonging to the same class are grouped in the GUI.&amp;lt;br&amp;gt;&lt;br /&gt;
There is one special class:&lt;br /&gt;
* &amp;quot;WAYP&amp;quot;: {{ottdp|15.0|no}} The road stop type will be shown in the waypoint construction window, instead of the station construction window.&lt;br /&gt;
|-&lt;br /&gt;
| classname&lt;br /&gt;
| string&lt;br /&gt;
| You only need to set this for one road stop in every class.&lt;br /&gt;
|-&lt;br /&gt;
| name&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| availability_type&lt;br /&gt;
| RST_AVAILABILITY_TYPE_XXX&lt;br /&gt;
| XXX = [PASSENGER &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; FREIGHT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ALL]&lt;br /&gt;
The default value is RST_AVAILABILITY_TYPE_ALL&lt;br /&gt;
|-&lt;br /&gt;
| draw_mode&lt;br /&gt;
| bitmask(RST_DRAW_FLAG_XXX, ...)&lt;br /&gt;
| See [[#List of draw mode flags|list of draw mode flags]]&lt;br /&gt;
The default value is bitmask(RST_DRAW_FLAG_BAY_ROAD, RST_DRAW_FLAG_DRIVE_THROUGH_ROAD_OVERLAY)&lt;br /&gt;
|-&lt;br /&gt;
| cargo_random_triggers&lt;br /&gt;
| Array of cargo labels from the [[NML:Cargotable|cargotable]]&lt;br /&gt;
| Cargo types, which will [[NML:Random_switch#Stations|trigger re-randomization]] when delivered, loaded or unloaded at the station.&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;
See [[#Animation_triggers|list of animation triggers]]&lt;br /&gt;
|-&lt;br /&gt;
| general_flags&lt;br /&gt;
| bitmask(RST_GENERAL_FLAG_XXX, ...)&lt;br /&gt;
| See [[#List of general flags|list of general flags]]&lt;br /&gt;
|-&lt;br /&gt;
| cost_multipliers&lt;br /&gt;
| [build_cost, clear_cost]&lt;br /&gt;
| Build and clear cost multipliers, 16 is the same as a non-NewGRF road stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of draw mode flags===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_BAY_ROAD&lt;br /&gt;
| Draw road type ground sprite for bay stops.&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_DRIVE_THROUGH_ROAD_OVERLAY&lt;br /&gt;
| Draw road overlays for drive-through stops.&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_WAYPOINT_GROUND&lt;br /&gt;
| {{ottdp|15.0|no}} Draw spritelayout ground sprite on top of underlying road (if unset, the spritelayout ground sprite is not drawn).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of general flags===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_RANDOM_ANIMATION&lt;br /&gt;
| Animation callback requires random bits in variable extra_callback_info1.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_NO_CATENARY&lt;br /&gt;
| Do not show catenary graphics.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_DRIVE_THROUGH_ONLY&lt;br /&gt;
| Only allow drive-through stops (not bay stops).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_NO_AUTO_ROAD_CONNECTION&lt;br /&gt;
| Do not automatically build connecting road pieces.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_BUILD_MENU_ROAD_ONLY&lt;br /&gt;
| Only show in the road build menu (not tram).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_BUILD_MENU_TRAM_ONLY&lt;br /&gt;
| Only show in the tram build menu (not road).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_DRAW_MODE_REGISTER&lt;br /&gt;
| {{ottdp|15.0|no}} Read the road stop draw mode from variable 0x100 (set using STORE_TEMP), this overrides the draw_mode property.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Road stop variables==&lt;br /&gt;
&lt;br /&gt;
===Base station variables===&lt;br /&gt;
The following variables are shared between road stops, [[NML:Stations|stations]] and [[NML:Airports|airports]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| random_bits_station&lt;br /&gt;
| 0..65535&lt;br /&gt;
| 16 random bits, shared between all station sections (rail station sections, airports, ...)&lt;br /&gt;
|-&lt;br /&gt;
| had_vehicle_of_type&lt;br /&gt;
| bitmask(HAD_VEHICLE_OF_TYPE_XXX, ...)&lt;br /&gt;
| Bitmask of vehicle types that have visited the station. XXX = &amp;lt;nowiki&amp;gt;[TRAIN | BUS | TRUCK | AIRCRAFT | SHIP]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| is_waypoint&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Whether the station is a waypoint&lt;br /&gt;
|-&lt;br /&gt;
| facilities&lt;br /&gt;
| bitmask(FACILITY_XXX, ...)&lt;br /&gt;
| Bitmask of facilities associated with the station. XXX = &amp;lt;nowiki&amp;gt;[TRAIN | TRUCK_STOP | BUS_STOP | AIRPORT | DOCK]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| airport_type&lt;br /&gt;
| AIRPORTTYPE_XXX&lt;br /&gt;
| Type of airport, contains a bogus value if the station has no airport. XXX = &amp;lt;nowiki&amp;gt;[SMALL | LARGE | HELIPORT | OILRIG]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| build_date&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;
| Date when the station was built. Is clamped to the 1920-2099 range.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following variables are also shared with [[NML:Stations|stations]] and [[NML:Airports|airports]]. They all require a single argument: a cargo type from your [[NML:Cargotable|cargo translation table]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| cargo_amount_waiting&lt;br /&gt;
| 0..32767&lt;br /&gt;
| Units of cargo of waiting&lt;br /&gt;
|-&lt;br /&gt;
| cargo_rating&lt;br /&gt;
| 0..100&lt;br /&gt;
| Rating for this cargo type (in %)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| cargo_time_since_pickup&lt;br /&gt;
| 0..255&lt;br /&gt;
| Time since the cargo was last picked up. 1 unit equals 185 ticks, or about 2.5 game days.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_time_en_route&lt;br /&gt;
| 0..255&lt;br /&gt;
| Time this cargo has spent en-route. 1 unit equals 185 ticks, or about 2.5 game days.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_last_vehicle_speed&lt;br /&gt;
| 0..255&lt;br /&gt;
| Speed of the last vehicle picking up this cargo type. The unit depends on the type of vehicle. For trains and road vehicles, one unit is 1 km/h; for ships, it&#039;s 0.5 km/h; for aircraft, it&#039;s 8 mph. If the max. speed is above 255 speed units, 255 is used instead. 0 if no vehicle as picked up the cargo type yet.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_last_vehicle_age&lt;br /&gt;
| 0..255&lt;br /&gt;
| Age of the last vehicle picking up this cargo type, in years. 255 if no vehicle has picked up the cargo type yet.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type is currently being accepted at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_ever&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type has ever been accepted at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_last_month&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted last month at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_this_month&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted this month at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_bigtick&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted at the station since the last periodic processing, which happens every 250 ticks. 0 otherwise.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Variables without a parameter===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| view&lt;br /&gt;
| RST_VIEW_XXX&lt;br /&gt;
| The view/rotation of the road stop. See [[#List of road stop views|list of road stop views]]&lt;br /&gt;
|-&lt;br /&gt;
| stop_type&lt;br /&gt;
| RST_TYPE_XXX&lt;br /&gt;
| XXX = [BUS &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; TRUCK &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; {{ottdp|15}}WAYPOINT]&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;
| has_road&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this road stop has road&lt;br /&gt;
|-&lt;br /&gt;
| has_tram&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this road stop has tram&lt;br /&gt;
|-&lt;br /&gt;
| road_type&lt;br /&gt;
| [Road type &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xFF]&lt;br /&gt;
| Entry from [[NML:Railtypetable|roadtype translation table]], or 0xFF if there is no road&lt;br /&gt;
|-&lt;br /&gt;
| tram_type&lt;br /&gt;
| [Tram type &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xFF]&lt;br /&gt;
| Entry from [[NML:Railtypetable|tramtype translation table]], or 0xFF if there is no tram&lt;br /&gt;
|-&lt;br /&gt;
| animation_frame&lt;br /&gt;
| 0 .. (frame_count - 1)&lt;br /&gt;
| Current animation frame, with the maximum defined in the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;animation_info&amp;lt;/code&amp;gt; property.&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;
| company_num&lt;br /&gt;
| 0 ... 14&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;
| &lt;br /&gt;
;PLAYERTYPE_HUMAN&lt;br /&gt;
:human player&lt;br /&gt;
;PLAYERTYPE_AI&lt;br /&gt;
:AI player&lt;br /&gt;
;PLAYERTYPE_HUMAN_IN_AI&lt;br /&gt;
:human managing AI company&lt;br /&gt;
;PLAYERTYPE_AI_IN_HUMAN&lt;br /&gt;
:AI managing human company&lt;br /&gt;
&lt;br /&gt;
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;
|&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;
|&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;
| random_bits_tile&lt;br /&gt;
| 0..255&lt;br /&gt;
| 8 random bits, specific to this road stop tile.&lt;br /&gt;
|-&lt;br /&gt;
| waiting_triggers&lt;br /&gt;
| 0..255&lt;br /&gt;
| Random triggers waiting to be matched. (see [[NML:Random switch|Random switch]])&lt;br /&gt;
|-&lt;br /&gt;
| drawn_in_gui&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| {{ottdp|15}} 1 if this road stop is being drawn in the build window&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;wikitable sortable&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_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_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. Only valid for tiles of the same object.&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_is_road_stop&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the given tile a road stop?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_road_stop_id&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
|&lt;br /&gt;
| Is nearby_tile_same_grf is true, ID of a road stop on a nearby tile&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_same_grf&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile defined by the same GRF?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_other_grf&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile defined by another GRF?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_original_gfx&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile using original graphics?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_same_station&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile the same station as this?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_view&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| RST_VIEW_XXX&lt;br /&gt;
| The view/rotation of a nearby road stop tile. See [[#List of road stop views|list of road stop views]]&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_different_view&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the view/rotation of a road stop on a nearby tile different to that of this tile?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_is_drive_through&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is nearby road stop tile a drive-through road stop?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_stop_type&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| RST_TYPE_XXX&lt;br /&gt;
| Road stop type of a nearby tile. See stop_type&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_same_stop_type&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the stop type of a nearby road stop tile the same as this tile?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_grfid&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| [0xFFFFFFFF &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; GRFID]&lt;br /&gt;
| 0xFFFFFFFF if the nearby tile is not a road stop, 0 if the nearby tile is a non-custom road stop, or else the GRFID of the NewGRF defining the road stop on the nearby tile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of road stop views===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Type&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_NE&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing north-east&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_SE&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing south-east&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_SW&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing south-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_NW&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing north-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_DRIVE_THROUGH_X&lt;br /&gt;
| Drive-through&lt;br /&gt;
| X-axis: north-east to south-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_DRIVE_THROUGH_Y&lt;br /&gt;
| Drive-through&lt;br /&gt;
| Y-axis: north-west to south-east&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Road stop callbacks==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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 a road stop placed on the map&lt;br /&gt;
|-&lt;br /&gt;
| purchase &amp;lt;ref name=&amp;quot;notyetbuilt&amp;quot;&amp;gt;These callbacks are called when the road stop is not yet built&amp;lt;/ref&amp;gt;&lt;br /&gt;
| Sprite layout&lt;br /&gt;
| Graphics shown in the build menu&lt;br /&gt;
|-&lt;br /&gt;
| availability&lt;br /&gt;
| 0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1&lt;br /&gt;
| Whether this road stop type is available in the build menu, 1 is available, 0 is unavailable&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. 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;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt;: 32 random bits, if the object flag OBJ_FLAG_RANDOM_ANIMATION is set.&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. Returning a sound effect in the high byte will cause that sound effect to be played.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt;: 32 random bits, if the object flag OBJ_FLAG_RANDOM_ANIMATION is set.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;getbits(extra_callback_info2, 0, 8)&amp;lt;/code&amp;gt;: Reason for the callback trigger, see the [[#Animation triggers| table]] below.&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;
&lt;br /&gt;
&lt;br /&gt;
===Animation triggers===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Animation trigger&lt;br /&gt;
! Description&lt;br /&gt;
! Happens on&lt;br /&gt;
! extra_callback_info2&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_BUILT&lt;br /&gt;
| Road stop is built&lt;br /&gt;
| Newly built tile&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_NEW_CARGO&lt;br /&gt;
| New cargo arrives at station&lt;br /&gt;
| All tiles&lt;br /&gt;
| Bits 8..15 contain the triggering cargo type&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_CARGO_TAKEN&lt;br /&gt;
| CRGO removed from station&lt;br /&gt;
| All tiles&lt;br /&gt;
| Bits 8..15 contain the triggering cargo type&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_VEH_ENTER&lt;br /&gt;
| Road vehicle enters stop (starts loading/unloading)&lt;br /&gt;
| Tile where the vehicle is	&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_VEH_LEAVE&lt;br /&gt;
| Road vehicle leaves stop (done loading/unloading)&lt;br /&gt;
| Tile where the vehicle is	&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_VEH_LOAD&lt;br /&gt;
| Road vehicle loads/unloads cargo&lt;br /&gt;
| Tile where the vehicle is	&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ANIM_TRIGGER_ROAD_STOP_250_TICKS&lt;br /&gt;
| Every 250 ticks&lt;br /&gt;
| All tiles&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Roadstops&amp;diff=4790</id>
		<title>NML:Roadstops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Roadstops&amp;diff=4790"/>
		<updated>2024-05-03T20:41:54Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add drawn_in_gui road stop variable&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
Road stops can only be defined in OpenTTD {{ottd|14.0}} or later. &lt;br /&gt;
&lt;br /&gt;
==Road stop IDs==&lt;br /&gt;
OpenTTD supports 64000 road stop types per game.&lt;br /&gt;
&lt;br /&gt;
Rpad stop IDs are NewGRF-local and can therefore freely be chosen within the ID ranges. &lt;br /&gt;
&lt;br /&gt;
A road stop is allocated by setting the &#039;class&#039;-property, which should therefore be set first.&lt;br /&gt;
&lt;br /&gt;
==Road stop properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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;
&#039;&#039;&#039;This property &#039;&#039;must&#039;&#039; be set first, before any other properties or graphics.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Road stops belonging to the same class are grouped in the GUI.&amp;lt;br&amp;gt;&lt;br /&gt;
There is one special class:&lt;br /&gt;
* &amp;quot;WAYP&amp;quot;: {{ottdp|15.0|no}} The road stop type will be shown in the waypoint construction window, instead of the station construction window.&lt;br /&gt;
|-&lt;br /&gt;
| classname&lt;br /&gt;
| string&lt;br /&gt;
| You only need to set this for one road stop in every class.&lt;br /&gt;
|-&lt;br /&gt;
| name&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| availability_type&lt;br /&gt;
| RST_AVAILABILITY_TYPE_XXX&lt;br /&gt;
| XXX = [PASSENGER &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; FREIGHT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ALL]&lt;br /&gt;
The default value is RST_AVAILABILITY_TYPE_ALL&lt;br /&gt;
|-&lt;br /&gt;
| draw_mode&lt;br /&gt;
| bitmask(RST_DRAW_FLAG_XXX, ...)&lt;br /&gt;
| See [[#List of draw mode flags|list of draw mode flags]]&lt;br /&gt;
The default value is bitmask(RST_DRAW_FLAG_BAY_ROAD, RST_DRAW_FLAG_DRIVE_THROUGH_ROAD_OVERLAY)&lt;br /&gt;
|-&lt;br /&gt;
| cargo_random_triggers&lt;br /&gt;
| Array of cargo labels from the [[NML:Cargotable|cargotable]]&lt;br /&gt;
| Cargo types, which will [[NML:Random_switch#Stations|trigger re-randomization]] when delivered, loaded or unloaded at the station.&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;
See [[#Animation_triggers|list of animation triggers]]&lt;br /&gt;
|-&lt;br /&gt;
| general_flags&lt;br /&gt;
| bitmask(RST_GENERAL_FLAG_XXX, ...)&lt;br /&gt;
| See [[#List of general flags|list of general flags]]&lt;br /&gt;
|-&lt;br /&gt;
| cost_multipliers&lt;br /&gt;
| [build_cost, clear_cost]&lt;br /&gt;
| Build and clear cost multipliers, 16 is the same as a non-NewGRF road stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of draw mode flags===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_BAY_ROAD&lt;br /&gt;
| Draw road type ground sprite for bay stops.&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_DRIVE_THROUGH_ROAD_OVERLAY&lt;br /&gt;
| Draw road overlays for drive-through stops.&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_WAYPOINT_GROUND&lt;br /&gt;
| {{ottdp|15.0|no}} Draw spritelayout ground sprite on top of underlying road (if unset, the spritelayout ground sprite is not drawn).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of general flags===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_RANDOM_ANIMATION&lt;br /&gt;
| Animation callback requires random bits in variable extra_callback_info1.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_NO_CATENARY&lt;br /&gt;
| Do not show catenary graphics.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_DRIVE_THROUGH_ONLY&lt;br /&gt;
| Only allow drive-through stops (not bay stops).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_NO_AUTO_ROAD_CONNECTION&lt;br /&gt;
| Do not automatically build connecting road pieces.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_BUILD_MENU_ROAD_ONLY&lt;br /&gt;
| Only show in the road build menu (not tram).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_BUILD_MENU_TRAM_ONLY&lt;br /&gt;
| Only show in the tram build menu (not road).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_DRAW_MODE_REGISTER&lt;br /&gt;
| {{ottdp|15.0|no}} Read the road stop draw mode from variable 0x100 (set using STORE_TEMP), this overrides the draw_mode property.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Road stop variables==&lt;br /&gt;
&lt;br /&gt;
===Base station variables===&lt;br /&gt;
The following variables are shared between road stops, [[NML:Stations|stations]] and [[NML:Airports|airports]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| random_bits_station&lt;br /&gt;
| 0..65535&lt;br /&gt;
| 16 random bits, shared between all station sections (rail station sections, airports, ...)&lt;br /&gt;
|-&lt;br /&gt;
| had_vehicle_of_type&lt;br /&gt;
| bitmask(HAD_VEHICLE_OF_TYPE_XXX, ...)&lt;br /&gt;
| Bitmask of vehicle types that have visited the station. XXX = &amp;lt;nowiki&amp;gt;[TRAIN | BUS | TRUCK | AIRCRAFT | SHIP]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| is_waypoint&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Whether the station is a waypoint&lt;br /&gt;
|-&lt;br /&gt;
| facilities&lt;br /&gt;
| bitmask(FACILITY_XXX, ...)&lt;br /&gt;
| Bitmask of facilities associated with the station. XXX = &amp;lt;nowiki&amp;gt;[TRAIN | TRUCK_STOP | BUS_STOP | AIRPORT | DOCK]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| airport_type&lt;br /&gt;
| AIRPORTTYPE_XXX&lt;br /&gt;
| Type of airport, contains a bogus value if the station has no airport. XXX = &amp;lt;nowiki&amp;gt;[SMALL | LARGE | HELIPORT | OILRIG]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| build_date&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;
| Date when the station was built. Is clamped to the 1920-2099 range.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following variables are also shared with [[NML:Stations|stations]] and [[NML:Airports|airports]]. They all require a single argument: a cargo type from your [[NML:Cargotable|cargo translation table]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| cargo_amount_waiting&lt;br /&gt;
| 0..32767&lt;br /&gt;
| Units of cargo of waiting&lt;br /&gt;
|-&lt;br /&gt;
| cargo_rating&lt;br /&gt;
| 0..100&lt;br /&gt;
| Rating for this cargo type (in %)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| cargo_time_since_pickup&lt;br /&gt;
| 0..255&lt;br /&gt;
| Time since the cargo was last picked up. 1 unit equals 185 ticks, or about 2.5 game days.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_time_en_route&lt;br /&gt;
| 0..255&lt;br /&gt;
| Time this cargo has spent en-route. 1 unit equals 185 ticks, or about 2.5 game days.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_last_vehicle_speed&lt;br /&gt;
| 0..255&lt;br /&gt;
| Speed of the last vehicle picking up this cargo type. The unit depends on the type of vehicle. For trains and road vehicles, one unit is 1 km/h; for ships, it&#039;s 0.5 km/h; for aircraft, it&#039;s 8 mph. If the max. speed is above 255 speed units, 255 is used instead. 0 if no vehicle as picked up the cargo type yet.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_last_vehicle_age&lt;br /&gt;
| 0..255&lt;br /&gt;
| Age of the last vehicle picking up this cargo type, in years. 255 if no vehicle has picked up the cargo type yet.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type is currently being accepted at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_ever&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type has ever been accepted at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_last_month&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted last month at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_this_month&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted this month at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_bigtick&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted at the station since the last periodic processing, which happens every 250 ticks. 0 otherwise.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Variables without a parameter===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| view&lt;br /&gt;
| RST_VIEW_XXX&lt;br /&gt;
| The view/rotation of the road stop. See [[#List of road stop views|list of road stop views]]&lt;br /&gt;
|-&lt;br /&gt;
| stop_type&lt;br /&gt;
| RST_TYPE_XXX&lt;br /&gt;
| XXX = [BUS &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; TRUCK &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; {{ottdp|15}}WAYPOINT]&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;
| has_road&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this road stop has road&lt;br /&gt;
|-&lt;br /&gt;
| has_tram&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this road stop has tram&lt;br /&gt;
|-&lt;br /&gt;
| road_type&lt;br /&gt;
| [Road type &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xFF]&lt;br /&gt;
| Entry from [[NML:Railtypetable|roadtype translation table]], or 0xFF if there is no road&lt;br /&gt;
|-&lt;br /&gt;
| tram_type&lt;br /&gt;
| [Tram type &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xFF]&lt;br /&gt;
| Entry from [[NML:Railtypetable|tramtype translation table]], or 0xFF if there is no tram&lt;br /&gt;
|-&lt;br /&gt;
| animation_frame&lt;br /&gt;
| 0 .. (frame_count - 1)&lt;br /&gt;
| Current animation frame, with the maximum defined in the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;animation_info&amp;lt;/code&amp;gt; property.&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;
| company_num&lt;br /&gt;
| 0 ... 14&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;
| &lt;br /&gt;
;PLAYERTYPE_HUMAN&lt;br /&gt;
:human player&lt;br /&gt;
;PLAYERTYPE_AI&lt;br /&gt;
:AI player&lt;br /&gt;
;PLAYERTYPE_HUMAN_IN_AI&lt;br /&gt;
:human managing AI company&lt;br /&gt;
;PLAYERTYPE_AI_IN_HUMAN&lt;br /&gt;
:AI managing human company&lt;br /&gt;
&lt;br /&gt;
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;
|&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;
|&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;
| random_bits_tile&lt;br /&gt;
| 0..255&lt;br /&gt;
| 8 random bits, specific to this road stop tile.&lt;br /&gt;
|-&lt;br /&gt;
| waiting_triggers&lt;br /&gt;
| 0..255&lt;br /&gt;
| Random triggers waiting to be matched. (see [[NML:Random switch|Random switch]])&lt;br /&gt;
|-&lt;br /&gt;
| drawn_in_gui&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| {{ottdp|15}} 1 if this road stop is being drawn in the build window&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;wikitable sortable&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_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_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. Only valid for tiles of the same object.&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_is_road_stop&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the given tile a road stop?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_road_stop_id&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
|&lt;br /&gt;
| Is nearby_tile_same_grf is true, ID of a road stop on a nearby tile&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_same_grf&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile defined by the same GRF?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_other_grf&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile defined by another GRF?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_original_gfx&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile using original graphics?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_same_station&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile the same station as this?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_view&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| RST_VIEW_XXX&lt;br /&gt;
| The view/rotation of a nearby road stop tile. See [[#List of road stop views|list of road stop views]]&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_different_view&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the view/rotation of a road stop on a nearby tile different to that of this tile?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_is_drive_through&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is nearby road stop tile a drive-through road stop?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_stop_type&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| RST_TYPE_XXX&lt;br /&gt;
| Road stop type of a nearby tile. See stop_type&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_same_stop_type&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the stop type of a nearby road stop tile the same as this tile?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_grfid&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| [0xFFFFFFFF &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; GRFID]&lt;br /&gt;
| 0xFFFFFFFF if the nearby tile is not a road stop, 0 if the nearby tile is a non-custom road stop, or else the GRFID of the NewGRF defining the road stop on the nearby tile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of road stop views===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Type&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_NE&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing north-east&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_SE&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing south-east&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_SW&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing south-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_NW&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing north-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_DRIVE_THROUGH_X&lt;br /&gt;
| Drive-through&lt;br /&gt;
| X-axis: north-east to south-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_DRIVE_THROUGH_Y&lt;br /&gt;
| Drive-through&lt;br /&gt;
| Y-axis: north-west to south-east&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Roadstops&amp;diff=4789</id>
		<title>NML:Roadstops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Roadstops&amp;diff=4789"/>
		<updated>2024-05-03T20:38:29Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add road stop parameterised variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
Road stops can only be defined in OpenTTD {{ottd|14.0}} or later. &lt;br /&gt;
&lt;br /&gt;
==Road stop IDs==&lt;br /&gt;
OpenTTD supports 64000 road stop types per game.&lt;br /&gt;
&lt;br /&gt;
Rpad stop IDs are NewGRF-local and can therefore freely be chosen within the ID ranges. &lt;br /&gt;
&lt;br /&gt;
A road stop is allocated by setting the &#039;class&#039;-property, which should therefore be set first.&lt;br /&gt;
&lt;br /&gt;
==Road stop properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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;
&#039;&#039;&#039;This property &#039;&#039;must&#039;&#039; be set first, before any other properties or graphics.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Road stops belonging to the same class are grouped in the GUI.&amp;lt;br&amp;gt;&lt;br /&gt;
There is one special class:&lt;br /&gt;
* &amp;quot;WAYP&amp;quot;: {{ottdp|15.0|no}} The road stop type will be shown in the waypoint construction window, instead of the station construction window.&lt;br /&gt;
|-&lt;br /&gt;
| classname&lt;br /&gt;
| string&lt;br /&gt;
| You only need to set this for one road stop in every class.&lt;br /&gt;
|-&lt;br /&gt;
| name&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| availability_type&lt;br /&gt;
| RST_AVAILABILITY_TYPE_XXX&lt;br /&gt;
| XXX = [PASSENGER &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; FREIGHT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ALL]&lt;br /&gt;
The default value is RST_AVAILABILITY_TYPE_ALL&lt;br /&gt;
|-&lt;br /&gt;
| draw_mode&lt;br /&gt;
| bitmask(RST_DRAW_FLAG_XXX, ...)&lt;br /&gt;
| See [[#List of draw mode flags|list of draw mode flags]]&lt;br /&gt;
The default value is bitmask(RST_DRAW_FLAG_BAY_ROAD, RST_DRAW_FLAG_DRIVE_THROUGH_ROAD_OVERLAY)&lt;br /&gt;
|-&lt;br /&gt;
| cargo_random_triggers&lt;br /&gt;
| Array of cargo labels from the [[NML:Cargotable|cargotable]]&lt;br /&gt;
| Cargo types, which will [[NML:Random_switch#Stations|trigger re-randomization]] when delivered, loaded or unloaded at the station.&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;
See [[#Animation_triggers|list of animation triggers]]&lt;br /&gt;
|-&lt;br /&gt;
| general_flags&lt;br /&gt;
| bitmask(RST_GENERAL_FLAG_XXX, ...)&lt;br /&gt;
| See [[#List of general flags|list of general flags]]&lt;br /&gt;
|-&lt;br /&gt;
| cost_multipliers&lt;br /&gt;
| [build_cost, clear_cost]&lt;br /&gt;
| Build and clear cost multipliers, 16 is the same as a non-NewGRF road stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of draw mode flags===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_BAY_ROAD&lt;br /&gt;
| Draw road type ground sprite for bay stops.&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_DRIVE_THROUGH_ROAD_OVERLAY&lt;br /&gt;
| Draw road overlays for drive-through stops.&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_WAYPOINT_GROUND&lt;br /&gt;
| {{ottdp|15.0|no}} Draw spritelayout ground sprite on top of underlying road (if unset, the spritelayout ground sprite is not drawn).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of general flags===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_RANDOM_ANIMATION&lt;br /&gt;
| Animation callback requires random bits in variable extra_callback_info1.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_NO_CATENARY&lt;br /&gt;
| Do not show catenary graphics.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_DRIVE_THROUGH_ONLY&lt;br /&gt;
| Only allow drive-through stops (not bay stops).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_NO_AUTO_ROAD_CONNECTION&lt;br /&gt;
| Do not automatically build connecting road pieces.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_BUILD_MENU_ROAD_ONLY&lt;br /&gt;
| Only show in the road build menu (not tram).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_BUILD_MENU_TRAM_ONLY&lt;br /&gt;
| Only show in the tram build menu (not road).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_DRAW_MODE_REGISTER&lt;br /&gt;
| {{ottdp|15.0|no}} Read the road stop draw mode from variable 0x100 (set using STORE_TEMP), this overrides the draw_mode property.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Road stop variables==&lt;br /&gt;
&lt;br /&gt;
===Base station variables===&lt;br /&gt;
The following variables are shared between road stops, [[NML:Stations|stations]] and [[NML:Airports|airports]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| random_bits_station&lt;br /&gt;
| 0..65535&lt;br /&gt;
| 16 random bits, shared between all station sections (rail station sections, airports, ...)&lt;br /&gt;
|-&lt;br /&gt;
| had_vehicle_of_type&lt;br /&gt;
| bitmask(HAD_VEHICLE_OF_TYPE_XXX, ...)&lt;br /&gt;
| Bitmask of vehicle types that have visited the station. XXX = &amp;lt;nowiki&amp;gt;[TRAIN | BUS | TRUCK | AIRCRAFT | SHIP]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| is_waypoint&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Whether the station is a waypoint&lt;br /&gt;
|-&lt;br /&gt;
| facilities&lt;br /&gt;
| bitmask(FACILITY_XXX, ...)&lt;br /&gt;
| Bitmask of facilities associated with the station. XXX = &amp;lt;nowiki&amp;gt;[TRAIN | TRUCK_STOP | BUS_STOP | AIRPORT | DOCK]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| airport_type&lt;br /&gt;
| AIRPORTTYPE_XXX&lt;br /&gt;
| Type of airport, contains a bogus value if the station has no airport. XXX = &amp;lt;nowiki&amp;gt;[SMALL | LARGE | HELIPORT | OILRIG]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| build_date&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;
| Date when the station was built. Is clamped to the 1920-2099 range.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following variables are also shared with [[NML:Stations|stations]] and [[NML:Airports|airports]]. They all require a single argument: a cargo type from your [[NML:Cargotable|cargo translation table]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| cargo_amount_waiting&lt;br /&gt;
| 0..32767&lt;br /&gt;
| Units of cargo of waiting&lt;br /&gt;
|-&lt;br /&gt;
| cargo_rating&lt;br /&gt;
| 0..100&lt;br /&gt;
| Rating for this cargo type (in %)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| cargo_time_since_pickup&lt;br /&gt;
| 0..255&lt;br /&gt;
| Time since the cargo was last picked up. 1 unit equals 185 ticks, or about 2.5 game days.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_time_en_route&lt;br /&gt;
| 0..255&lt;br /&gt;
| Time this cargo has spent en-route. 1 unit equals 185 ticks, or about 2.5 game days.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_last_vehicle_speed&lt;br /&gt;
| 0..255&lt;br /&gt;
| Speed of the last vehicle picking up this cargo type. The unit depends on the type of vehicle. For trains and road vehicles, one unit is 1 km/h; for ships, it&#039;s 0.5 km/h; for aircraft, it&#039;s 8 mph. If the max. speed is above 255 speed units, 255 is used instead. 0 if no vehicle as picked up the cargo type yet.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_last_vehicle_age&lt;br /&gt;
| 0..255&lt;br /&gt;
| Age of the last vehicle picking up this cargo type, in years. 255 if no vehicle has picked up the cargo type yet.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type is currently being accepted at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_ever&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type has ever been accepted at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_last_month&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted last month at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_this_month&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted this month at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_bigtick&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted at the station since the last periodic processing, which happens every 250 ticks. 0 otherwise.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Variables without a parameter===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| view&lt;br /&gt;
| RST_VIEW_XXX&lt;br /&gt;
| The view/rotation of the road stop. See [[#List of road stop views|list of road stop views]]&lt;br /&gt;
|-&lt;br /&gt;
| stop_type&lt;br /&gt;
| RST_TYPE_XXX&lt;br /&gt;
| XXX = [BUS &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; TRUCK &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; {{ottdp|15}}WAYPOINT]&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;
| has_road&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this road stop has road&lt;br /&gt;
|-&lt;br /&gt;
| has_tram&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this road stop has tram&lt;br /&gt;
|-&lt;br /&gt;
| road_type&lt;br /&gt;
| [Road type &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xFF]&lt;br /&gt;
| Entry from [[NML:Railtypetable|roadtype translation table]], or 0xFF if there is no road&lt;br /&gt;
|-&lt;br /&gt;
| tram_type&lt;br /&gt;
| [Tram type &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xFF]&lt;br /&gt;
| Entry from [[NML:Railtypetable|tramtype translation table]], or 0xFF if there is no tram&lt;br /&gt;
|-&lt;br /&gt;
| animation_frame&lt;br /&gt;
| 0 .. (frame_count - 1)&lt;br /&gt;
| Current animation frame, with the maximum defined in the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;animation_info&amp;lt;/code&amp;gt; property.&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;
| company_num&lt;br /&gt;
| 0 ... 14&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;
| &lt;br /&gt;
;PLAYERTYPE_HUMAN&lt;br /&gt;
:human player&lt;br /&gt;
;PLAYERTYPE_AI&lt;br /&gt;
:AI player&lt;br /&gt;
;PLAYERTYPE_HUMAN_IN_AI&lt;br /&gt;
:human managing AI company&lt;br /&gt;
;PLAYERTYPE_AI_IN_HUMAN&lt;br /&gt;
:AI managing human company&lt;br /&gt;
&lt;br /&gt;
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;
|&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;
|&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;
| random_bits_tile&lt;br /&gt;
| 0..255&lt;br /&gt;
| 8 random bits, specific to this road stop tile.&lt;br /&gt;
|-&lt;br /&gt;
| waiting_triggers&lt;br /&gt;
| 0..255&lt;br /&gt;
| Random triggers waiting to be matched. (see [[NML:Random switch|Random switch]])&lt;br /&gt;
|}&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;wikitable sortable&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_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_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. Only valid for tiles of the same object.&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_is_road_stop&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the given tile a road stop?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_road_stop_id&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
|&lt;br /&gt;
| Is nearby_tile_same_grf is true, ID of a road stop on a nearby tile&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_same_grf&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile defined by the same GRF?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_other_grf&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile defined by another GRF?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_original_gfx&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile using original graphics?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_same_station&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is a road stop on a nearby tile the same station as this?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_view&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| RST_VIEW_XXX&lt;br /&gt;
| The view/rotation of a nearby road stop tile. See [[#List of road stop views|list of road stop views]]&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_different_view&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the view/rotation of a road stop on a nearby tile different to that of this tile?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_is_drive_through&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is nearby road stop tile a drive-through road stop?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_stop_type&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| RST_TYPE_XXX&lt;br /&gt;
| Road stop type of a nearby tile. See stop_type&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_same_stop_type&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| 0 .. 1&lt;br /&gt;
| Is the stop type of a nearby road stop tile the same as this tile?&lt;br /&gt;
|-&lt;br /&gt;
| nearby_tile_grfid&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
| [0xFFFFFFFF &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; GRFID]&lt;br /&gt;
| 0xFFFFFFFF if the nearby tile is not a road stop, 0 if the nearby tile is a non-custom road stop, or else the GRFID of the NewGRF defining the road stop on the nearby tile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of road stop views===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Type&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_NE&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing north-east&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_SE&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing south-east&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_SW&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing south-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_NW&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing north-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_DRIVE_THROUGH_X&lt;br /&gt;
| Drive-through&lt;br /&gt;
| X-axis: north-east to south-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_DRIVE_THROUGH_Y&lt;br /&gt;
| Drive-through&lt;br /&gt;
| Y-axis: north-west to south-east&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Roadstops&amp;diff=4788</id>
		<title>NML:Roadstops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Roadstops&amp;diff=4788"/>
		<updated>2024-05-03T20:20:30Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Partial addition of road stop variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
Road stops can only be defined in OpenTTD {{ottd|14.0}} or later. &lt;br /&gt;
&lt;br /&gt;
==Road stop IDs==&lt;br /&gt;
OpenTTD supports 64000 road stop types per game.&lt;br /&gt;
&lt;br /&gt;
Rpad stop IDs are NewGRF-local and can therefore freely be chosen within the ID ranges. &lt;br /&gt;
&lt;br /&gt;
A road stop is allocated by setting the &#039;class&#039;-property, which should therefore be set first.&lt;br /&gt;
&lt;br /&gt;
==Road stop properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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;
&#039;&#039;&#039;This property &#039;&#039;must&#039;&#039; be set first, before any other properties or graphics.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Road stops belonging to the same class are grouped in the GUI.&amp;lt;br&amp;gt;&lt;br /&gt;
There is one special class:&lt;br /&gt;
* &amp;quot;WAYP&amp;quot;: {{ottdp|15.0|no}} The road stop type will be shown in the waypoint construction window, instead of the station construction window.&lt;br /&gt;
|-&lt;br /&gt;
| classname&lt;br /&gt;
| string&lt;br /&gt;
| You only need to set this for one road stop in every class.&lt;br /&gt;
|-&lt;br /&gt;
| name&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| availability_type&lt;br /&gt;
| RST_AVAILABILITY_TYPE_XXX&lt;br /&gt;
| XXX = [PASSENGER &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; FREIGHT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ALL]&lt;br /&gt;
The default value is RST_AVAILABILITY_TYPE_ALL&lt;br /&gt;
|-&lt;br /&gt;
| draw_mode&lt;br /&gt;
| bitmask(RST_DRAW_FLAG_XXX, ...)&lt;br /&gt;
| See [[#List of draw mode flags|list of draw mode flags]]&lt;br /&gt;
The default value is bitmask(RST_DRAW_FLAG_BAY_ROAD, RST_DRAW_FLAG_DRIVE_THROUGH_ROAD_OVERLAY)&lt;br /&gt;
|-&lt;br /&gt;
| cargo_random_triggers&lt;br /&gt;
| Array of cargo labels from the [[NML:Cargotable|cargotable]]&lt;br /&gt;
| Cargo types, which will [[NML:Random_switch#Stations|trigger re-randomization]] when delivered, loaded or unloaded at the station.&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;
See [[#Animation_triggers|list of animation triggers]]&lt;br /&gt;
|-&lt;br /&gt;
| general_flags&lt;br /&gt;
| bitmask(RST_GENERAL_FLAG_XXX, ...)&lt;br /&gt;
| See [[#List of general flags|list of general flags]]&lt;br /&gt;
|-&lt;br /&gt;
| cost_multipliers&lt;br /&gt;
| [build_cost, clear_cost]&lt;br /&gt;
| Build and clear cost multipliers, 16 is the same as a non-NewGRF road stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of draw mode flags===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_BAY_ROAD&lt;br /&gt;
| Draw road type ground sprite for bay stops.&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_DRIVE_THROUGH_ROAD_OVERLAY&lt;br /&gt;
| Draw road overlays for drive-through stops.&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_WAYPOINT_GROUND&lt;br /&gt;
| {{ottdp|15.0|no}} Draw spritelayout ground sprite on top of underlying road (if unset, the spritelayout ground sprite is not drawn).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of general flags===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_RANDOM_ANIMATION&lt;br /&gt;
| Animation callback requires random bits in variable extra_callback_info1.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_NO_CATENARY&lt;br /&gt;
| Do not show catenary graphics.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_DRIVE_THROUGH_ONLY&lt;br /&gt;
| Only allow drive-through stops (not bay stops).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_NO_AUTO_ROAD_CONNECTION&lt;br /&gt;
| Do not automatically build connecting road pieces.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_BUILD_MENU_ROAD_ONLY&lt;br /&gt;
| Only show in the road build menu (not tram).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_BUILD_MENU_TRAM_ONLY&lt;br /&gt;
| Only show in the tram build menu (not road).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_DRAW_MODE_REGISTER&lt;br /&gt;
| {{ottdp|15.0|no}} Read the road stop draw mode from variable 0x100 (set using STORE_TEMP), this overrides the draw_mode property.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Road stop variables==&lt;br /&gt;
&lt;br /&gt;
===Base station variables===&lt;br /&gt;
The following variables are shared between road stops, [[NML:Stations|stations]] and [[NML:Airports|airports]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| random_bits_station&lt;br /&gt;
| 0..65535&lt;br /&gt;
| 16 random bits, shared between all station sections (rail station sections, airports, ...)&lt;br /&gt;
|-&lt;br /&gt;
| had_vehicle_of_type&lt;br /&gt;
| bitmask(HAD_VEHICLE_OF_TYPE_XXX, ...)&lt;br /&gt;
| Bitmask of vehicle types that have visited the station. XXX = &amp;lt;nowiki&amp;gt;[TRAIN | BUS | TRUCK | AIRCRAFT | SHIP]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| is_waypoint&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| Whether the station is a waypoint&lt;br /&gt;
|-&lt;br /&gt;
| facilities&lt;br /&gt;
| bitmask(FACILITY_XXX, ...)&lt;br /&gt;
| Bitmask of facilities associated with the station. XXX = &amp;lt;nowiki&amp;gt;[TRAIN | TRUCK_STOP | BUS_STOP | AIRPORT | DOCK]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| airport_type&lt;br /&gt;
| AIRPORTTYPE_XXX&lt;br /&gt;
| Type of airport, contains a bogus value if the station has no airport. XXX = &amp;lt;nowiki&amp;gt;[SMALL | LARGE | HELIPORT | OILRIG]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| build_date&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;
| Date when the station was built. Is clamped to the 1920-2099 range.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following variables are also shared with [[NML:Stations|stations]] and [[NML:Airports|airports]]. They all require a single argument: a cargo type from your [[NML:Cargotable|cargo translation table]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| cargo_amount_waiting&lt;br /&gt;
| 0..32767&lt;br /&gt;
| Units of cargo of waiting&lt;br /&gt;
|-&lt;br /&gt;
| cargo_rating&lt;br /&gt;
| 0..100&lt;br /&gt;
| Rating for this cargo type (in %)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| cargo_time_since_pickup&lt;br /&gt;
| 0..255&lt;br /&gt;
| Time since the cargo was last picked up. 1 unit equals 185 ticks, or about 2.5 game days.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_time_en_route&lt;br /&gt;
| 0..255&lt;br /&gt;
| Time this cargo has spent en-route. 1 unit equals 185 ticks, or about 2.5 game days.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_last_vehicle_speed&lt;br /&gt;
| 0..255&lt;br /&gt;
| Speed of the last vehicle picking up this cargo type. The unit depends on the type of vehicle. For trains and road vehicles, one unit is 1 km/h; for ships, it&#039;s 0.5 km/h; for aircraft, it&#039;s 8 mph. If the max. speed is above 255 speed units, 255 is used instead. 0 if no vehicle as picked up the cargo type yet.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_last_vehicle_age&lt;br /&gt;
| 0..255&lt;br /&gt;
| Age of the last vehicle picking up this cargo type, in years. 255 if no vehicle has picked up the cargo type yet.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type is currently being accepted at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_ever&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type has ever been accepted at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_last_month&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted last month at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_this_month&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted this month at the station, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| cargo_accepted_bigtick&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this cargo type was accepted at the station since the last periodic processing, which happens every 250 ticks. 0 otherwise.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Variables without a parameter===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! value range&lt;br /&gt;
! comment&lt;br /&gt;
|-&lt;br /&gt;
| view&lt;br /&gt;
| RST_VIEW_BAY_XXX&lt;br /&gt;
| The view/rotation of the road stop. See [[#List of road stop views|list of road stop views]]&lt;br /&gt;
|-&lt;br /&gt;
| stop_type&lt;br /&gt;
| RST_TYPE_XXX&lt;br /&gt;
| XXX = [BUS &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; TRUCK &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; {{ottdp|15}}WAYPOINT]&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;
| has_road&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this road stop has road&lt;br /&gt;
|-&lt;br /&gt;
| has_tram&lt;br /&gt;
| [0 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 1]&lt;br /&gt;
| 1 if this road stop has tram&lt;br /&gt;
|-&lt;br /&gt;
| road_type&lt;br /&gt;
| [Road type &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xFF]&lt;br /&gt;
| Entry from [[NML:Railtypetable|roadtype translation table]], or 0xFF if there is no road&lt;br /&gt;
|-&lt;br /&gt;
| tram_type&lt;br /&gt;
| [Tram type &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; 0xFF]&lt;br /&gt;
| Entry from [[NML:Railtypetable|tramtype translation table]], or 0xFF if there is no tram&lt;br /&gt;
|-&lt;br /&gt;
| animation_frame&lt;br /&gt;
| 0 .. (frame_count - 1)&lt;br /&gt;
| Current animation frame, with the maximum defined in the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;animation_info&amp;lt;/code&amp;gt; property.&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;
| company_num&lt;br /&gt;
| 0 ... 14&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;
| &lt;br /&gt;
;PLAYERTYPE_HUMAN&lt;br /&gt;
:human player&lt;br /&gt;
;PLAYERTYPE_AI&lt;br /&gt;
:AI player&lt;br /&gt;
;PLAYERTYPE_HUMAN_IN_AI&lt;br /&gt;
:human managing AI company&lt;br /&gt;
;PLAYERTYPE_AI_IN_HUMAN&lt;br /&gt;
:AI managing human company&lt;br /&gt;
&lt;br /&gt;
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;
|&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;
|&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;
| random_bits_tile&lt;br /&gt;
| 0..255&lt;br /&gt;
| 8 random bits, specific to this road stop tile.&lt;br /&gt;
|-&lt;br /&gt;
| waiting_triggers&lt;br /&gt;
| 0..255&lt;br /&gt;
| Random triggers waiting to be matched. (see [[NML:Random switch|Random switch]])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of road stop views===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Type&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_NE&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing north-east&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_SE&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing south-east&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_SW&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing south-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_BAY_NW&lt;br /&gt;
| Bay&lt;br /&gt;
| Facing north-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_DRIVE_THROUGH_X&lt;br /&gt;
| Drive-through&lt;br /&gt;
| X-axis: north-east to south-west&lt;br /&gt;
|-&lt;br /&gt;
| RST_VIEW_DRIVE_THROUGH_Y&lt;br /&gt;
| Drive-through&lt;br /&gt;
| Y-axis: north-west to south-east&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Road_Stops&amp;diff=4787</id>
		<title>VariationalAction2/Road Stops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Road_Stops&amp;diff=4787"/>
		<updated>2024-05-03T19:45:39Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add road waypoint value for var 41&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
{|&lt;br /&gt;
!Variable !![[GRFActionsDetailed|Size]] !!Version !! Description&lt;br /&gt;
|-&lt;br /&gt;
|40||B||{{ottdp|14}}||View/rotation&lt;br /&gt;
|-&lt;br /&gt;
|41||B||{{ottdp|14}}||Stop type&lt;br /&gt;
|-&lt;br /&gt;
|42||W||{{ottdp|14}}||Tile information, see below&lt;br /&gt;
|-&lt;br /&gt;
|43||D||{{ottdp|14}}||Road type&lt;br /&gt;
|-&lt;br /&gt;
|44||D||{{ottdp|14}}||Tram type&lt;br /&gt;
|-&lt;br /&gt;
|45||D||{{ottdp|14}}||Get [[TownZones|town zone]] and Manhattan distance of closest town&lt;br /&gt;
|-&lt;br /&gt;
|46||D||{{ottdp|14}}||Get square of Euclidian distance of closest town&lt;br /&gt;
|-&lt;br /&gt;
|47||B||{{ottdp|14}}||Player (company) information&lt;br /&gt;
|-&lt;br /&gt;
|48|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|-&lt;br /&gt;
|49||B||{{ottdp|14}}||Current animation frame&lt;br /&gt;
|-&lt;br /&gt;
|50||D||{{ottdp|15}}||Miscellaneous road stop info&lt;br /&gt;
|-&lt;br /&gt;
|60-65|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|-&lt;br /&gt;
|66||D||{{ottdp|14}}||Animation frame of nearby tile&lt;br /&gt;
|-&lt;br /&gt;
|67||D||{{ottdp|14}}||Land info of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|68||D||{{ottdp|14}}||Road stop info of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|6A||D||{{ottdp|14}}||GRFID of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|69|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== View/rotation (40) ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Value!!Type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||Bay||Facing north-east&lt;br /&gt;
|-&lt;br /&gt;
|1||Bay||Facing south-east&lt;br /&gt;
|-&lt;br /&gt;
|2||Bay||Facing south-west&lt;br /&gt;
|-&lt;br /&gt;
|3||Bay||Facing north-west&lt;br /&gt;
|-&lt;br /&gt;
|4||Drive-through||X-axis: north-east to south-west&lt;br /&gt;
|-&lt;br /&gt;
|5||Drive-through||Y-axis: north-west to south-east&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stop type (41) ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||Passenger/bus stop&lt;br /&gt;
|-&lt;br /&gt;
|1||Freight/lorry stop&lt;br /&gt;
|-&lt;br /&gt;
|2||{{ottdp|15}} Road waypoint&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tile information (42) ===&lt;br /&gt;
&lt;br /&gt;
The return value has the same values as [[VariationalAction2/Objects#Tile information (41)|object var41]].&lt;br /&gt;
&lt;br /&gt;
=== Road type (43) ===&lt;br /&gt;
&lt;br /&gt;
This has the value of the (translated) roadtype the road stop is built on, or the current roadtype in the build GUI.&lt;br /&gt;
&lt;br /&gt;
If the roadtype has no entry in the roadtype translation table of the GRF, this value will be FFh.&lt;br /&gt;
&lt;br /&gt;
If no translation table is present, the raw value will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: only exact matches of roadtypes are reported. If the translation table of the GRF does not contain the exact roadtype FFh is returned.&lt;br /&gt;
&lt;br /&gt;
If the tile has no road at all (tram only) FFFFFFFFh is returned.&lt;br /&gt;
&lt;br /&gt;
=== Tram type (44) ===&lt;br /&gt;
&lt;br /&gt;
This has the value of the (translated) tramtype the road stop is built on, or the current tramtype in the build GUI.&lt;br /&gt;
&lt;br /&gt;
If the tramtype has no entry in the tramtype translation table of the GRF, this value will be FFh.&lt;br /&gt;
&lt;br /&gt;
If no translation table is present, the raw value will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: only exact matches of tramtypes are reported. If the translation table of the GRF does not contain the exact tramtype FFh is returned.&lt;br /&gt;
&lt;br /&gt;
If the tile has no tram at all (road only) FFFFFFFFh is returned.&lt;br /&gt;
&lt;br /&gt;
=== Get [[TownZones|town zone]] and Manhattan distance of closest town (45) ===&lt;br /&gt;
&lt;br /&gt;
Like [[VarAction2Industries#Get town zone and Manhattan distance of closest town (65)|industry var65]] but instead of an offset the current tile is used.&lt;br /&gt;
&lt;br /&gt;
=== Get square of Euclidian distance of closest town (46) ===&lt;br /&gt;
&lt;br /&gt;
Like [[VarAction2Industries#Get square of Euclidean distance of closest town (66)|industry var66]] but instead of an offset the current tile is used.&lt;br /&gt;
&lt;br /&gt;
=== Player (company) information (47) ===&lt;br /&gt;
&lt;br /&gt;
The return value has the same values as [[VariationalAction2/Vehicles#Player info (43)|vehicle var43]].&lt;br /&gt;
The company used is the road stop owner.&lt;br /&gt;
&lt;br /&gt;
=== Animation Frame (49) ===&lt;br /&gt;
&lt;br /&gt;
The return value is the animation frame of the current tile.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous road stop info (50) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bits!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0..3||Not implemented.&lt;br /&gt;
|-&lt;br /&gt;
|4||Bit set if the road stop is being drawn in the build window.&lt;br /&gt;
|-&lt;br /&gt;
|5..31||Undefined, reserved for future use &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Animation frame of nearby tile (66) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
If the selected tile is a road stop tile that belongs to the current station, its animation state is returned. Otherwise, FFFFFFFFh is returned.&lt;br /&gt;
&lt;br /&gt;
=== Land info of nearby tiles (67) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
Returns the same values as [[VarAction2IndustryTiles#Land info of nearby tiles (60)|industry tile var60]].&lt;br /&gt;
&lt;br /&gt;
=== Road stop info of nearby tiles (68) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
The returned value is FFFFFFFFh if the selected tile isn&#039;t a road stop tile. Otherwise, the returned value can be separated to the following parts: &lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bits!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0..7||If the tile is defined in the current GRF, this is the setID used in the definition. Otherwise, the content is undefined.&lt;br /&gt;
Note that this field is clamped to the range 0..255. Therefore if the current GRF defines road stops with a setID &amp;gt; 255, this field may only be used to check for road stops in the range 0..254.&lt;br /&gt;
|-&lt;br /&gt;
|8..9||0 - The tile uses original TTD graphics&lt;br /&gt;
&lt;br /&gt;
1 - The tile is defined in the current GRF&lt;br /&gt;
&lt;br /&gt;
2 - The tile is defined in another GRF&lt;br /&gt;
|-&lt;br /&gt;
|10||Set if the selected tile belongs to the current station, clear otherwise&lt;br /&gt;
|-&lt;br /&gt;
|11||Set if the selected tile has a different view/rotation, cleat if the same view/rotation&lt;br /&gt;
|-&lt;br /&gt;
|12..15||View/rotation of the selected tile&lt;br /&gt;
|-&lt;br /&gt;
|16..19||0 - Passenger/bus stop&lt;br /&gt;
&lt;br /&gt;
1 - Freight/lorry stop&lt;br /&gt;
|-&lt;br /&gt;
|20||Set if the stop type (passenger/bus or freight/lorry) is the same as the current tile&lt;br /&gt;
|-&lt;br /&gt;
|21..31||Undefined, reserved for future use&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GRFID of nearby road stop tile (6A) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
The returned value is one of the following:&lt;br /&gt;
* &#039;&#039;&#039;FFFFFFFFh&#039;&#039;&#039; if the selected tile isn&#039;t a road stop tile&lt;br /&gt;
* &#039;&#039;&#039;00000000h&#039;&#039;&#039; if the selected station is a default road stop (not a NewGRF road stop)&lt;br /&gt;
* otherwise, the GRFID of the GRF which defined the type of the selected road stop tile&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Roadstops&amp;diff=4786</id>
		<title>NML:Roadstops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Roadstops&amp;diff=4786"/>
		<updated>2024-05-03T19:39:06Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Initial NML road stop properties&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
Road stops can only be defined in OpenTTD {{ottd|14.0}} or later. &lt;br /&gt;
&lt;br /&gt;
==Road stop IDs==&lt;br /&gt;
OpenTTD supports 64000 road stop types per game.&lt;br /&gt;
&lt;br /&gt;
Rpad stop IDs are NewGRF-local and can therefore freely be chosen within the ID ranges. &lt;br /&gt;
&lt;br /&gt;
A road stop is allocated by setting the &#039;class&#039;-property, which should therefore be set first.&lt;br /&gt;
&lt;br /&gt;
==Road stop properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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;
&#039;&#039;&#039;This property &#039;&#039;must&#039;&#039; be set first, before any other properties or graphics.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Road stops belonging to the same class are grouped in the GUI.&amp;lt;br&amp;gt;&lt;br /&gt;
There is one special class:&lt;br /&gt;
* &amp;quot;WAYP&amp;quot;: {{ottdp|15.0|no}} The road stop type will be shown in the waypoint construction window, instead of the station construction window.&lt;br /&gt;
|-&lt;br /&gt;
| classname&lt;br /&gt;
| string&lt;br /&gt;
| You only need to set this for one road stop in every class.&lt;br /&gt;
|-&lt;br /&gt;
| name&lt;br /&gt;
| string&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| availability_type&lt;br /&gt;
| RST_AVAILABILITY_TYPE_XXX&lt;br /&gt;
| XXX = [PASSENGER &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; FREIGHT &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; ALL]&lt;br /&gt;
The default value is RST_AVAILABILITY_TYPE_ALL&lt;br /&gt;
|-&lt;br /&gt;
| draw_mode&lt;br /&gt;
| bitmask(RST_DRAW_FLAG_XXX, ...)&lt;br /&gt;
| See [[#List of draw mode flags|list of draw mode flags]]&lt;br /&gt;
The default value is bitmask(RST_DRAW_FLAG_BAY_ROAD, RST_DRAW_FLAG_DRIVE_THROUGH_ROAD_OVERLAY)&lt;br /&gt;
|-&lt;br /&gt;
| cargo_random_triggers&lt;br /&gt;
| Array of cargo labels from the [[NML:Cargotable|cargotable]]&lt;br /&gt;
| Cargo types, which will [[NML:Random_switch#Stations|trigger re-randomization]] when delivered, loaded or unloaded at the station.&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;
See [[#Animation_triggers|list of animation triggers]]&lt;br /&gt;
|-&lt;br /&gt;
| general_flags&lt;br /&gt;
| bitmask(RST_GENERAL_FLAG_XXX, ...)&lt;br /&gt;
| See [[#List of general flags|list of general flags]]&lt;br /&gt;
|-&lt;br /&gt;
| cost_multipliers&lt;br /&gt;
| [build_cost, clear_cost]&lt;br /&gt;
| Build and clear cost multipliers, 16 is the same as a non-NewGRF road stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of draw mode flags===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_BAY_ROAD&lt;br /&gt;
| Draw road type ground sprite for bay stops.&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_DRIVE_THROUGH_ROAD_OVERLAY&lt;br /&gt;
| Draw road overlays for drive-through stops.&lt;br /&gt;
|-&lt;br /&gt;
| RST_DRAW_FLAG_WAYPOINT_GROUND&lt;br /&gt;
| {{ottdp|15.0|no}} Draw spritelayout ground sprite on top of underlying road (if unset, the spritelayout ground sprite is not drawn).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===List of general flags===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_RANDOM_ANIMATION&lt;br /&gt;
| Animation callback requires random bits in variable extra_callback_info1.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_NO_CATENARY&lt;br /&gt;
| Do not show catenary graphics.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_DRIVE_THROUGH_ONLY&lt;br /&gt;
| Only allow drive-through stops (not bay stops).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_NO_AUTO_ROAD_CONNECTION&lt;br /&gt;
| Do not automatically build connecting road pieces.&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_BUILD_MENU_ROAD_ONLY&lt;br /&gt;
| Only show in the road build menu (not tram).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_BUILD_MENU_TRAM_ONLY&lt;br /&gt;
| Only show in the tram build menu (not road).&lt;br /&gt;
|-&lt;br /&gt;
| RST_GENERAL_FLAG_DRAW_MODE_REGISTER&lt;br /&gt;
| {{ottdp|15.0|no}} Read the road stop draw mode from variable 0x100 (set using STORE_TEMP), this overrides the draw_mode property.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Road_Stops&amp;diff=4783</id>
		<title>Action0/Road Stops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Road_Stops&amp;diff=4783"/>
		<updated>2024-04-24T18:57:27Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Road waypoint updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Defining properties of road stops.&lt;br /&gt;
&lt;br /&gt;
Road stop IDs may be freely chosen. In action 0, you need only specify IDs relative to the set, i.e. the ID of the first road stop type is 00, the second road type is 01 and so on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OpenTTD supports 64000 road stops per game, and 64000 road stop IDs per GRF file.&lt;br /&gt;
&lt;br /&gt;
The property you &#039;&#039;&#039;must&#039;&#039;&#039; set for each road stop ID is 08 (in addition to defining an action 3 for it). Also, all road stop IDs must get their classes in the right order, starting from ID 00 onwards.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{|&lt;br /&gt;
!Number!![[GRFActionsDetailed|Size]]!!Version!!Description&lt;br /&gt;
|-&lt;br /&gt;
|08||D||{{ottdp|14}}||Class label, see below&lt;br /&gt;
|-&lt;br /&gt;
|09||B||{{ottdp|14}}||Road stop type&lt;br /&gt;
|-&lt;br /&gt;
|0A||W||{{ottdp|14}}||Road stop name text ID&lt;br /&gt;
|-&lt;br /&gt;
|0B||W||{{ottdp|14}}||Class name text ID&lt;br /&gt;
|-&lt;br /&gt;
|0C||B||{{ottdp|14}}||Draw mode&lt;br /&gt;
|-&lt;br /&gt;
|0D||D||{{ottdp|14}}||Random trigger cargoes&lt;br /&gt;
|-&lt;br /&gt;
|0E||W||{{ottdp|14}}||Animation information&lt;br /&gt;
|-&lt;br /&gt;
|0F||B||{{ottdp|14}}||Animation speed&lt;br /&gt;
|-&lt;br /&gt;
|10||W||{{ottdp|14}}||Animation triggers&lt;br /&gt;
|-&lt;br /&gt;
|11||B||{{ottdp|14}}||Callback flags, see below&lt;br /&gt;
|-&lt;br /&gt;
|12||D||{{ottdp|14}}||General flags, see below&lt;br /&gt;
|-&lt;br /&gt;
|15||W||{{ottdp|14}}||Cost multipiers, see below&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Descriptions ==&lt;br /&gt;
&lt;br /&gt;
=== Road stop class (08) ===&lt;br /&gt;
&lt;br /&gt;
New road stops are grouped graphics into classes.&lt;br /&gt;
&lt;br /&gt;
Only two classes are pre-defined:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Name!!Class ID!!Intended use for road stops&lt;br /&gt;
|-&lt;br /&gt;
|DFLT||44 46 4C 54||Default road stops&lt;br /&gt;
|-&lt;br /&gt;
|WAYP||57 41 59 50||{{ottdp|15}}Road waypoints&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It is recommended that the class identifier used is unique to your GRF(s).&lt;br /&gt;
&lt;br /&gt;
=== Road stop type (09) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||Passenger/bus stop&lt;br /&gt;
|-&lt;br /&gt;
|1||Freight/lorry stop&lt;br /&gt;
|-&lt;br /&gt;
|2||Both passenger/bus and freight/lorry stops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default value is 2: Both passenger/bus and freight/lorry stops&lt;br /&gt;
&lt;br /&gt;
=== Road stop name text ID (0A) ===&lt;br /&gt;
&lt;br /&gt;
The text ID for this road stop (word value). This textid should be either a TTD textid or a D4xx textid (set via D0xx in action4).&lt;br /&gt;
&lt;br /&gt;
=== Class name text ID (0B) ===&lt;br /&gt;
&lt;br /&gt;
The text ID for the road stop class.&lt;br /&gt;
&lt;br /&gt;
When specifying a road stop, you don&#039;t need to set a class name again if you already did for another one with the same class.&lt;br /&gt;
&lt;br /&gt;
=== Draw mode (0C) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||1||Bay stops: Draw road type ground sprite&lt;br /&gt;
|-&lt;br /&gt;
|1||2||Drive through stops: Draw road/tram type overlays&lt;br /&gt;
|-&lt;br /&gt;
|1||2||{{ottdp|15}} Road waypoints: Draw the sprite layout ground tile (on top of the road)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default value is 3 (bits 0 and 1 both set).&lt;br /&gt;
&lt;br /&gt;
The remaining bits are reserved for future use.&lt;br /&gt;
&lt;br /&gt;
=== Cargo types for random triggers (0D) ===&lt;br /&gt;
&lt;br /&gt;
This sets which cargo types should trigger re-randomizing. The cargo types are given as a bitmask of the bits from column 3 (type B) in CargoTypes. &amp;amp;nbsp;If nothing is set (the default), the no random triggers will happen, to conserve CPU time.&lt;br /&gt;
&lt;br /&gt;
With GRF version 7 and above, the interpretation of bits changes. Instead of climate-dependent cargo slot numbers (type B), you have to set the bits of climate-independent cargo ID (type A).&lt;br /&gt;
&lt;br /&gt;
=== Animation information (0E) ===&lt;br /&gt;
&lt;br /&gt;
The low byte specifies the number of animation frames minus one, so 00 means 1 frame, 01 means 2 frames etc. The maximum number of frames is 256, although you can have some problems if your animation exceeds FD (253) frames. The high byte must be 0 for non-looping animations and 01 for looping animations. Every other value is reserved for future use. In addition, if the whole word contains FFFF, animation is turned off for this station (this is the default value).&lt;br /&gt;
Since you can&#039;t have properties for individual station tiles, this property applies for every tile of the station. If you don&#039;t want to animate some tiles, you should check the current position during [[Callbacks#Animation control (1B/25/140/152/159)|callback 140]] and return FD if the current tile doesn&#039;t need to be animated. If you also need animations of different length per tile, you&#039;ll have to use [[Callbacks#Next animation frame (1A/26/141/153/158)|callback 141]] for that.&lt;br /&gt;
&lt;br /&gt;
=== Animation speed (0F) ===&lt;br /&gt;
The meaning is the same as for [[Action0Houses#Animation Speed 1B|house property 1B]], but the lower limit is 0 instead of 2, so the fastest possible animation changes frames every game tick (27ms). The default value is 2.&lt;br /&gt;
&lt;br /&gt;
=== Animation triggers (10) ===&lt;br /&gt;
This is a bit mask of events that should trigger [[Callbacks#Animation control (1B/25/140/152/159)|callback 140]], allowing to change the animation state&lt;br /&gt;
&lt;br /&gt;
=== Callback flags (11) ===&lt;br /&gt;
For road stops, the following [[callbacks]] can be defined by setting the corresponding bit in property 0B:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Variable 0C value!!Callback&lt;br /&gt;
|-&lt;br /&gt;
|0||1||13||Whether to make the road stop available in construction window (non-zero callback return) or not (callback returns zero)&lt;br /&gt;
|-&lt;br /&gt;
|1||2||141||Decide next animation frame&lt;br /&gt;
|-&lt;br /&gt;
|2||4||142||Decide animation speed&lt;br /&gt;
|}&lt;br /&gt;
Bit is the bit you have to set, you do this by adding all the values for all the bits. Variable 0C value is what variable 0C will be set to, for checking it in the [[VariationalAction2|VarAction2]] for callbacks.&lt;br /&gt;
&lt;br /&gt;
=== General Flags (12) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||1||[[Callbacks#Next animation frame (1A/26/141/153/158)|callback 141]] needs random bits in var. 10&lt;br /&gt;
|-&lt;br /&gt;
|2||4||Do not show catenary graphics&lt;br /&gt;
|-&lt;br /&gt;
|3||8||Only allow drive-through stops (not bay stops)&lt;br /&gt;
|-&lt;br /&gt;
|4||10||Do not automatically build connecting road pieces&lt;br /&gt;
|-&lt;br /&gt;
|5||20||Only show in the road build menu (not tram)&lt;br /&gt;
|-&lt;br /&gt;
|6||40||Only show in the tram build menu (not road)&lt;br /&gt;
|-&lt;br /&gt;
|8||100||{{ottdp|15}} Read the draw mode from register 0x100, overriding the default value in property 0C&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default value is 0 (no bits set).&lt;br /&gt;
&lt;br /&gt;
The remaining bits are reserved for future use.&lt;br /&gt;
&lt;br /&gt;
=== Cost multipiers (15) ===&lt;br /&gt;
&lt;br /&gt;
The first byte is the build cost multiplier.&lt;br /&gt;
&lt;br /&gt;
The second byte is the removal cost multiplier.&lt;br /&gt;
&lt;br /&gt;
The total property length is 2 bytes.&lt;br /&gt;
&lt;br /&gt;
A value of 16 produces a build or removal cost the same as non-NewGRF road stops.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Road_Stops&amp;diff=4782</id>
		<title>VariationalAction2/Road Stops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Road_Stops&amp;diff=4782"/>
		<updated>2024-04-23T21:24:34Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add road stop variable 50&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
{|&lt;br /&gt;
!Variable !![[GRFActionsDetailed|Size]] !!Version !! Description&lt;br /&gt;
|-&lt;br /&gt;
|40||B||{{ottdp|14}}||View/rotation&lt;br /&gt;
|-&lt;br /&gt;
|41||B||{{ottdp|14}}||Stop type&lt;br /&gt;
|-&lt;br /&gt;
|42||W||{{ottdp|14}}||Tile information, see below&lt;br /&gt;
|-&lt;br /&gt;
|43||D||{{ottdp|14}}||Road type&lt;br /&gt;
|-&lt;br /&gt;
|44||D||{{ottdp|14}}||Tram type&lt;br /&gt;
|-&lt;br /&gt;
|45||D||{{ottdp|14}}||Get [[TownZones|town zone]] and Manhattan distance of closest town&lt;br /&gt;
|-&lt;br /&gt;
|46||D||{{ottdp|14}}||Get square of Euclidian distance of closest town&lt;br /&gt;
|-&lt;br /&gt;
|47||B||{{ottdp|14}}||Player (company) information&lt;br /&gt;
|-&lt;br /&gt;
|48|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|-&lt;br /&gt;
|49||B||{{ottdp|14}}||Current animation frame&lt;br /&gt;
|-&lt;br /&gt;
|50||D||{{ottdp|15}}||Miscellaneous road stop info&lt;br /&gt;
|-&lt;br /&gt;
|60-65|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|-&lt;br /&gt;
|66||D||{{ottdp|14}}||Animation frame of nearby tile&lt;br /&gt;
|-&lt;br /&gt;
|67||D||{{ottdp|14}}||Land info of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|68||D||{{ottdp|14}}||Road stop info of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|6A||D||{{ottdp|14}}||GRFID of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|69|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== View/rotation (40) ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Value!!Type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||Bay||Facing north-east&lt;br /&gt;
|-&lt;br /&gt;
|1||Bay||Facing south-east&lt;br /&gt;
|-&lt;br /&gt;
|2||Bay||Facing south-west&lt;br /&gt;
|-&lt;br /&gt;
|3||Bay||Facing north-west&lt;br /&gt;
|-&lt;br /&gt;
|4||Drive-through||X-axis: north-east to south-west&lt;br /&gt;
|-&lt;br /&gt;
|5||Drive-through||Y-axis: north-west to south-east&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stop type (41) ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||Passenger/bus stop&lt;br /&gt;
|-&lt;br /&gt;
|1||Freight/lorry stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tile information (42) ===&lt;br /&gt;
&lt;br /&gt;
The return value has the same values as [[VariationalAction2/Objects#Tile information (41)|object var41]].&lt;br /&gt;
&lt;br /&gt;
=== Road type (43) ===&lt;br /&gt;
&lt;br /&gt;
This has the value of the (translated) roadtype the road stop is built on, or the current roadtype in the build GUI.&lt;br /&gt;
&lt;br /&gt;
If the roadtype has no entry in the roadtype translation table of the GRF, this value will be FFh.&lt;br /&gt;
&lt;br /&gt;
If no translation table is present, the raw value will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: only exact matches of roadtypes are reported. If the translation table of the GRF does not contain the exact roadtype FFh is returned.&lt;br /&gt;
&lt;br /&gt;
If the tile has no road at all (tram only) FFFFFFFFh is returned.&lt;br /&gt;
&lt;br /&gt;
=== Tram type (44) ===&lt;br /&gt;
&lt;br /&gt;
This has the value of the (translated) tramtype the road stop is built on, or the current tramtype in the build GUI.&lt;br /&gt;
&lt;br /&gt;
If the tramtype has no entry in the tramtype translation table of the GRF, this value will be FFh.&lt;br /&gt;
&lt;br /&gt;
If no translation table is present, the raw value will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: only exact matches of tramtypes are reported. If the translation table of the GRF does not contain the exact tramtype FFh is returned.&lt;br /&gt;
&lt;br /&gt;
If the tile has no tram at all (road only) FFFFFFFFh is returned.&lt;br /&gt;
&lt;br /&gt;
=== Get [[TownZones|town zone]] and Manhattan distance of closest town (45) ===&lt;br /&gt;
&lt;br /&gt;
Like [[VarAction2Industries#Get town zone and Manhattan distance of closest town (65)|industry var65]] but instead of an offset the current tile is used.&lt;br /&gt;
&lt;br /&gt;
=== Get square of Euclidian distance of closest town (46) ===&lt;br /&gt;
&lt;br /&gt;
Like [[VarAction2Industries#Get square of Euclidean distance of closest town (66)|industry var66]] but instead of an offset the current tile is used.&lt;br /&gt;
&lt;br /&gt;
=== Player (company) information (47) ===&lt;br /&gt;
&lt;br /&gt;
The return value has the same values as [[VariationalAction2/Vehicles#Player info (43)|vehicle var43]].&lt;br /&gt;
The company used is the road stop owner.&lt;br /&gt;
&lt;br /&gt;
=== Animation Frame (49) ===&lt;br /&gt;
&lt;br /&gt;
The return value is the animation frame of the current tile.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous road stop info (50) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bits!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0..3||Not implemented.&lt;br /&gt;
|-&lt;br /&gt;
|4||Bit set if the road stop is being drawn in the build window.&lt;br /&gt;
|-&lt;br /&gt;
|5..31||Undefined, reserved for future use &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Animation frame of nearby tile (66) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
If the selected tile is a road stop tile that belongs to the current station, its animation state is returned. Otherwise, FFFFFFFFh is returned.&lt;br /&gt;
&lt;br /&gt;
=== Land info of nearby tiles (67) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
Returns the same values as [[VarAction2IndustryTiles#Land info of nearby tiles (60)|industry tile var60]].&lt;br /&gt;
&lt;br /&gt;
=== Road stop info of nearby tiles (68) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
The returned value is FFFFFFFFh if the selected tile isn&#039;t a road stop tile. Otherwise, the returned value can be separated to the following parts: &lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bits!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0..7||If the tile is defined in the current GRF, this is the setID used in the definition. Otherwise, the content is undefined.&lt;br /&gt;
Note that this field is clamped to the range 0..255. Therefore if the current GRF defines road stops with a setID &amp;gt; 255, this field may only be used to check for road stops in the range 0..254.&lt;br /&gt;
|-&lt;br /&gt;
|8..9||0 - The tile uses original TTD graphics&lt;br /&gt;
&lt;br /&gt;
1 - The tile is defined in the current GRF&lt;br /&gt;
&lt;br /&gt;
2 - The tile is defined in another GRF&lt;br /&gt;
|-&lt;br /&gt;
|10||Set if the selected tile belongs to the current station, clear otherwise&lt;br /&gt;
|-&lt;br /&gt;
|11||Set if the selected tile has a different view/rotation, cleat if the same view/rotation&lt;br /&gt;
|-&lt;br /&gt;
|12..15||View/rotation of the selected tile&lt;br /&gt;
|-&lt;br /&gt;
|16..19||0 - Passenger/bus stop&lt;br /&gt;
&lt;br /&gt;
1 - Freight/lorry stop&lt;br /&gt;
|-&lt;br /&gt;
|20||Set if the stop type (passenger/bus or freight/lorry) is the same as the current tile&lt;br /&gt;
|-&lt;br /&gt;
|21..31||Undefined, reserved for future use&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GRFID of nearby road stop tile (6A) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
The returned value is one of the following:&lt;br /&gt;
* &#039;&#039;&#039;FFFFFFFFh&#039;&#039;&#039; if the selected tile isn&#039;t a road stop tile&lt;br /&gt;
* &#039;&#039;&#039;00000000h&#039;&#039;&#039; if the selected station is a default road stop (not a NewGRF road stop)&lt;br /&gt;
* otherwise, the GRFID of the GRF which defined the type of the selected road stop tile&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action5&amp;diff=4781</id>
		<title>Action5</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action5&amp;diff=4781"/>
		<updated>2024-04-23T19:48:19Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add Action 5 type 19: road waypoints&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Define base graphics specific sets&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Action 5 is used to define graphics for several new features of OpenTTD and TTDPatch. This is similar to action 1.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
The data looks as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Sprite-number&amp;gt; * &amp;lt;Length&amp;gt; 05 &amp;lt;type&amp;gt; &amp;lt;num-sprites&amp;gt; [&amp;lt;offset&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Element!![[GRFActionsDetailed|Size]]!!Description&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;Sprite-number&amp;gt;||dec||A sequential sprite number&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;length&amp;gt;||dec||The total number of bytes used in this action&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|05||B||Defines action 05&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;type&amp;gt;||B||What type of graphics follow&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;num-sprites&amp;gt;||B*||How many regular sprites follow&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;offset&amp;gt;||B*||Offset in the Action 5 assignable block of sprites&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following num-sprites sprites in the .nfo file have to be RealSprites that will be used as graphics for the given TTDPatch feature, except for type 0A, which requires RecolorSprites.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.7|2.5|ttdprev=alpha 19}}Action 5 entries in a .grf file which has a regular GRFID (not FFFFFFFF) will always override those from .grf files with a GRFID of FFFFFFFF.&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;
=== type ===&lt;br /&gt;
&lt;br /&gt;
This sets the type of feature that the graphics are for. If bit 7 is set, the offset variable needs to be set. Bit 7 may only be set if the type supports it. The type can be one of:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Type!!Version!!Feature!!num-sprites (decimal)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|04||{{ottdp|0.6|2.0}}||Pre-signal graphics||48&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|04||{{ottdp|0.6|2.0}}||Pre-signal and semaphore graphics||112&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|04,84&amp;lt;ref name=&amp;quot;offset&amp;quot;&amp;gt;Offset allowed since {{ottdp|1.2|no|ottdrev=r23005}}&amp;lt;/ref&amp;gt;||{{ottdp| |2.5|ttdprev=alpha 41}}||Pre-signal, semaphore, and PBS graphics||240&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|05,85&amp;lt;ref name=&amp;quot;offset&amp;quot; /&amp;gt;||{{ottdp|0.6|2.0}}||Overhead wires and pylon graphics||48&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|06 ||{{ottdp|0.6| }}||Foundations (retaining walls) for BuildOnSlopes ||74&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|06,86&amp;lt;ref name=&amp;quot;offset&amp;quot; /&amp;gt;||{{ottdp|0.6|no|ottdrev=r11321}}||Foundations for BuildOnSlopes and half tiles (NS and EW foundations) ||90&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|07||{{ottdp|no|2.5|ttdprev=alpha 43}}||TTDPatch GUI sprites||93 &amp;lt;ref&amp;gt;Type 07 only requires 73 sprites in the stable (2.5 branch); the extra sprites are the clone train and build canal cursors.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|08,88&amp;lt;ref name=&amp;quot;offset&amp;quot; /&amp;gt;||{{ottdp|0.6|no}}&amp;lt;ref&amp;gt;TTDPatch supported canals via Action5 from 2.0.1 alpha 17 up to alpha 25. In alpha 26 it was removed again in favour of an action-1-2-3 method; see [[Action3/Canals|Action3]]. The method via Action5 is no longer supported by TTDpatch 2.0.1 alpha 26 and newer.&amp;lt;/ref&amp;gt;||Canals||65&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|09,89&amp;lt;ref name=&amp;quot;offset&amp;quot; /&amp;gt;||{{ottdp|0.6|2.5|ttdprev=alpha 58}}||One-way road arrows||{{ottdp|13|no}} 18 {{ottdp|0.6 - 12|2.5}} 6&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0A,8A&amp;lt;ref name=&amp;quot;offset&amp;quot; /&amp;gt;||{{ottdp|0.6|2.5|ttdprev=alpha 67}}||Two company color translation maps||256&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0B,8B&amp;lt;ref name=&amp;quot;offset&amp;quot; /&amp;gt;||{{ottdp|0.6|2.5|ttdprev=alpha 68}}||Tram tracks||{{ottdp|1.10|no}} 119 {{ottdp|0.6 - 1.9|2.5}} 113&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0C||{{ottdp|no|2.5|ttdprev=alpha 74}}||Snowy temperate trees||133&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0D||{{ottdp|0.6|2.5|ottdrev=r7325 (r11726)|ttdprev=beta 5}}||Coast Tile graphics||16 (18)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0E||{{ottdp|no|2.6|ttdprev=r1247}}||New Signals||Any&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0F,8F&amp;lt;ref name=&amp;quot;offset&amp;quot; /&amp;gt;||{{ottdp|0.7|2.6|ottdrev=r13469|ttdprev=r1487}}||Sprites for marking tracks on slopes (for track reservation systems like PBS or YAPP)||Up to 12&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|10,90&amp;lt;ref name=&amp;quot;offset&amp;quot; /&amp;gt;||{{ottdp|0.6|no|ottdrev=r9645}}||Additional airport graphics||15&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|11,91&amp;lt;ref name=&amp;quot;offset&amp;quot; /&amp;gt;||{{ottdp|0.6|2.6|ottdrev=r9645|ttdprev=r1589}}||Road stop graphics||8&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|12,92&amp;lt;ref name=&amp;quot;offset&amp;quot; /&amp;gt;||{{ottdp|0.7|2.6|ottdrev=r13464|ttdprev=r1498}}||Aqueduct graphics||8&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|13,93&amp;lt;ref name=&amp;quot;offset&amp;quot; /&amp;gt;||{{ottdp|0.6|no|ottdrev=r11433}}||Autorail sprites||55&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|14,94||{{ottdp|0.6 - 1.11|no|ottdrev=11433}}||Flag sprites (no longer used)||Up to 36&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|15,95||{{ottdp|0.6|no|ottdrev=r11433}}||OpenTTD GUI sprites||Up to 191&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|16,96||{{ottdp|1.1|no|ottdrev=r20370}}||Airport preview sprites||Up to 9&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|17,97||{{ottdp|1.2|no|ottdrev=r23952}}||Railtype tunnel base sprites||16&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|18,98||{{ottdp|1.5|no|ottdrev=r26869}}||Extra all black palette||1&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|19,99||{{ottdp|15|no|}}||Road waypoint graphics||4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 04 Signal graphics. ====&lt;br /&gt;
&lt;br /&gt;
Signal graphics come in groups of 16. These groups contain sprites in the same order as sprites 1275-1290 in trg1[r].grf; red, then green, for each of: SW-facing, NE-facing, NW-facing, SE-facing, E-facing, W-facing, S-facing, N-facing.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Group(s)!!Contents&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|0||lighted entrance signals&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1||lighted exit signals&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|2||lighted combo signals&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|3||standard (non-pre-signal) semaphore signals&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|4..6||repeat 0..2 for semaphores&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|7||standard lighted PBS signals&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|8..14||repeat 0..6 for PBS signals&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 09 One-way road arrows ====&lt;br /&gt;
&lt;br /&gt;
Overlay sprites to indicate the direction of one-way roads.&lt;br /&gt;
The 6 sprites originally supported from {{ottdp|0.6|2.5}} are, in order:&lt;br /&gt;
&lt;br /&gt;
 arrow facing SW, arrow NE, impassable NE-SW, arrow NW, arrow SE, impassable NW-SE.&lt;br /&gt;
&lt;br /&gt;
Before {{ottdp|13|no}} these are used on both flat and sloped roads.&lt;br /&gt;
&lt;br /&gt;
From {{ottdp|13|no}} the grf can optionally provide 18 sprites instead of 6.&lt;br /&gt;
In this case the first 6 sprites are used for flat tiles only. The next 6 are used in the same sequence for slopes with the N corner raised, and the last 6 for slopes with the S corner raised.&lt;br /&gt;
&lt;br /&gt;
==== 0C Snowy temperate trees ====&lt;br /&gt;
&lt;br /&gt;
If the temperate snow line is enabled, you can use this to specify the snowy versions of temperate trees. The sprites must be the snowy versions of sprites 1576-1708 from TRG1.GRF, in the same order as they appear there.&lt;br /&gt;
&lt;br /&gt;
==== 0D Coast tile sprites ====&lt;br /&gt;
&lt;br /&gt;
===== In NewGRFs =====&lt;br /&gt;
If diagonal flooding is enabled then due to new corner coasts, you can use this to give a complete set of replacement coast tile sprites. There are 16 in total, 8 original Transport Tycoon Deluxe sprites and 8 for the corner slopes. Order of the sprites&amp;lt;ref name=numbers&amp;gt;Sprite numbers from trg1(r).pcx.&amp;lt;/ref&amp;gt; is as follows:&lt;br /&gt;
&lt;br /&gt;
 3997, 4063, 4064, 4068, 4062, 3998, 4066, 3988,&lt;br /&gt;
 4065, 4069, 3996, 3992, 4067, 3994, 3995, 3999.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Action5Coast16Sprites.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The 16 sprites for feature 0D&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== In Base Set&#039;s extra grf =====&lt;br /&gt;
Additionally, OpenTTD (since r11726) supports another method of supplying all additional coast tile sprites, but this is only allowed in the &#039;&#039;extra&#039;&#039; NewGRF of [http://wiki.openttd.org/Base_graphics Base Graphic Sets]. In this, only 10 sprites are supplied in the same order as the 16 sprites above, but without the coast sprites already in the base grf. Note that the 10 sprites version supplies two additional slopes, but they are not used, and are currently unlikely to be ever used.&lt;br /&gt;
&lt;br /&gt;
[[File:Action5Coast10Sprites.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Only 10 sprites are required for OpenTTD base graphic sets&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In OpenTTD 10 sprites for type 0D is enough in base graphic sets. The 16 sprites version should not be used for base graphics.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reason for the existence of a 10 sprite version is to remove the need for including original graphics, and to keep compatibility with old NewGRFs that replace the original shore graphics using Action A without adding new shores using Action 5: When a NewGRF uses the 16 sprites version it takes precedence above any NewGRF replacing the shore graphics using Action A; when a NewGRF uses Action A to replace shore graphics it takes precedence above a 10-sprite Action 5, effectively disabling diagonal flooding. Also due to compatibility the 10 sprites version is invalid for normal NewGRFs, which are not the &amp;quot;extra&amp;quot; NewGRF of some Base Graphics Set.&lt;br /&gt;
&lt;br /&gt;
==== 0E New Signals ====&lt;br /&gt;
&lt;br /&gt;
Any number of real and recolour sprites can be specified in the action in any order.&lt;br /&gt;
&lt;br /&gt;
Sprites are referenced by their offset into the action5 block by a [[VarAction2NewSignals]], hence a logically easily calculable order is advised.&lt;br /&gt;
&lt;br /&gt;
As of TTDPatch 2.6 alpha 0 r1346, the action 5 block defined in the same GRF file as the varaction2, will be used as the base sprite block for the offsets returned by the callback even if it is overridden by a higher priority GRF action 5 definition of the same feature (0E).&lt;br /&gt;
&lt;br /&gt;
==== 0F Tracks for Slopes ====&lt;br /&gt;
&lt;br /&gt;
This should be in the same order as sprites 1031 to 1035 (1). These should only be the rails, basically the same format as sprites 1005 to 1010 (1). There should be 3 groups of these sprites, one for each rail type (railroad, monorail, maglev).&lt;br /&gt;
&lt;br /&gt;
(1) Sprite numbers from trg1r.pcx / ogfx1_base.grf&lt;br /&gt;
&lt;br /&gt;
==== 11 Road stop graphics ====&lt;br /&gt;
&lt;br /&gt;
Road stop graphics consist of 2 groups of 4 sprites. The first group contains graphics for bus stops, second for truck stops. In each group, the sprites are in the following order: SW, NE, NW, SE.&lt;br /&gt;
&lt;br /&gt;
SW and NE sprites are used with road going along the Y axis ( .\&#039; ), NW and SE with road along the X axis( &#039;/. ).&lt;br /&gt;
&lt;br /&gt;
Internally, the stations are defined using the following station layouts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;\d1313&lt;br /&gt;
&lt;br /&gt;
\b13 \b0 \b0 \b3 \b16 \b16 &amp;lt;SW sprite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\b0 \b0 \b0 \b3 \b16 \b16 &amp;lt;NE sprite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
80&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;\d1314&lt;br /&gt;
&lt;br /&gt;
\b0 \b0 \b0 \b16 \b3 \b16 &amp;lt;NW sprite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\b0 \b13 \b0 \b16 \b3 \b16 &amp;lt;SE sprite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
80&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where 1313 and 1314 are town road sprites.&lt;br /&gt;
&lt;br /&gt;
[[File:roadstops.png]]&lt;br /&gt;
&lt;br /&gt;
Further sprites can be found in &#039;&#039;&#039;openttd.grf&#039;&#039;&#039; (OpenTTD), &#039;&#039;&#039;ogfxe_extra.grf&#039;&#039;&#039; (OpenGFX) or &#039;&#039;&#039;ttdpbase(w).grf&#039;&#039;&#039; (TTDPatch).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: As of OpenTTD r10185, the behaviour of this feature is identical in both games.&lt;br /&gt;
&lt;br /&gt;
==== 12 Aqueducts ====&lt;br /&gt;
&lt;br /&gt;
8 real sprites should be given. Firstly: 4 bridge end sprites in the order: SW, SE, NE, NW, where the direction is that heading onto the aqueduct. Then 2 middle part sprites for the X and Y directions. Followed by two pillar sprites for the X and Y directions. For examples of where the division between middle sprites and pillars should be made see sprites 2437 to 2592 (1), or an existing aqueduct GRF. Note, that for higher bridges to work effectively, pillars should be approximately 8px in height.&lt;br /&gt;
&lt;br /&gt;
[[File:aqueduct.png]]&lt;br /&gt;
&lt;br /&gt;
==== 15 / 95 OpenTTD GUI sprites ====&lt;br /&gt;
&lt;br /&gt;
OpenTTD defines 190 GUI sprites. Additional sprites not needed by an OpenTTD are simply ignored, so that new(er) base sets can be used by old OpenTTD versions. One can (re-)define a subset of the GUI sprites by giving an offset into the GUI sprites. The sprites are:&lt;br /&gt;
{|&lt;br /&gt;
!Offset !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0 .. 11|| Halftile selections&lt;br /&gt;
|-&lt;br /&gt;
|12 .. 13 || Title screen letters E and D&lt;br /&gt;
|-&lt;br /&gt;
|14 .. 37 || Bridge piers colours 1 .. 4&lt;br /&gt;
|-&lt;br /&gt;
|38 || square indicating NewGRF compatibility&lt;br /&gt;
|-&lt;br /&gt;
|39 || blob indicating server compatibility&lt;br /&gt;
|-&lt;br /&gt;
|40 || lock icon&lt;br /&gt;
|-&lt;br /&gt;
|41 || empty check box&lt;br /&gt;
|-&lt;br /&gt;
|42 || checked check box&lt;br /&gt;
|-&lt;br /&gt;
|43 || warning sign&lt;br /&gt;
|-&lt;br /&gt;
|44 || window resize right&lt;br /&gt;
|-&lt;br /&gt;
|45 .. 48|| arrows&lt;br /&gt;
|-&lt;br /&gt;
|49 || house&lt;br /&gt;
|-&lt;br /&gt;
|50 || shared orders&lt;br /&gt;
|-&lt;br /&gt;
|51 .. 52 || pin / pinned&lt;br /&gt;
|-&lt;br /&gt;
|53 .. 62 || rail build icons and cursors&lt;br /&gt;
|-&lt;br /&gt;
|63 .. 68 || monorail build icons and cursors&lt;br /&gt;
|-&lt;br /&gt;
|69 .. 74 || maglev build icons and cursors&lt;br /&gt;
|-&lt;br /&gt;
|75 || ??&lt;br /&gt;
|-&lt;br /&gt;
|76 .. 77 || waypoint toolbar and cursor icon&lt;br /&gt;
|-&lt;br /&gt;
|78 .. 81 || waypoint buildings&lt;br /&gt;
|-&lt;br /&gt;
|82 .. 85 || autoroad toobar and cursor for road and trams&lt;br /&gt;
|-&lt;br /&gt;
|86 || helipad&lt;br /&gt;
|-&lt;br /&gt;
|87 || build ship lift cursor&lt;br /&gt;
|-&lt;br /&gt;
|88 .. 89 || build canal toolbar and cursor&lt;br /&gt;
|-&lt;br /&gt;
|90 || fast forward&lt;br /&gt;
|-&lt;br /&gt;
|91 .. 92 || level land toolbar and cursor&lt;br /&gt;
|-&lt;br /&gt;
|93 .. 96 || sell vehicle&lt;br /&gt;
|-&lt;br /&gt;
|97 .. 100 || sell all vehicles&lt;br /&gt;
|-&lt;br /&gt;
|101 .. 104 || replace vehicle&lt;br /&gt;
|-&lt;br /&gt;
|105 || sell chain of rail vehicles&lt;br /&gt;
|-&lt;br /&gt;
|106 .. 113 || clone vehicles button and cursors&lt;br /&gt;
|-&lt;br /&gt;
|114 .. 117 || create vehicle group button&lt;br /&gt;
|-&lt;br /&gt;
|118 .. 121 || delete vehicle group button&lt;br /&gt;
|-&lt;br /&gt;
|122 .. 125 || rename vehicle group button&lt;br /&gt;
|-&lt;br /&gt;
|126 .. 133 || group replace on / off button&lt;br /&gt;
|-&lt;br /&gt;
|134 || road toolbar: build one-way roads&lt;br /&gt;
|-&lt;br /&gt;
|135 || signal toolbar: convert signals&lt;br /&gt;
|-&lt;br /&gt;
|136 .. 137|| build rivers toolbar and cursor&lt;br /&gt;
|-&lt;br /&gt;
|138 .. 143 || OSK&lt;br /&gt;
|-&lt;br /&gt;
|144 || switch toolbar&lt;br /&gt;
|-&lt;br /&gt;
|145 .. 146 || build aqueduct toolbar and cursor&lt;br /&gt;
|-&lt;br /&gt;
|147 .. 148 || (+) and (-) icon&lt;br /&gt;
|-&lt;br /&gt;
|149 || window resize left&lt;br /&gt;
|-&lt;br /&gt;
|150 || play music right-to-left languages&lt;br /&gt;
|-&lt;br /&gt;
|151 .. 152 || shade / unshade&lt;br /&gt;
|-&lt;br /&gt;
|153 || debug&lt;br /&gt;
|-&lt;br /&gt;
|154 .. 157 || vehicle profit icons&lt;br /&gt;
|-&lt;br /&gt;
|158 || unread news&lt;br /&gt;
|-&lt;br /&gt;
|159 || exclusive transport rights&lt;br /&gt;
|-&lt;br /&gt;
|160 || autoreplace protection&lt;br /&gt;
|-&lt;br /&gt;
|161 || autoreplace defined&lt;br /&gt;
|-&lt;br /&gt;
|162 .. 165 || Town happiness indicator: N/A, appalling, mediocre and good&lt;br /&gt;
|-&lt;br /&gt;
|166 .. 167 || Icons for delete to the left resp. right&lt;br /&gt;
|-&lt;br /&gt;
|168 || Default window size&lt;br /&gt;
|-&lt;br /&gt;
|169 .. 173 || Story book: Main toolbar icon, goto place, unfinished goal, finished goal, broken goal&lt;br /&gt;
|-&lt;br /&gt;
|174 || Smallmap cargoflow button&lt;br /&gt;
|-&lt;br /&gt;
|175 .. 178 || Icons for group livery selection&lt;br /&gt;
|-&lt;br /&gt;
|179 .. 183 || NotRoadTypes toolbar and cursor icons&lt;br /&gt;
|-&lt;br /&gt;
|184 || {{ottd|1.11|g8dda0ec4f}} window title bar: rename vehicle/station/town/...&lt;br /&gt;
|-&lt;br /&gt;
|185 || {{ottd|1.11|g8dda0ec4f}} window title bar: go to location of vehicle/station/town/industry/...&lt;br /&gt;
|-&lt;br /&gt;
|186 .. 190 || {{ottd|1.12|gfda1a590f6}} multiplayer GUI: chat, admin action, join team, self player, host player&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 16 / 96 Airport preview sprites ====&lt;br /&gt;
[[File:airport_preview_commuter.png|right]]&lt;br /&gt;
Preview sprites for the airports in the order&lt;br /&gt;
# Small airport&lt;br /&gt;
# City airport&lt;br /&gt;
# Heliport&lt;br /&gt;
# Metropolitan airport&lt;br /&gt;
# International airport&lt;br /&gt;
# Commuter airport&lt;br /&gt;
# Heli depot&lt;br /&gt;
# Intercontinental airport&lt;br /&gt;
# Heli station&lt;br /&gt;
&lt;br /&gt;
Sprites are without any offsets and should all be the same size. Make sure so by using the forbid cropping.&lt;br /&gt;
&lt;br /&gt;
==== 17 / 97 Tunnel overlay sprites ====&lt;br /&gt;
[[File:tunnel_overlays.png|right]]&lt;br /&gt;
The sprites provide the ground for the tunnel sprites to be used by railtype NewGRFs which only need to provide the tunnel portals. They must be provided for both terrain types which could be used in any given climate (grass; grass+snow; grass+desert; grass).&lt;br /&gt;
&lt;br /&gt;
=== num-sprites ===&lt;br /&gt;
&lt;br /&gt;
The number of sprites that follow.&lt;br /&gt;
&lt;br /&gt;
Since TTDPatch 2.0.1 alpha 49, this value is an extended byte.&lt;br /&gt;
&lt;br /&gt;
Note that it is not generally an error to provide more sprites than required, but this does expend sprite slots unnecessarily.&lt;br /&gt;
&lt;br /&gt;
=== offset ===&lt;br /&gt;
&lt;br /&gt;
The offset in the Action 5 assignable block of sprites. This term is only read when bit 7 of the type has been set. It can be used to only replace a subset of sprites from a set.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; When creating a TTDPatch compatible grf, you have to skip the OpenTTD specific Action 05&#039;s using an Action 09 rather than an Action 07. Using the latter will result in an error on your Action 05 when using the grf in TTDPatch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; NFORenum distinguishes Action5 with no offset and Action5 with offset 0. While they have technically the same effect, NFORenum assumes an Action5 with no offset has the intention to replace all sprites and checks the number of sprites accordingly. An Action5 with offset is considered to only replace a subset of the sprites, so the sprites are not checked for completeness.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace the piers for the aqueduct&lt;br /&gt;
 1457 * 3        05 12 02 06 // action5, type 12, 2 sprites, at offset 6 into that type&lt;br /&gt;
    9 sprites/png/terrain/waterfeatures.png 546 8 09 23 33 -26 0&lt;br /&gt;
   10 sprites/png/terrain/waterfeatures.png 594 8 09 23 33 -5 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=RandomAction2&amp;diff=4705</id>
		<title>RandomAction2</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=RandomAction2&amp;diff=4705"/>
		<updated>2024-01-16T19:58:22Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add road stops triggers section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
Unlike [[VariationalAction2]], whose results are always determined by a predictable decision, RandomAction2 can use randomized results to pick one of several [[Action2]] entries.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The data looks as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Sprite-number&amp;gt; * &amp;lt;Length&amp;gt; 02 &amp;lt;feature&amp;gt; &amp;lt;set-id&amp;gt; &amp;lt;nowiki&amp;gt;[80|83]&amp;lt;/nowiki&amp;gt; &amp;lt;random-triggers&amp;gt; &amp;lt;randbit&amp;gt; &amp;lt;nrand&amp;gt; &amp;lt;set-ids&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From TTDPatch 2.6 r1850 and OpenTTD r12452, and &#039;&#039;&#039;for vehicles only&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Sprite-number&amp;gt; * &amp;lt;Length&amp;gt; 02 &amp;lt;feature&amp;gt; &amp;lt;set-id&amp;gt; 84 &amp;lt;count&amp;gt; &amp;lt;random-triggers&amp;gt; &amp;lt;randbit&amp;gt; &amp;lt;nrand&amp;gt; &amp;lt;set-ids&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!&#039;&#039;&#039;Element&#039;&#039;&#039;!![[GRFActionsDetailed|&#039;&#039;&#039;Size&#039;&#039;&#039;]]!!&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;Sprite-number&amp;gt;||dec||A sequential sprite number&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;length&amp;gt;||dec||The total number of bytes used in this action.&lt;br /&gt;
|-&lt;br /&gt;
|02||B||Defines action 02&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;feature&amp;gt;||B||For what type of vehicle/station/... should this definition be used?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;set-id&amp;gt;||B||The ID of this action 2 (used like a cargo ID)&lt;br /&gt;
|-&lt;br /&gt;
|80, 83, 84||B||Type of random action, see below.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;count&amp;gt;||B||(when present) Location of controlling vehicle.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;random-triggers&amp;gt;||B||When to re-randomize&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;randbit&amp;gt;||B||What random bit to use for this action 2&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nrand&amp;gt;||B||Number of set-ids to choose from, must be a power of 2&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;set-ids&amp;gt;||W||Action 2 set-ids to choose from.&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||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;
|0D||Airports&lt;br /&gt;
|-&lt;br /&gt;
|0F||Objects&lt;br /&gt;
|-&lt;br /&gt;
|10||Railtypes&lt;br /&gt;
|-&lt;br /&gt;
|11||Airport Tiles&lt;br /&gt;
|-&lt;br /&gt;
|12||Roadtypes&lt;br /&gt;
|-&lt;br /&gt;
|13||Tramtypes&lt;br /&gt;
|-&lt;br /&gt;
|14||Road Stops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== set-ID ===&lt;br /&gt;
&lt;br /&gt;
This defines the number of this action 2. &amp;amp;nbsp;The ID can then be used as target in an action 3 or another variational/random action 2.&lt;br /&gt;
&lt;br /&gt;
=== 80/83/84 ===&lt;br /&gt;
&lt;br /&gt;
Use 80 to randomize the object (vehicle, station, building, industry, object) based on its own triggers and bits.&lt;br /&gt;
&lt;br /&gt;
Use 83 to randomize the object based on its &amp;quot;related&amp;quot; object (s.b.).&lt;br /&gt;
&lt;br /&gt;
Use 84 to randomize the vehicle based on any vehicle in the consist.&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Feature!!Related object&lt;br /&gt;
|-&lt;br /&gt;
|Vehicles (00-03)||First vehicle of consist&lt;br /&gt;
|-&lt;br /&gt;
|Stations (04)||N/A&lt;br /&gt;
|-&lt;br /&gt;
|Houses (07)||N/A&lt;br /&gt;
|-&lt;br /&gt;
|Industry tiles (09)||Industry containing tile&lt;br /&gt;
|-&lt;br /&gt;
|Industries (0A)||N/A&lt;br /&gt;
|-&lt;br /&gt;
|Objects (0F)||N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== count ===&lt;br /&gt;
&lt;br /&gt;
For type 84, this specifies which vehicle&#039;s random bits this vehicle will be using and/or modifying.&lt;br /&gt;
&lt;br /&gt;
The low nibble (bits 0-3) specifies how far to count from the starting vehicle. If it is zero, the count will be read from GRF register 100h instead.&lt;br /&gt;
&lt;br /&gt;
The high nibble (bits 6-7, actually) specifies which vehicle is the starting vehicle, and which direction to count:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||count back (away from the engine), starting at this vehicle&lt;br /&gt;
|-&lt;br /&gt;
|4||count forward (toward the engine), starting at this vehicle.&lt;br /&gt;
|-&lt;br /&gt;
|8||count back, starting at the engine&lt;br /&gt;
|-&lt;br /&gt;
|C||count back, starting at the first vehicle in this chain of vehicles with the same ID, as for vehicle variable 41&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bits 4-5 are reserved and must be zero, so other values of the high nibble are not allowed.&lt;br /&gt;
&lt;br /&gt;
=== random-triggers ===&lt;br /&gt;
&lt;br /&gt;
This is a bit mask of triggers which cause re-randomizing. Normally, any matching trigger causes the graphics to be randomized again, but if you add 80 to the bitmask, the re-randomizing only happens if &#039;&#039;&#039;all&#039;&#039;&#039; triggers have occurred.&lt;br /&gt;
&lt;br /&gt;
Trigger bits are feature-specific, see below.&lt;br /&gt;
&lt;br /&gt;
Note, that rerandomisation only occurs in the graphics chain, not for callbacks. So, if you use a random action only inside a callback and want to rerandomise the bits, you have to add a &amp;quot;dummy&amp;quot; rerandomisation RA2 into the graphics chain.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 -1 * -1   02 04 02&lt;br /&gt;
           80                         // random in callback&lt;br /&gt;
           00                         // no triggers&lt;br /&gt;
           00                         // first random bit to use&lt;br /&gt;
           \b 16                      // number of cases&lt;br /&gt;
           \w 10 \w 11 \w 12 \w 13    // random cases&lt;br /&gt;
           \w 14 \w 15 \w 16 \w 17&lt;br /&gt;
           \w 18 \w 19 \w 20 \w 21&lt;br /&gt;
           \w 22 \w 23 \w 24 \w 25&lt;br /&gt;
 &lt;br /&gt;
 -1 * -1   02 04 01&lt;br /&gt;
           85 0C 00 \wx FFFF&lt;br /&gt;
           01&lt;br /&gt;
           \w 2 \w 14 \w 14           // callback 14&lt;br /&gt;
           \w 3                       // graphics chain&lt;br /&gt;
 &lt;br /&gt;
 -1 * -1   02 04 00&lt;br /&gt;
           80                         // dummy random outside callback&lt;br /&gt;
           04                         // train arrival&lt;br /&gt;
           00                         // first bit to rerandomise&lt;br /&gt;
           \b 16                      // number of cases&lt;br /&gt;
           \w 1 \w1 \w 1 \w1          // all cases the same, only for triggering rerandomisation&lt;br /&gt;
           \w 1 \w1 \w 1 \w1&lt;br /&gt;
           \w 1 \w1 \w 1 \w1&lt;br /&gt;
           \w 1 \w1 \w 1 \w1&lt;br /&gt;
 &lt;br /&gt;
 -1 * -1   03 04 01 00 00 \w 0        // action 3&lt;br /&gt;
&lt;br /&gt;
=== randbit ===&lt;br /&gt;
&lt;br /&gt;
{{ottdp|no|&amp;amp;lt;2.5|ttdprev=alpha30}} For versions before TTDPatch 2.0.1 alpha 30, leave this at 00. It doesn&#039;t quite work the way intended (it was supposed to allow independent random chains, but currently everything is re-randomized at the same time, thereby defeating this mechanism).&lt;br /&gt;
&lt;br /&gt;
{{ottdp| |2.5|ttdprev=alpha 30}} Since TTDPatch 2.0.1 alpha 30, only those bits that actually get triggered will be re-randomized. Prior versions always re-randomized all bits. This will make it possible to have independent sets of bits for independent triggers (or untriggered bits, set only at the time of purchase). Setting randbit determines the first bit to be re-randomized, as well as basing the random graphics on. The total number of bits used is the 2-logarithm of nrand below (e.g., for nrand=16, 4 bits are used).&lt;br /&gt;
&lt;br /&gt;
=== nrand ===&lt;br /&gt;
&lt;br /&gt;
Number of different sets to choose from. &amp;amp;nbsp;This must be a power of 2, i.e. 2, 4, 8, 16 etc.&lt;br /&gt;
&lt;br /&gt;
=== set-ids ===&lt;br /&gt;
&lt;br /&gt;
Action 2 IDs to randomly choose from&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|Feature&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Random bits&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|Triggers&lt;br /&gt;
|-&lt;br /&gt;
!Self!!Related&lt;br /&gt;
|-&lt;br /&gt;
|Vehicles&lt;br /&gt;
|8&lt;br /&gt;
{{ottdp|14.0|no}} 16&lt;br /&gt;
|8 read-only&lt;br /&gt;
{{ottdp|14.0|no}} 16 read-only&lt;br /&gt;
|yes&lt;br /&gt;
|-&lt;br /&gt;
|Stations||16 + 4 &amp;lt;ref name=&amp;quot;stationshared&amp;quot;&amp;gt;16 Bits shared for the whole station/airport (airport and station share the same bits). 4 bits per tile.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;TTDPatch actually only implements 8 shared random bits (plus 4 per tile). Bits 8-15 are always zero.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|no||yes&lt;br /&gt;
|-&lt;br /&gt;
|Canals||8||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Houses||8||no||yes&lt;br /&gt;
|-&lt;br /&gt;
|Industry tiles||8||16||yes&lt;br /&gt;
|-&lt;br /&gt;
|Industries||16||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Airports||16 &amp;lt;ref name=&amp;quot;stationshared&amp;quot;/&amp;gt;||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Objects||8||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Railtypes||2||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Roadtypes||2||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Tramtypes||2||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Airport tiles||16 + 4 &amp;lt;ref name=&amp;quot;stationshared&amp;quot;/&amp;gt;||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Road stops||16 + 8 &amp;lt;ref name=&amp;quot;stationshared&amp;quot;/&amp;gt;||no||no&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vehicles ===&lt;br /&gt;
&lt;br /&gt;
Vehicles have 8 random bits, increased to 16 since {{ottdp|14.0|no}}, and the following triggers:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Version!!Trigger&lt;br /&gt;
|-&lt;br /&gt;
|0||01||{{ottdp|0.6|2.0}}||Vehicle gets new load of cargo (only after it was empty)&lt;br /&gt;
|-&lt;br /&gt;
|1||02||{{ottdp|0.6|2.0}}||Vehicle enters a depot and is serviced&lt;br /&gt;
|-&lt;br /&gt;
|2||04||{{ottdp|0.6|2.5}}||The consist has unloaded all cargo&lt;br /&gt;
|-&lt;br /&gt;
|3||08||{{ottdp|0.6|2.5}}||Any vehicle of the consist receives cargo&lt;br /&gt;
|-&lt;br /&gt;
|4||10||{{ottdp|0.6|2.5}}||[[Callbacks#32-day callback (32) |Callback 32]] returned 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The consist trigger bits 2 and 3 allow re-randomizing whenever the consist receives cargo after fully unloading. They should be used with action 2 type 80, not 83, and the random-triggers variable should have 80 added to it, to make the re-randomizing happen only if the consist was empty and &#039;&#039;&#039;then&#039;&#039;&#039; received new cargo.&lt;br /&gt;
&lt;br /&gt;
Vehicles can read the random bits of other vehicles (using random action type 83 or 84), but they can only trigger&lt;br /&gt;
rerandomisation of their own bits. Do not specify any triggers for rerandomisation when accessing random bits of other vehicles (via type 83 or 84), it will not do what you think.&lt;br /&gt;
&lt;br /&gt;
=== Stations ===&lt;br /&gt;
&lt;br /&gt;
Stations have 16+4 random bits. Bits 0 to 15 are a property of the station as a whole, and bits 16 to 19 are different for each tile. &amp;amp;nbsp;To get tile-based randomness, therefore use randbit=10 and nrand of no more than 16 (since only 4 random bits are available per tile).&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Version!!Trigger&lt;br /&gt;
|-&lt;br /&gt;
|0||01||{{ottdp|1.3|2.5}}||new cargo waiting&lt;br /&gt;
|-&lt;br /&gt;
|1||02||{{ottdp|1.3|2.5}}||no more cargo&lt;br /&gt;
|-&lt;br /&gt;
|2||04||{{ottdp|1.3|2.5}}||train arrives (starts unloading/loading)&lt;br /&gt;
|-&lt;br /&gt;
|3||08||{{ottdp|1.3|2.5}}||train leaves (done unloading &amp;amp; loading)&lt;br /&gt;
|-&lt;br /&gt;
|4||10||{{ottdp|1.3|2.5}}||train loads or unloads cargo&lt;br /&gt;
|-&lt;br /&gt;
|5||20||{{ottdp|1.3|2.5}}||train reserves platform (using PBS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Also note that none of the above triggers will actually trigger unless prop. 12 has at least one bit set. &amp;amp;nbsp;Triggers 01 will be triggered for any of the cargo types set in prop. 12, but trigger 02 will only be triggered if all of those cargo types have no more cargo waiting. Triggers 04, 08 and 20 are triggered no matter what cargo types the train transports, as long as prop. 12 is not zero.&lt;br /&gt;
&lt;br /&gt;
Triggers 04, 08, 10 and 20 only affect the platform on which they occur, as well as the random bits of the station, but not other platforms.&lt;br /&gt;
&lt;br /&gt;
Because the &#039;occured triggers&#039; are only stored once per station (not distinguishing tiles or cargo types), adding 80 to &lt;br /&gt;
random-triggers does not make a lot of sense.&lt;br /&gt;
&lt;br /&gt;
=== Town building triggers ===&lt;br /&gt;
&lt;br /&gt;
Town buildings have 8 random bits.&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Version!!Trigger&lt;br /&gt;
|-&lt;br /&gt;
|0||01||{{ottdp|0.6|2.5}}||the building tile is processed in the periodic tile processing loop&lt;br /&gt;
|-&lt;br /&gt;
|1||02||{{ottdp|0.6|2.5}}||the top tile of the building is processed in the periodic tile processing loop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The periodic tile processing loop constantly processes the tiles of the map, processing any given tile in every 256 ticks (approx. 3.5 TTD days). Since no &amp;quot;real&amp;quot; event happens to town buildings, you have only this opportunity to re-randomize the look of your building.&lt;br /&gt;
&lt;br /&gt;
If every 3.5 days is too fast for you, you can multiply the time-out by setting property 16 for the given tile. The time-out is 256 ticks*(prop. 16+1), so 0 means every 3.5 days, 1 means every 7 days, 2 means every 10.5 days and so on.&lt;br /&gt;
&lt;br /&gt;
If trigger 02 is activated, all parts of the building that has this trigger set will get the same random bits, allowing you to randomize a multi-tile building as one unit. On the other hand, if the tiles of a multi-tile building have trigger 1 set, all tiles will be randomized individually. Note that all tiles of a multi-tile building get the same value when building the building.&lt;br /&gt;
&lt;br /&gt;
=== Industry tile triggers ===&lt;br /&gt;
&lt;br /&gt;
Industry tiles have 8+16 random bits. Accessed through random action 2 type 80, you get 8 tile-specific bits, and accessed through random action 2 type 83, you get 16 industry-specific bits. The triggers are the same for both. Triggers 02 and 04 are triggered for all tiles of the industry at once. Every tile can rerandomise both its own random bits and those of the industry. That is every tile can specify some bits of the industry to rerandomize, and the union of all those bits will be rerandomsied at the end.&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Version!!Trigger&lt;br /&gt;
|-&lt;br /&gt;
|0||01||{{ottdp|0.6|2.5}}||the building tile is processed in the periodic tile processing loop&amp;lt;ref&amp;gt;{{ottdp|no| |}} Rerandomisation of the shared bits of the industry does not happen properly in current TTDPatch.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|1||02||{{ottdp|0.6|2.5}}||triggers simultaneously for all tiles of the industry every 256 ticks. If the industry is a primary one, output cargo is generated at the same time.&lt;br /&gt;
|-&lt;br /&gt;
|2||04||{{ottdp|0.6|2.5}}||cargo is delivered to the industry. If the industry is a processing one, output cargo is generated at the same time.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trigger 1 works similarly to trigger 1 for houses except that you cannot multiply the timeout: it&#039;s always 256 ticks.&lt;br /&gt;
&lt;br /&gt;
Industry tiles can rerandomise both their own random bits as well as the random bits of the industry (via random action type 83).&lt;br /&gt;
The remembered triggers for rerandomisation with 80 added to the triggers are in both cases the same per tile.&lt;br /&gt;
&lt;br /&gt;
Industries have random bits. However, they can only be rerandomised by their tiles.&lt;br /&gt;
&lt;br /&gt;
=== Canals ===&lt;br /&gt;
&lt;br /&gt;
Canals / Rivers have 8 random bits.&lt;br /&gt;
&lt;br /&gt;
There is currently no way to influence the random byte creation via triggers, internally the bits are feed from VarAction2Canals var 83 that is set when building a canal. Feature ids not supported by VarAction2Canals are undefined and should never be used.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
Objects have 8 random bits per tile of the object.&lt;br /&gt;
&lt;br /&gt;
There are no triggers for objects however.&lt;br /&gt;
&lt;br /&gt;
Also note that the random bits are unique to each tile in the object, and are not shared across the whole object.&lt;br /&gt;
&lt;br /&gt;
=== Railtypes ===&lt;br /&gt;
&lt;br /&gt;
Rail tiles have 2 pseudo random bits, based on tile location.&lt;br /&gt;
&lt;br /&gt;
There are no triggers.&lt;br /&gt;
&lt;br /&gt;
=== Roadtypes ===&lt;br /&gt;
&lt;br /&gt;
Road tiles have 2 pseudo random bits, based on tile location.&lt;br /&gt;
&lt;br /&gt;
There are no triggers.&lt;br /&gt;
&lt;br /&gt;
=== Tramtypes ===&lt;br /&gt;
&lt;br /&gt;
Tram tiles have 2 pseudo random bits, based on tile location.&lt;br /&gt;
&lt;br /&gt;
There are no triggers.&lt;br /&gt;
&lt;br /&gt;
=== Road stops ===&lt;br /&gt;
&lt;br /&gt;
Road stops have 16+4 random bits. Bits 0 to 15 are a property of the station as a whole, and bits 16 to 19 are different for each tile. &amp;amp;nbsp;To get tile-based randomness, therefore use randbit=10 and nrand of no more than 16 (since only 4 random bits are available per tile).&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Version!!Trigger&lt;br /&gt;
|-&lt;br /&gt;
|0||01||{{ottdp|14}}||new cargo waiting&lt;br /&gt;
|-&lt;br /&gt;
|1||02||{{ottdp|14}}||no more cargo&lt;br /&gt;
|-&lt;br /&gt;
|2||04||{{ottdp|14}}||road vehicle arrives (starts unloading/loading)&lt;br /&gt;
|-&lt;br /&gt;
|3||08||{{ottdp|14}}||road vehicle leaves (done unloading &amp;amp; loading)&lt;br /&gt;
|-&lt;br /&gt;
|4||10||{{ottdp|14}}||road vehicle loads or unloads cargo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Also note that none of the above triggers will actually trigger unless prop. 0D has at least one bit set. &amp;amp;nbsp;Triggers 01 will be triggered for any of the cargo types set in prop. 0D, but trigger 02 will only be triggered if all of those cargo types have no more cargo waiting. Triggers 04 and 08 are triggered no matter what cargo types the road vehicle transports, as long as prop. 0D is not zero.&lt;br /&gt;
&lt;br /&gt;
Triggers 04, 08, and 10 only affect the tile on which they occur, as well as the random bits of the station, but not other tiles.&lt;br /&gt;
&lt;br /&gt;
Because the &#039;occured triggers&#039; are only stored once per station (not distinguishing tiles or cargo types), adding 80 to &lt;br /&gt;
random-triggers does not make a lot of sense.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other features ===&lt;br /&gt;
&lt;br /&gt;
All features not mentioned in the list above have neither random bits nor triggers, including towns (which would be accessed using random action 2 type 83 for stations and industries).&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action3&amp;diff=4689</id>
		<title>Action3</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action3&amp;diff=4689"/>
		<updated>2023-12-24T14:17:01Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add road stops to cargo IDs table&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;
|12||[[Action3/Roadtypes|Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|13||[[Action3/Tramtypes|Tramtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|14||Road Stops&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;
Since OpenTTD 14.0, each ID is an extended byte for all features.&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;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Feature !! cids&lt;br /&gt;
|-&lt;br /&gt;
| 00..03 vehicles ||&lt;br /&gt;
* 00..FE: cargo-type (index in [[Action0/Global Settings#Cargo translation table 09|cargo translation table]]; cargobit if no table present)&lt;br /&gt;
* FF: purchase list &amp;lt;ref&amp;gt;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&lt;br /&gt;
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.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* default: used if none of the listed cids apply&lt;br /&gt;
|-&lt;br /&gt;
| 04 stations ||&lt;br /&gt;
* 00..FD: cargo-type (index in [[Action0/Global Settings#Cargo translation table 09|cargo translation table]]; cargobit if no table present) waiting at the station. The waiting amount of this cargo is used in [[Action2/Stations|Action2]] to decide the spriteset.&lt;br /&gt;
* FE: used if none of the listed cids apply. [[Action2/Stations|Action2]] will assume &amp;quot;zero waiting cargo&amp;quot;.&lt;br /&gt;
* FF: purchase list&lt;br /&gt;
* default: used if none of the listed cids apply. [[Action2/Stations|Action2]] will use &amp;quot;sum of all waiting cargos&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| 05 canals || default only&lt;br /&gt;
|-&lt;br /&gt;
| 07 houses || default only&lt;br /&gt;
|-&lt;br /&gt;
| 09 industry tiles || default only&lt;br /&gt;
|-&lt;br /&gt;
| 0A industries || default only&lt;br /&gt;
|-&lt;br /&gt;
| 0B cargos || default only&lt;br /&gt;
|-&lt;br /&gt;
| 0C sound effects || default only&lt;br /&gt;
|-&lt;br /&gt;
| 0D airports || default only&lt;br /&gt;
|-&lt;br /&gt;
| 0E signals || default only&lt;br /&gt;
|-&lt;br /&gt;
| 0F objects ||&lt;br /&gt;
* FF: purchase list&lt;br /&gt;
* default: used if none of the listed cids apply&lt;br /&gt;
|-&lt;br /&gt;
| 10 rail types || special cids, see [[Action3/Railtypes#cargo-type|here]]&lt;br /&gt;
|-&lt;br /&gt;
| 11 airport tiles || default only&lt;br /&gt;
|-&lt;br /&gt;
| 12 road types || special cids, see [[Action3/Tramtypes#cargo-type|here]]&lt;br /&gt;
|-&lt;br /&gt;
| 13 tram types || special cids, see [[Action3/Roadtypes#cargo-type|here]]&lt;br /&gt;
|-&lt;br /&gt;
| 14 road stops ||&lt;br /&gt;
* 00..FD: cargo-type (index in [[Action0/Global Settings#Cargo translation table 09|cargo translation table]]; cargobit if no table present) waiting at the road stop.&lt;br /&gt;
* FE: used if none of the listed cids apply.&lt;br /&gt;
* FF: purchase list&lt;br /&gt;
* default: used if none of the listed cids apply.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&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>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Houses&amp;diff=4657</id>
		<title>Action0/Houses</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Houses&amp;diff=4657"/>
		<updated>2023-11-25T12:28:28Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Fix size values for properties 1F, 20 (incorrectly changed in formatting edit)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
For town buildings (or simply houses), the offset defines the first house ID for this action 0. House IDs, like station IDs, are unique within each grf file, and in total each game can only have 255 IDs in TTDPatch and 512 IDs in OpenTTD for all active grf files.&lt;br /&gt;
&lt;br /&gt;
To start using a house ID, you must first define it by setting its property 08 (see below). If you try to modify a house ID whose property 08 isn&#039;t set, your request is ignored, but not reported as an error, either.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Number!![[GRFActionsDetailed|Size]]!!Version!!Description&lt;br /&gt;
|-&lt;br /&gt;
|08||B||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||Substitute building type&lt;br /&gt;
|-&lt;br /&gt;
|09||B||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||Building flags&lt;br /&gt;
|-&lt;br /&gt;
|0A||W||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||Availability years&lt;br /&gt;
|-&lt;br /&gt;
|0B||B||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||Population&lt;br /&gt;
|-&lt;br /&gt;
|0C||B||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||Mail generation multiplier&lt;br /&gt;
|-&lt;br /&gt;
|0D||B||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||Passenger acceptance&lt;br /&gt;
|-&lt;br /&gt;
|0E||B||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||Mail acceptance&lt;br /&gt;
|-&lt;br /&gt;
|0F||B||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||Goods, food or fizzy drinks acceptance&lt;br /&gt;
|-&lt;br /&gt;
|10||W||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||LA rating decrease on removal (should be set to the same value for every tile for multi-tile buildings)&lt;br /&gt;
|-&lt;br /&gt;
|11||B||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||Removal cost multiplier (should be set to the same value for every tile for multi-tile buildings)&lt;br /&gt;
|-&lt;br /&gt;
|12||W||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||Building name ID&lt;br /&gt;
|-&lt;br /&gt;
|13||W||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||Building availability mask&lt;br /&gt;
|-&lt;br /&gt;
|14||B||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||House callback flags&lt;br /&gt;
|-&lt;br /&gt;
|15||B||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||House override byte&lt;br /&gt;
|-&lt;br /&gt;
|16||B||{{ottdp|0.6|2.5|ttdprev=alpha 34}}||Periodic refresh multiplier&lt;br /&gt;
|-&lt;br /&gt;
|17||4*B||{{ottdp|0.6|2.5|ttdprev=alpha 35}}||Four random colours to use&lt;br /&gt;
|-&lt;br /&gt;
|18||B||{{ottdp|0.6|2.5|ttdprev=alpha 35}}||Relative probability of appearing&lt;br /&gt;
|-&lt;br /&gt;
|19||B||{{ottdp|0.6|2.5|ttdprev=alpha 38}}||Extra flags&lt;br /&gt;
|-&lt;br /&gt;
|1A||B||{{ottdp|0.6|2.5|ttdprev=alpha 39}}||Animation frames&lt;br /&gt;
|-&lt;br /&gt;
|1B||B||{{ottdp|0.6|2.5|ttdprev=alpha 39}}||Animation speed&lt;br /&gt;
|-&lt;br /&gt;
|1C||B||{{ottdp|0.6|2.5|ttdprev=alpha 43}}||Class of the building type&lt;br /&gt;
|-&lt;br /&gt;
|1D||B||{{ottdp|0.6|2.5|ttdprev=alpha 55 vcs 2}}||Callback flags 2&lt;br /&gt;
|-&lt;br /&gt;
|1E||D||{{ottdp|0.6|2.5|ttdprev=alpha 55 vcs 2}}||Accepted cargo types&lt;br /&gt;
|-&lt;br /&gt;
|1F||B||{{ottdp|0.6|2.6|ttdprev=r1554}}||Minimum life span in years&lt;br /&gt;
|-&lt;br /&gt;
|20||V||{{ottdp|1.2|2.6|ottdrev=r23072|ttdprev=r1677}}||Cargo acceptance watch list&lt;br /&gt;
|-&lt;br /&gt;
|21||W||{{ottdp|0.7|no|ottdrev=r13437}}||Long year (zero based) of minimum appearance&lt;br /&gt;
|-&lt;br /&gt;
|22||W||{{ottdp|0.7|no|ottdrev=r13437}}||Long year (zero based) of maximum appearance&lt;br /&gt;
|-&lt;br /&gt;
|23||V||{{ottdp|1.9|no|ottdrev=48b334cf}}||Tile acceptance list &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When a town decides to expand, each active house type (both old and new ones) has a uniform probability to appear, so the more new houses you define, the fewer old TTD buildings will appear.&lt;br /&gt;
&lt;br /&gt;
== Descriptions ==&lt;br /&gt;
&lt;br /&gt;
=== Substitute building type (08) ===&lt;br /&gt;
&lt;br /&gt;
This building type will be used instead of your new one if your definition isn&#039;t available for any reason (the grf file is not found, for example).&lt;br /&gt;
&lt;br /&gt;
Don&#039;t set a substitute building type that is larger than your new one (for example, don&#039;t set 14 (stadium) for an 1x1 building) because this may corrupt savegames. Setting this property automatically copies every property of the substitute building to your new building, so you don&#039;t have to change properties that are the same as the substitute.&lt;br /&gt;
&lt;br /&gt;
House flags 40 and 80 are exceptions; these flags are never set automatically. Only the first property 08 setting copies properties; if you later change it, properties will stay.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a special use of this property beginning from alpha 72: if you set it to FFh, you can disable an old house type. In this case, the ID used must be the number of old house type you want to disable. Disabling only prevents building the type in towns; houses already present on the map will stay unchanged. The type can still be overridden, and overriding affects houses present on the map.&lt;br /&gt;
&lt;br /&gt;
If this house&#039;s action 3 appears before this property is set, the action 3 will have no effect.&lt;br /&gt;
&lt;br /&gt;
=== Building flags (09) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||1||This is a 1x1 building&lt;br /&gt;
|-&lt;br /&gt;
|1||2||This building can be built only on flat land (if clear, foundations are automatically displayed on sloped land)&lt;br /&gt;
|-&lt;br /&gt;
|2||4||This is a 2x1 building&amp;lt;ref name=&amp;quot;large&amp;quot;&amp;gt;If your building isn&#039;t 1x1, set flags for the north tile, then define the next 1 or 3 tiles tiles (by setting their property 8). The only bit that can be set in the flags of additional tiles is bit 5 (animation). There should be no property 8 setting between the first tile and the additional tiles.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|3||8||This is a 1x2 building&amp;lt;ref name=&amp;quot;large&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|4||10||This is a 2x2 building&amp;lt;ref name=&amp;quot;large&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;For 2x2 buildings, the first additional tile is the east one, the second is the west part and the third is the south part. You probably want to set the substitute for additional tiles to a TTD additional tile whose flags are already zero. 2x2 buildings are always built on flat land no matter how bit 1 is set.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5||20||Animation flag, set in tiles 04 and 05 (large office block). New buildings have a different animation scheme than large office blocks, but animation is still enabled with this bit.&amp;lt;ref&amp;gt;The animation flag works on a per-tile basis, so you should enable it for additional tiles of multi-tile buildings as well if you want all tiles to be animated.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|6||40||This building is a church&amp;lt;ref name=&amp;quot;only1&amp;quot;&amp;gt;Only one church and one stadium can exist in a town. The town won&#039;t build buildings with the according flag set until the old church/stadium is removed. (This can be done by either the town or a player)&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|7||80||This building is a stadium&amp;lt;ref name=&amp;quot;only1&amp;quot; /&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Availability years (0A) ===&lt;br /&gt;
&lt;br /&gt;
The low byte is the minimum year, the high is the maximum. The building can only be built between these two years (inclusive). 1920 is added to both bytes before using the values.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|no| }}&lt;br /&gt;
Since the year counting stops in TTDPatch in 2070 even with [[ttwiki:EternalGame|EternalGame]] on, start years above 150 mean &amp;quot;never&amp;quot;, and end years above 150 mean &amp;quot;forever&amp;quot;. In OpenTTD there is no limit for the maximum year (resp. it is 5000000).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING:&#039;&#039;&#039; Don&#039;t set the start year below 1930 (0Ah) unless you know what you&#039;re doing!&lt;br /&gt;
&lt;br /&gt;
{{ttdp|}} If TTDPatch finds a building that is available before 1930, it will not build old building types until that year, so you have to provide at least one custom building type that is available before 1930 for every [[TownZones|town zone]], or TTD may deadlock while trying to create a random game or expand a town.&lt;br /&gt;
&lt;br /&gt;
{{ottd|}} The availability of all active houses with the lowest availability year is set to start from year 0, so that always at least one house is available irrespective of starting year. Thus, if you de-activate default houses or set an introduction date prior to the default houses introduction year 1930, you should have at least for each [[TownZones|town zone]] a house with the same earliest availability year or you might end up with a situation where no house can be placed in a [[TownZones|town zone]].&lt;br /&gt;
&lt;br /&gt;
=== Population (0B) and Mail generation multiplier (0C) ===&lt;br /&gt;
[[Image:House_production.png|frame|right|Actual house production roughly depends on squared value of the population / mail generation multiplier.]]&lt;br /&gt;
&lt;br /&gt;
The population of the town will be increased by the amount set in prop. 0B if this building is built. Additional house parts should have a population of zero. The higher this value is, the more passengers this building generates.&lt;br /&gt;
&lt;br /&gt;
The higher the mail generation multiplier is, the more mail the building generates. For multi-tile buildings, mail generation is done in per-tile basis, so you can specify different values for every tile, although distributing the generation equally between tiles is suggested.&lt;br /&gt;
&lt;br /&gt;
This is how exactly passengers are generated: In each periodic processing (i.e. every 256 ticks), a random value 0&amp;lt;=X&amp;lt;=255 is generated for each house tile. If X isn&#039;t smaller than the population of the tile, no passengers are generated. Otherwise, X/8+1 passengers are generated (rounded down). If there is a recession going on, the number of generated passengers is halved, but this division gets rounded up instead of down. Mail generation happens in a similar manner, but with a new random value, and checking against the mail generation multiplier instead of the population.&lt;br /&gt;
&lt;br /&gt;
You can further customize how the cargo is generated with the [[Callbacks#Custom_cargo_production_.282E.29 |callback 2E]].&amp;lt;br style=&amp;quot;clear:both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Passenger (0D), Mail (0E) and Good/Food/Fizzy drinks (0F) acceptance ===&lt;br /&gt;
&lt;br /&gt;
The acceptance is given in units of 1/8th and must not be larger than 8 eighths.&lt;br /&gt;
&lt;br /&gt;
For property 0F, positive values indicate that the building accepts goods, and negative values (i.e. FF = 1/8th, FE = 2/8ths etc.) indicate acceptance of food or fizzy drinks, depending on the climate.&lt;br /&gt;
&lt;br /&gt;
All the above three values can be set independently for tiles of multi-tile buildings, since every tile is processed individually when determining what a station accepts.&lt;br /&gt;
&lt;br /&gt;
The type of accepted cargo can be modified using [[Action0Houses#Accepted_cargo_types|property 1E]].&lt;br /&gt;
&lt;br /&gt;
{{ottdp|no| }} Note that in TTDPatch the officefood switch may modify acceptance in the sub-arctic and subtropical climates.&lt;br /&gt;
&lt;br /&gt;
=== Building name ID (12) ===&lt;br /&gt;
&lt;br /&gt;
The ID of the text that should be displayed in the land query window. The name can also be set by [[Action4|action 4]] (see there). Should be set to the same value for every tile for multi-tile buildings.&lt;br /&gt;
&lt;br /&gt;
=== Building availability mask (13) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0..4||1,2,4,8,10||which [[VariationalAction2/Houses#Town zone (42)|town zone(s)]] the building can be built in&lt;br /&gt;
|-&lt;br /&gt;
|11||800||can appear in sub-arctic climate above the snow line&lt;br /&gt;
|-&lt;br /&gt;
|12||1000||can appear in temperate climate&lt;br /&gt;
|-&lt;br /&gt;
|13||2000||can appear in sub-arctic climate below the snow line&lt;br /&gt;
|-&lt;br /&gt;
|14||4000||can appear in subtropical climate&lt;br /&gt;
|-&lt;br /&gt;
|15||8000||can appear in toyland climate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This property should be set to zero for additional building tiles.&lt;br /&gt;
&lt;br /&gt;
=== House callback flags (14,1D) ===&lt;br /&gt;
&lt;br /&gt;
For houses, the following [[callbacks]] can be defined by setting the corresponding bit in property 14:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Variable 0C value!!Version!!Callback&lt;br /&gt;
|-&lt;br /&gt;
|0||1||17||{{ottdp| | }}||decide whether the house can be built on a given tile&lt;br /&gt;
|-&lt;br /&gt;
|1||2||1A||{{ottdp| | }}||decide the following frame of the animations&lt;br /&gt;
|-&lt;br /&gt;
|2||4||1B||{{ottdp| | }}||periodically start/stop the animation&lt;br /&gt;
|-&lt;br /&gt;
|3||8||1C||{{ottdp| | }}||change animation when construction state changes&lt;br /&gt;
|-&lt;br /&gt;
|4||10||1E||{{ottdp| | }}||decide the color of the building&lt;br /&gt;
|-&lt;br /&gt;
|5||20||1F||{{ottdp| | }}||decide the cargos amounts accepted&lt;br /&gt;
|-&lt;br /&gt;
|6||40||20||{{ottdp| | }}||decide the length of the current animation frame&lt;br /&gt;
|-&lt;br /&gt;
|7||80||21||{{ottdp| | }}||trigger destruction of building&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Property 1D was introduced after all bits of property 14 were filled. Its usage is the same, only the meaning of bits is different:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Variable 0C value!!Version!!Callback&lt;br /&gt;
|-&lt;br /&gt;
|0||1||2A||{{ottdp| | }}||decide the cargo types accepted&lt;br /&gt;
|-&lt;br /&gt;
|1||2||2E||{{ottdp| | }}||custom cargo production&lt;br /&gt;
|-&lt;br /&gt;
|2||4||143||{{ottdp| | }}||conditional protection&lt;br /&gt;
|-&lt;br /&gt;
|3||8||14E||{{ottdp|1.0|2.6|ottdrev=r17558|ttdprev=2249}}||decide if default foundations need to be drawn&lt;br /&gt;
|-&lt;br /&gt;
|4||10||14F||{{ottdp|1.0|2.6|ottdrev=r17558|ttdprev=2249}}||allow or deny autosloping below the tile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bit is the bit you have to set, you do this by adding all the values for all the bits. Variable 0C value is what variable 0C will be set to, for checking it in the variational Action2 for callbacks.&lt;br /&gt;
&lt;br /&gt;
Callback flags are ignored for additional building tiles.&lt;br /&gt;
&lt;br /&gt;
=== House override byte (15) ===&lt;br /&gt;
&lt;br /&gt;
Setting this property makes this building appear instead of the given old TTD building type. Setting the property is ignored if the given old house type is already overridden. You can set this property more than once to override more old building types.&lt;br /&gt;
&lt;br /&gt;
No new house of the overridden types will be built in towns.&lt;br /&gt;
&lt;br /&gt;
This property works in a per-tile basis, so you override tiles of old multi-tile buildings individually, although the old type will still be built if you don&#039;t override its north tile.&lt;br /&gt;
&lt;br /&gt;
=== Periodic refresh multiplier (16) ===&lt;br /&gt;
&lt;br /&gt;
This is used for random triggers, and sets how often the tile is re-randomized. When set to X, the tile will be re-randomized on every (X+1)-th periodic processing. (In other words, every (X+1)*256 game ticks.) If you want all tiles to be re-randomized, you must set this (but not necessarily to the same value) for each tile.&lt;br /&gt;
&lt;br /&gt;
If callback 1B is enabled in property 14, it is also called after re-randomizing random bits.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|1.1|2.5|ttdprev=2.5 beta 9}} In TTDPatch versions before TTDPatch 2.6 r1639 and TTDPatch 2.5 beta 9 (including beta 9), this variable could have any value between 0 and 255. After these versions, the upper limit has been lowered to 63. To maintain compatibility, values above 63 will be interpreted as 63.&lt;br /&gt;
&lt;br /&gt;
=== Random colours (17) ===&lt;br /&gt;
&lt;br /&gt;
This specifies four colors used for random painting (see [[Action2HousesIndustryTiles]]). Each byte of the dword defines a color, the values are the same as in Action2, except that numbering starts from zero instead of 775. If not set, this defaults to 04 08 0c 06 (red, blue, orange and green, the colors of the modern office building). Can be set to different values for tiles of multi-tile buildings.&lt;br /&gt;
&lt;br /&gt;
=== Probability (18) ===&lt;br /&gt;
&lt;br /&gt;
This sets the relative probability of this house being built. Old TTD house types have a probability of 16, and this is the default for new types as well.&lt;br /&gt;
&lt;br /&gt;
Increase (or better multiply) this value to make your building appear relatively more often, or decrease (divide) it to make it rarer. If you set this to zero, the house type never appears. The minimal useful value 1 means it&#039;s sixteen times less probable to build this type than a normal type, while the maximum setting of 255 means it&#039;s almost sixteen times more probable.&lt;br /&gt;
&lt;br /&gt;
The probability is relative since the absolute probability depends on the count and probability of other houses as well: the more types are available (and the higher their probabilities are), the less the chance is that your type will be chosen.&lt;br /&gt;
&lt;br /&gt;
=== Extra Flags (19) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Version!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||1||{{ottdp|0.6|2.5}}||This building appears during the generation of a town, but not later, i.e. will appear in random games, but new ones won&#039;t be built during the game. Useful for buildings that are intended to be historical.&lt;br /&gt;
|-&lt;br /&gt;
|1||2||{{ottdp|0.6|2.5}}||This building is protected, i.e. towns and AI players won&#039;t remove it. Human players can still remove it, so you may need to set a high remove cost/rating to make them think twice.&lt;br /&gt;
|-&lt;br /&gt;
|2||4||{{ottdp|0.6|2.5}}||Synchronized [[Callbacks#Animation_control_.281B.2F25.2F140.2F152.2F159.29| callback 1B]]. (for multi-tile buildings)&amp;lt;ref&amp;gt;If synchronized callbacks are enabled, callback 1B will be called when the periodic processing reaches the main tile of the building, and not when it reaches the current tile. This is useful if your animation must run synchronously on every tile of the building. If this bit is set, callback 1B is called according to the main tile&#039;s property 16, not the current one, to make sure every tile stays in sync.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|3||8||{{ottdp|0.6|2.5|ttdprev=beta 2}}||[[Callbacks#Next animation frame (1A/26/141/153/158) |Callback 1A]] needs random bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Animation Frames (1A) ===&lt;br /&gt;
&lt;br /&gt;
The bottom seven bits define how many frames the animation consists of, minus one. (I.e. 0 means 1 frame, 1 means 2 frames etc.) The highest bit has another purpose (see below), so the biggest supported value is 7F (128 frames).&lt;br /&gt;
&lt;br /&gt;
The highest bit is set if the animation is looping, i.e. it should start again from the first frame after showing the last frame. Non-looping animations stop after the last frame, leaving it on the screen. Both kinds of animations start automatically when the building is created. It&#039;s recommended to use callback 1B with non-looping animations, so they are played multiple times.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.6|2.5|ottdrev=r12347|ttdprev=r1639}} In TTDPatch versions before TTDPatch 2.6 r1639 and TTDPatch 2.5 beta 9 (including beta 9) and OpenTTD before r12347, the frame number was limited to 32. If you intend to maintain compatibility with those versions, you should not use animations longer than 32 frames.&lt;br /&gt;
&lt;br /&gt;
=== Animation Speed (1B) ===&lt;br /&gt;
&lt;br /&gt;
This is the amount of time between switching frames.&lt;br /&gt;
&lt;br /&gt;
The default value is 2, which means the switch occurs every 108 milliseconds. Increasing this value by one doubles the wait, i.e. 3 will cause 216 ms delay, while 4 will pause 432 ms, and so on. Values below 2 have the same effect as 2, so the default is the fastest possible setting. The maximum is 16, which means 1769 seconds (approx. half an hour) delay. Settings above this value may cause strange behaviour.&lt;br /&gt;
&lt;br /&gt;
=== Building Class (1C) ===&lt;br /&gt;
&lt;br /&gt;
Types that were given the same class byte are considered to be in the same class. If you don&#039;t explicitly set this value, the type is considered to have no class (it won&#039;t be considered to be class 0). The scope of a class is the current GRF file, so two types are never in the same class if they were defined by different GRF files. Currently, this property affects variable 44 only.&lt;br /&gt;
&lt;br /&gt;
This property is a per-tile one, you can set it for additional tiles as well. It&#039;s a better idea, however, to set it for the main tile only, since var. 44 counts tiles, not buildings, and you may count multi-tile multiple times otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Accepted cargo types (1E) ===&lt;br /&gt;
&lt;br /&gt;
There may be cases when you want your house to accept something other than the default types (passenger, mail, goods and food). This property allows you to do that. If this property is set to FFFFFFFFh (the default), the meaning of properties 0D, 0E and 0F aren&#039;t changed, that is, they are the passenger, mail and goods/food acceptances, accordingly. If this property isn&#039;t FFFFFFFFh, the first three bytes must be climate-dependent cargo slot numbers (the fourth byte is ignored). In this case property 0D is the amount of acceptance of the first cargo type given, 0E is the same for the second type and 0F is the same for the third type.&lt;br /&gt;
&lt;br /&gt;
From GRF version 7 and above, the meaning of this property changes: instead of climate-dependent cargo slot numbers, you have to give climate-independent cargo IDs. If your GRF has a cargo translation table, then this ID is the index in that table; otherwise, it&#039;s the cargo slot number. Acceptance of cargoes not currently present will automatically be disabled.&lt;br /&gt;
&lt;br /&gt;
=== Minimum life span in years (1F) ===&lt;br /&gt;
&lt;br /&gt;
Towns are prevented from destroying the house if it hasn&#039;t yet reached the age given here. The default is 0, which means towns are free to remove the house any time they like. Please note that this setting doesn&#039;t prevent AI players from removing the house; only towns are affected. If you need to protect your building from AI players as well, you can set the &amp;quot;protected&amp;quot; flag (property 19 bit 1), or use [[Callbacks#Protect building conditionally (143) |callback 143]] and use your custom code to decide who (and when) is allowed to remove the building.&lt;br /&gt;
&lt;br /&gt;
For this to operate consequently on multi-tile buildings, you must set the same minimum lifespan for all tiles of the building.&lt;br /&gt;
&lt;br /&gt;
=== Cargo acceptance watch list (20) ===&lt;br /&gt;
&lt;br /&gt;
This property is a list of cargo types, types whose acceptance should be watched. The first byte is the length of the list, the remaining bytes identify cargo types. {{grfFrom|7}} If your GRF is version 7 or above, and has a cargo translation table, the bytes are indexes in the table; otherwise, they are cargo slot numbers. When a cargo from this list is accepted by the current tile, [[Callbacks#Watched cargo accepted (148) |callback 148]] is called on &#039;&#039;all&#039;&#039; tiles of the building. See [[Callbacks#Watched cargo accepted (148) |callback 148]] for more details about how this happens.&lt;br /&gt;
&lt;br /&gt;
{{ttdp|}} This property has no effect if the station2 structure isn&#039;t present. The station2 structure is present if any of the following is true:&lt;br /&gt;
* Generalfixes is on, and miscmods.noextendstationrange is off&lt;br /&gt;
* Any of fifoloading, newcargos or irregularstations is on&lt;br /&gt;
&lt;br /&gt;
=== Availability years (long format) - Minimum (21) - Maximum (22) ===&lt;br /&gt;
&lt;br /&gt;
Those two properties allow to specify a range of dates (based on year zero(0) that are not limited to the 1930 dates. So earlier buildings can be introduced. Be sure to add substantial houses to the sets, if you do not wat to have uniform towns, since the current earliest houses will remain in their current 1920 era. Mind also the warning wrt. introduction years as described at property 0A.&lt;br /&gt;
&lt;br /&gt;
=== Tile acceptance list (23) ===&lt;br /&gt;
{{ottdp|1.9|no|ottdrev=48b334cf}} &lt;br /&gt;
&lt;br /&gt;
Format:&lt;br /&gt;
 &amp;lt;numinput&amp;gt; (&amp;lt;cargotype&amp;gt; &amp;lt;acceptance&amp;gt;)*&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Size!!Variable!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|B||numinput||Number of (&amp;lt;cargotype&amp;gt; &amp;lt;acceptance&amp;gt;) pairs to follow,&lt;br /&gt;
|-&lt;br /&gt;
|B||cargotype||Cargotype (from CTT) to accept.&lt;br /&gt;
|-&lt;br /&gt;
|B||acceptance||Acceptance in 1/8 units.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This property defines up to 16 cargotypes, which are accepted by the house.&lt;br /&gt;
Use this property instead of property 0D..0F.&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Road_Stops&amp;diff=4640</id>
		<title>Action0/Road Stops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Road_Stops&amp;diff=4640"/>
		<updated>2023-10-23T21:52:47Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add property details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Defining properties of road stops.&lt;br /&gt;
&lt;br /&gt;
Road stop IDs may be freely chosen. In action 0, you need only specify IDs relative to the set, i.e. the ID of the first road stop type is 00, the second road type is 01 and so on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OpenTTD supports 64000 road stops per game, and 64000 road stop IDs per GRF file.&lt;br /&gt;
&lt;br /&gt;
The property you &#039;&#039;&#039;must&#039;&#039;&#039; set for each road stop ID is 08 (in addition to defining an action 3 for it). Also, all road stop IDs must get their classes in the right order, starting from ID 00 onwards.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{|&lt;br /&gt;
!Number!![[GRFActionsDetailed|Size]]!!Version!!Description&lt;br /&gt;
|-&lt;br /&gt;
|08||D||{{ottdp|14}}||Class label, see below&lt;br /&gt;
|-&lt;br /&gt;
|09||B||{{ottdp|14}}||Road stop type&lt;br /&gt;
|-&lt;br /&gt;
|0A||W||{{ottdp|14}}||Road stop name text ID&lt;br /&gt;
|-&lt;br /&gt;
|0B||W||{{ottdp|14}}||Class name text ID&lt;br /&gt;
|-&lt;br /&gt;
|0C||B||{{ottdp|14}}||Draw mode&lt;br /&gt;
|-&lt;br /&gt;
|0D||D||{{ottdp|14}}||Random trigger cargoes&lt;br /&gt;
|-&lt;br /&gt;
|0E||W||{{ottdp|14}}||Animation information&lt;br /&gt;
|-&lt;br /&gt;
|0F||B||{{ottdp|14}}||Animation speed&lt;br /&gt;
|-&lt;br /&gt;
|10||W||{{ottdp|14}}||Animation triggers&lt;br /&gt;
|-&lt;br /&gt;
|11||B||{{ottdp|14}}||Callback flags, see below&lt;br /&gt;
|-&lt;br /&gt;
|12||D||{{ottdp|14}}||General flags, see below&lt;br /&gt;
|-&lt;br /&gt;
|15||W||{{ottdp|14}}||Cost multipiers, see below&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Descriptions ==&lt;br /&gt;
&lt;br /&gt;
=== Road stop class (08) ===&lt;br /&gt;
&lt;br /&gt;
New road stops are grouped graphics into classes.&lt;br /&gt;
&lt;br /&gt;
Only two classes are pre-defined:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Name!!Class ID!!Intended use for road stops&lt;br /&gt;
|-&lt;br /&gt;
|DFLT||44 46 4C 54||Default road stops&lt;br /&gt;
|-&lt;br /&gt;
|WAYP||57 41 59 50||This identifier is reserved for future/non-standard use.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It is recommended that the class identifier used is unique to your GRF(s).&lt;br /&gt;
&lt;br /&gt;
=== Road stop type (09) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||Passenger/bus stop&lt;br /&gt;
|-&lt;br /&gt;
|1||Freight/lorry stop&lt;br /&gt;
|-&lt;br /&gt;
|2||Both passenger/bus and freight/lorry stops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default value is 2: Both passenger/bus and freight/lorry stops&lt;br /&gt;
&lt;br /&gt;
=== Road stop name text ID (0A) ===&lt;br /&gt;
&lt;br /&gt;
The text ID for this road stop (word value). This textid should be either a TTD textid or a D4xx textid (set via D0xx in action4).&lt;br /&gt;
&lt;br /&gt;
=== Class name text ID (0B) ===&lt;br /&gt;
&lt;br /&gt;
The text ID for the road stop class.&lt;br /&gt;
&lt;br /&gt;
When specifying a road stop, you don&#039;t need to set a class name again if you already did for another one with the same class.&lt;br /&gt;
&lt;br /&gt;
=== Draw mode (0C) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||1||Bay stops: Draw road type ground sprite&lt;br /&gt;
|-&lt;br /&gt;
|1||2||Drive through stops: Draw road/tram type overlays&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default value is 3 (bits 0 and 1 both set).&lt;br /&gt;
&lt;br /&gt;
The remaining bits are reserved for future use.&lt;br /&gt;
&lt;br /&gt;
=== Cargo types for random triggers (0D) ===&lt;br /&gt;
&lt;br /&gt;
This sets which cargo types should trigger re-randomizing. The cargo types are given as a bitmask of the bits from column 3 (type B) in CargoTypes. &amp;amp;nbsp;If nothing is set (the default), the no random triggers will happen, to conserve CPU time.&lt;br /&gt;
&lt;br /&gt;
With GRF version 7 and above, the interpretation of bits changes. Instead of climate-dependent cargo slot numbers (type B), you have to set the bits of climate-independent cargo ID (type A).&lt;br /&gt;
&lt;br /&gt;
=== Animation information (0E) ===&lt;br /&gt;
&lt;br /&gt;
The low byte specifies the number of animation frames minus one, so 00 means 1 frame, 01 means 2 frames etc. The maximum number of frames is 256, although you can have some problems if your animation exceeds FD (253) frames. The high byte must be 0 for non-looping animations and 01 for looping animations. Every other value is reserved for future use. In addition, if the whole word contains FFFF, animation is turned off for this station (this is the default value).&lt;br /&gt;
Since you can&#039;t have properties for individual station tiles, this property applies for every tile of the station. If you don&#039;t want to animate some tiles, you should check the current position during [[Callbacks#Animation control (1B/25/140/152/159)|callback 140]] and return FD if the current tile doesn&#039;t need to be animated. If you also need animations of different length per tile, you&#039;ll have to use [[Callbacks#Next animation frame (1A/26/141/153/158)|callback 141]] for that.&lt;br /&gt;
&lt;br /&gt;
=== Animation speed (0F) ===&lt;br /&gt;
The meaning is the same as for [[Action0Houses#Animation Speed 1B|house property 1B]], but the lower limit is 0 instead of 2, so the fastest possible animation changes frames every game tick (27ms). The default value is 2.&lt;br /&gt;
&lt;br /&gt;
=== Animation triggers (10) ===&lt;br /&gt;
This is a bit mask of events that should trigger [[Callbacks#Animation control (1B/25/140/152/159)|callback 140]], allowing to change the animation state&lt;br /&gt;
&lt;br /&gt;
=== Callback flags (11) ===&lt;br /&gt;
For road stops, the following [[callbacks]] can be defined by setting the corresponding bit in property 0B:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Variable 0C value!!Callback&lt;br /&gt;
|-&lt;br /&gt;
|0||1||13||Whether to make the road stop available in construction window (non-zero callback return) or not (callback returns zero)&lt;br /&gt;
|-&lt;br /&gt;
|1||2||141||Decide next animation frame&lt;br /&gt;
|-&lt;br /&gt;
|2||4||142||Decide animation speed&lt;br /&gt;
|}&lt;br /&gt;
Bit is the bit you have to set, you do this by adding all the values for all the bits. Variable 0C value is what variable 0C will be set to, for checking it in the [[VariationalAction2|VarAction2]] for callbacks.&lt;br /&gt;
&lt;br /&gt;
=== General Flags (12) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||1||[[Callbacks#Next animation frame (1A/26/141/153/158)|callback 141]] needs random bits in var. 10&lt;br /&gt;
|-&lt;br /&gt;
|2||4||Do not show catenary graphics&lt;br /&gt;
|-&lt;br /&gt;
|3||8||Only allow drive-through stops (not bay stops)&lt;br /&gt;
|-&lt;br /&gt;
|4||10||Do not automatically build connecting road pieces&lt;br /&gt;
|-&lt;br /&gt;
|5||20||Only show in the road build menu (not tram)&lt;br /&gt;
|-&lt;br /&gt;
|6||40||Only show in the tram build menu (not road)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default value is 0 (no bits set).&lt;br /&gt;
&lt;br /&gt;
The remaining bits are reserved for future use.&lt;br /&gt;
&lt;br /&gt;
=== Cost multipiers (15) ===&lt;br /&gt;
&lt;br /&gt;
The first byte is the build cost multiplier.&lt;br /&gt;
&lt;br /&gt;
The second byte is the removal cost multiplier.&lt;br /&gt;
&lt;br /&gt;
The total property length is 2 bytes.&lt;br /&gt;
&lt;br /&gt;
A value of 16 produces a build or removal cost the same as non-NewGRF road stops.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Road_Stops&amp;diff=4639</id>
		<title>Action0/Road Stops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Road_Stops&amp;diff=4639"/>
		<updated>2023-10-23T21:27:13Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add initial property table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Defining properties of road stops.&lt;br /&gt;
&lt;br /&gt;
Road stop IDs may be freely chosen. In action 0, you need only specify IDs relative to the set, i.e. the ID of the first road stop type is 00, the second road type is 01 and so on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OpenTTD supports 64000 road stops per game, and 64000 road stop IDs per GRF file.&lt;br /&gt;
&lt;br /&gt;
The property you &#039;&#039;&#039;must&#039;&#039;&#039; set for each road stop ID is 08 (in addition to defining an action 3 for it). Also, all road stop IDs must get their classes in the right order, starting from ID 00 onwards.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{|&lt;br /&gt;
!Number!![[GRFActionsDetailed|Size]]!!Version!!Description&lt;br /&gt;
|-&lt;br /&gt;
|08||D||{{ottdp|14}}||Class label, see below&lt;br /&gt;
|-&lt;br /&gt;
|09||B||{{ottdp|14}}||Road stop type&lt;br /&gt;
|-&lt;br /&gt;
|0A||W||{{ottdp|14}}||Text ID for the road stop&#039;s name&lt;br /&gt;
|-&lt;br /&gt;
|0B||W||{{ottdp|14}}||Text ID for the class&lt;br /&gt;
|-&lt;br /&gt;
|0C||B||{{ottdp|14}}||Draw mode&lt;br /&gt;
|-&lt;br /&gt;
|0D||D||{{ottdp|14}}||Random trigger cargoes&lt;br /&gt;
|-&lt;br /&gt;
|0E||W||{{ottdp|14}}||Animation information&lt;br /&gt;
|-&lt;br /&gt;
|0F||B||{{ottdp|14}}||Animation speed&lt;br /&gt;
|-&lt;br /&gt;
|10||W||{{ottdp|14}}||Animation triggers&lt;br /&gt;
|-&lt;br /&gt;
|11||B||{{ottdp|14}}||Callback flags, see below&lt;br /&gt;
|-&lt;br /&gt;
|12||D||{{ottdp|14}}||General flags, see below&lt;br /&gt;
|-&lt;br /&gt;
|15||W||{{ottdp|14}}||Cost multipiers, see below&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Descriptions ==&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Road_Stops&amp;diff=4638</id>
		<title>VariationalAction2/Road Stops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Road_Stops&amp;diff=4638"/>
		<updated>2023-10-19T19:53:47Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add non-parameterised variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
{|&lt;br /&gt;
!Variable !![[GRFActionsDetailed|Size]] !!Version !! Description&lt;br /&gt;
|-&lt;br /&gt;
|40||B||{{ottdp|14}}||View/rotation&lt;br /&gt;
|-&lt;br /&gt;
|41||B||{{ottdp|14}}||Stop type&lt;br /&gt;
|-&lt;br /&gt;
|42||W||{{ottdp|14}}||Tile information, see below&lt;br /&gt;
|-&lt;br /&gt;
|43||D||{{ottdp|14}}||Road type&lt;br /&gt;
|-&lt;br /&gt;
|44||D||{{ottdp|14}}||Tram type&lt;br /&gt;
|-&lt;br /&gt;
|45||D||{{ottdp|14}}||Get [[TownZones|town zone]] and Manhattan distance of closest town&lt;br /&gt;
|-&lt;br /&gt;
|46||D||{{ottdp|14}}||Get square of Euclidian distance of closest town&lt;br /&gt;
|-&lt;br /&gt;
|47||B||{{ottdp|14}}||Player (company) information&lt;br /&gt;
|-&lt;br /&gt;
|48|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|-&lt;br /&gt;
|49||B||{{ottdp|14}}||Current animation frame&lt;br /&gt;
|-&lt;br /&gt;
|60-65|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|-&lt;br /&gt;
|66||D||{{ottdp|14}}||Animation frame of nearby tile&lt;br /&gt;
|-&lt;br /&gt;
|67||D||{{ottdp|14}}||Land info of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|68||D||{{ottdp|14}}||Road stop info of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|6A||D||{{ottdp|14}}||GRFID of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|69|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== View/rotation (40) ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Value!!Type!!Description&lt;br /&gt;
|-&lt;br /&gt;
|0||Bay||Facing north-east&lt;br /&gt;
|-&lt;br /&gt;
|1||Bay||Facing south-east&lt;br /&gt;
|-&lt;br /&gt;
|2||Bay||Facing south-west&lt;br /&gt;
|-&lt;br /&gt;
|3||Bay||Facing north-west&lt;br /&gt;
|-&lt;br /&gt;
|4||Drive-through||X-axis: north-east to south-west&lt;br /&gt;
|-&lt;br /&gt;
|5||Drive-through||Y-axis: north-west to south-east&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stop type (41) ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||Passenger/bus stop&lt;br /&gt;
|-&lt;br /&gt;
|1||Freight/lorry stop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tile information (42) ===&lt;br /&gt;
&lt;br /&gt;
The return value has the same values as [[VariationalAction2/Objects#Tile information (41)|object var41]].&lt;br /&gt;
&lt;br /&gt;
=== Road type (43) ===&lt;br /&gt;
&lt;br /&gt;
This has the value of the (translated) roadtype the road stop is built on, or the current roadtype in the build GUI.&lt;br /&gt;
&lt;br /&gt;
If the roadtype has no entry in the roadtype translation table of the GRF, this value will be FFh.&lt;br /&gt;
&lt;br /&gt;
If no translation table is present, the raw value will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: only exact matches of roadtypes are reported. If the translation table of the GRF does not contain the exact roadtype FFh is returned.&lt;br /&gt;
&lt;br /&gt;
If the tile has no road at all (tram only) FFFFFFFFh is returned.&lt;br /&gt;
&lt;br /&gt;
=== Tram type (44) ===&lt;br /&gt;
&lt;br /&gt;
This has the value of the (translated) tramtype the road stop is built on, or the current tramtype in the build GUI.&lt;br /&gt;
&lt;br /&gt;
If the tramtype has no entry in the tramtype translation table of the GRF, this value will be FFh.&lt;br /&gt;
&lt;br /&gt;
If no translation table is present, the raw value will be returned.&lt;br /&gt;
&lt;br /&gt;
Note: only exact matches of tramtypes are reported. If the translation table of the GRF does not contain the exact tramtype FFh is returned.&lt;br /&gt;
&lt;br /&gt;
If the tile has no tram at all (road only) FFFFFFFFh is returned.&lt;br /&gt;
&lt;br /&gt;
=== Get [[TownZones|town zone]] and Manhattan distance of closest town (45) ===&lt;br /&gt;
&lt;br /&gt;
Like [[VarAction2Industries#Get town zone and Manhattan distance of closest town (65)|industry var65]] but instead of an offset the current tile is used.&lt;br /&gt;
&lt;br /&gt;
=== Get square of Euclidian distance of closest town (46) ===&lt;br /&gt;
&lt;br /&gt;
Like [[VarAction2Industries#Get square of Euclidean distance of closest town (66)|industry var66]] but instead of an offset the current tile is used.&lt;br /&gt;
&lt;br /&gt;
=== Player (company) information (47) ===&lt;br /&gt;
&lt;br /&gt;
The return value has the same values as [[VariationalAction2/Vehicles#Player info (43)|vehicle var43]].&lt;br /&gt;
The company used is the road stop owner.&lt;br /&gt;
&lt;br /&gt;
=== Animation Frame (49) ===&lt;br /&gt;
&lt;br /&gt;
The return value is the animation frame of the current tile.&lt;br /&gt;
&lt;br /&gt;
=== Animation frame of nearby tile (66) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
If the selected tile is a road stop tile that belongs to the current station, its animation state is returned. Otherwise, FFFFFFFFh is returned.&lt;br /&gt;
&lt;br /&gt;
=== Land info of nearby tiles (67) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
Returns the same values as [[VarAction2IndustryTiles#Land info of nearby tiles (60)|industry tile var60]].&lt;br /&gt;
&lt;br /&gt;
=== Road stop info of nearby tiles (68) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
The returned value is FFFFFFFFh if the selected tile isn&#039;t a road stop tile. Otherwise, the returned value can be separated to the following parts: &lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bits!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0..7||If the tile is defined in the current GRF, this is the setID used in the definition. Otherwise, the content is undefined.&lt;br /&gt;
Note that this field is clamped to the range 0..255. Therefore if the current GRF defines road stops with a setID &amp;gt; 255, this field may only be used to check for road stops in the range 0..254.&lt;br /&gt;
|-&lt;br /&gt;
|8..9||0 - The tile uses original TTD graphics&lt;br /&gt;
&lt;br /&gt;
1 - The tile is defined in the current GRF&lt;br /&gt;
&lt;br /&gt;
2 - The tile is defined in another GRF&lt;br /&gt;
|-&lt;br /&gt;
|10||Set if the selected tile belongs to the current station, clear otherwise&lt;br /&gt;
|-&lt;br /&gt;
|11||Set if the selected tile has a different view/rotation, cleat if the same view/rotation&lt;br /&gt;
|-&lt;br /&gt;
|12..15||View/rotation of the selected tile&lt;br /&gt;
|-&lt;br /&gt;
|16..19||0 - Passenger/bus stop&lt;br /&gt;
&lt;br /&gt;
1 - Freight/lorry stop&lt;br /&gt;
|-&lt;br /&gt;
|20||Set if the stop type (passenger/bus or freight/lorry) is the same as the current tile&lt;br /&gt;
|-&lt;br /&gt;
|21..31||Undefined, reserved for future use&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GRFID of nearby road stop tile (6A) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
The returned value is one of the following:&lt;br /&gt;
* &#039;&#039;&#039;FFFFFFFFh&#039;&#039;&#039; if the selected tile isn&#039;t a road stop tile&lt;br /&gt;
* &#039;&#039;&#039;00000000h&#039;&#039;&#039; if the selected station is a default road stop (not a NewGRF road stop)&lt;br /&gt;
* otherwise, the GRFID of the GRF which defined the type of the selected road stop tile&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Road_Stops&amp;diff=4637</id>
		<title>VariationalAction2/Road Stops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Road_Stops&amp;diff=4637"/>
		<updated>2023-10-19T19:35:32Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add parameterised variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
{|&lt;br /&gt;
!Variable !![[GRFActionsDetailed|Size]] !!Version !! Description&lt;br /&gt;
|-&lt;br /&gt;
|40||B||{{ottdp|14}}||View/rotation&lt;br /&gt;
|-&lt;br /&gt;
|41||B||{{ottdp|14}}||Stop type&lt;br /&gt;
|-&lt;br /&gt;
|42||W||{{ottdp|14}}||Tile information, see below&lt;br /&gt;
|-&lt;br /&gt;
|43||D||{{ottdp|14}}||Road type&lt;br /&gt;
|-&lt;br /&gt;
|44||D||{{ottdp|14}}||Tram type&lt;br /&gt;
|-&lt;br /&gt;
|45||D||{{ottdp|14}}||Get [[TownZones|town zone]] and Manhattan distance of closest town&lt;br /&gt;
|-&lt;br /&gt;
|46||D||{{ottdp|14}}||Get square of Euclidian distance of closest town&lt;br /&gt;
|-&lt;br /&gt;
|47||B||{{ottdp|14}}||Player (company) information&lt;br /&gt;
|-&lt;br /&gt;
|48|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|-&lt;br /&gt;
|49||B||{{ottdp|14}}||Current animation frame&lt;br /&gt;
|-&lt;br /&gt;
|60-65|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|-&lt;br /&gt;
|66||D||{{ottdp|14}}||Animation counter of nearby tile&lt;br /&gt;
|-&lt;br /&gt;
|67||D||{{ottdp|14}}||Land info of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|68||D||{{ottdp|14}}||Road stop info of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|6A||D||{{ottdp|14}}||GRFID of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|69|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Animation counter of nearby tile  (66) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
If the selected tile is a road stop tile that belongs to the current station, its animation state is returned. Otherwise, FFFFFFFFh is returned.&lt;br /&gt;
&lt;br /&gt;
=== Land info of nearby tiles (67) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
Returns the same values as [[VarAction2IndustryTiles#Land info of nearby tiles (60)|industry tile var60]].&lt;br /&gt;
&lt;br /&gt;
=== Road stop info of nearby tiles (68) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
The returned value is FFFFFFFFh if the selected tile isn&#039;t a road stop tile. Otherwise, the returned value can be separated to the following parts: &lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bits!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0..7||If the tile is defined in the current GRF, this is the setID used in the definition. Otherwise, the content is undefined.&lt;br /&gt;
Note that this field is clamped to the range 0..255. Therefore if the current GRF has more than 256 road stops, this field may only be used to check for road stops in the range 0..254.&lt;br /&gt;
|-&lt;br /&gt;
|8..9||0 - The tile uses original TTD graphics&lt;br /&gt;
&lt;br /&gt;
1 - The tile is defined in the current GRF&lt;br /&gt;
&lt;br /&gt;
2 - The tile is defined in another GRF&lt;br /&gt;
|-&lt;br /&gt;
|10||Set if the selected tile belongs to the current station, clear otherwise&lt;br /&gt;
|-&lt;br /&gt;
|11||Set if the selected tile has a different view/rotation, cleat if the same view/rotation&lt;br /&gt;
|-&lt;br /&gt;
|12..15||View/rotation of the selected tile&lt;br /&gt;
|-&lt;br /&gt;
|16..19||0 - Passenger/bus stop&lt;br /&gt;
&lt;br /&gt;
1 - Freight/lorry stop&lt;br /&gt;
|-&lt;br /&gt;
|20||Set if the stop type (passenger/bus or freight/lorry) is the same as the current tile&lt;br /&gt;
|-&lt;br /&gt;
|21..31||Undefined, reserved for future use&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GRFID of nearby road stop tile (6A) ===&lt;br /&gt;
&lt;br /&gt;
The parameter of this variable is a signed offset from the current tile.&lt;br /&gt;
&lt;br /&gt;
The returned value is one of the following:&lt;br /&gt;
* &#039;&#039;&#039;FFFFFFFFh&#039;&#039;&#039; if the selected tile isn&#039;t a road stop tile&lt;br /&gt;
* &#039;&#039;&#039;00000000h&#039;&#039;&#039; if the selected station is a default road stop (not a NewGRF road stop)&lt;br /&gt;
* otherwise, the GRFID of the GRF which defined the type of the selected road stop tile&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Road_Stops&amp;diff=4636</id>
		<title>VariationalAction2/Road Stops</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Road_Stops&amp;diff=4636"/>
		<updated>2023-10-19T18:45:02Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Initial variable table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
{|&lt;br /&gt;
!Variable !![[GRFActionsDetailed|Size]] !!Version !! Description&lt;br /&gt;
|-&lt;br /&gt;
|40||B||{{ottdp|14}}||View/rotation&lt;br /&gt;
|-&lt;br /&gt;
|41||B||{{ottdp|14}}||Stop type&lt;br /&gt;
|-&lt;br /&gt;
|42||W||{{ottdp|14}}||Tile information, see below&lt;br /&gt;
|-&lt;br /&gt;
|43||D||{{ottdp|14}}||Road type&lt;br /&gt;
|-&lt;br /&gt;
|44||D||{{ottdp|14}}||Tram type&lt;br /&gt;
|-&lt;br /&gt;
|45||D||{{ottdp|14}}||Get [[TownZones|town zone]] and Manhattan distance of closest town&lt;br /&gt;
|-&lt;br /&gt;
|46||D||{{ottdp|14}}||Get square of Euclidian distance of closest town&lt;br /&gt;
|-&lt;br /&gt;
|47||B||{{ottdp|14}}||Player (company) information&lt;br /&gt;
|-&lt;br /&gt;
|48|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|-&lt;br /&gt;
|49||B||{{ottdp|14}}||Current animation frame&lt;br /&gt;
|-&lt;br /&gt;
|60-65|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|-&lt;br /&gt;
|66||W||{{ottdp|14}}||Animation counter of nearby tile&lt;br /&gt;
|-&lt;br /&gt;
|67||D||{{ottdp|14}}||Land info of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|68||D||{{ottdp|14}}||Road stop info of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|6A||D||{{ottdp|14}}||GRFID of nearby tiles&lt;br /&gt;
|-&lt;br /&gt;
|69|| || ||See [[VariationalAction2/BaseStation|Base Stations]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action3&amp;diff=4464</id>
		<title>Action3</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action3&amp;diff=4464"/>
		<updated>2023-06-11T09:56:02Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add road stops to feature table&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;
|12||[[Action3/Roadtypes|Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|13||[[Action3/Tramtypes|Tramtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|14||Road Stops&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;
Since OpenTTD 14.0, each ID is an extended byte for all features.&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;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Feature !! cids&lt;br /&gt;
|-&lt;br /&gt;
| 00..03 vehicles ||&lt;br /&gt;
* 00..FE: cargo-type (index in [[Action0/Global Settings#Cargo translation table 09|cargo translation table]]; cargobit if no table present)&lt;br /&gt;
* FF: purchase list &amp;lt;ref&amp;gt;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&lt;br /&gt;
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.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* default: used if none of the listed cids apply&lt;br /&gt;
|-&lt;br /&gt;
| 04 stations ||&lt;br /&gt;
* 00..FD: cargo-type (index in [[Action0/Global Settings#Cargo translation table 09|cargo translation table]]; cargobit if no table present) waiting at the station. The waiting amount of this cargo is used in [[Action2/Stations|Action2]] to decide the spriteset.&lt;br /&gt;
* FE: used if none of the listed cids apply. [[Action2/Stations|Action2]] will assume &amp;quot;zero waiting cargo&amp;quot;.&lt;br /&gt;
* FF: purchase list&lt;br /&gt;
* default: used if none of the listed cids apply. [[Action2/Stations|Action2]] will use &amp;quot;sum of all waiting cargos&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| 05 canals || default only&lt;br /&gt;
|-&lt;br /&gt;
| 07 houses || default only&lt;br /&gt;
|-&lt;br /&gt;
| 09 industry tiles || default only&lt;br /&gt;
|-&lt;br /&gt;
| 0A industries || default only&lt;br /&gt;
|-&lt;br /&gt;
| 0B cargos || default only&lt;br /&gt;
|-&lt;br /&gt;
| 0C sound effects || default only&lt;br /&gt;
|-&lt;br /&gt;
| 0D airports || default only&lt;br /&gt;
|-&lt;br /&gt;
| 0E signals || default only&lt;br /&gt;
|-&lt;br /&gt;
| 0F objects ||&lt;br /&gt;
* FF: purchase list&lt;br /&gt;
* default: used if none of the listed cids apply&lt;br /&gt;
|-&lt;br /&gt;
| 10 rail types || special cids, see [[Action3/Railtypes#cargo-type|here]]&lt;br /&gt;
|-&lt;br /&gt;
| 11 airport tiles || default only&lt;br /&gt;
|-&lt;br /&gt;
| 12 road types || special cids, see [[Action3/Tramtypes#cargo-type|here]]&lt;br /&gt;
|-&lt;br /&gt;
| 13 tram types || special cids, see [[Action3/Roadtypes#cargo-type|here]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&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>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2&amp;diff=4463</id>
		<title>VariationalAction2</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2&amp;diff=4463"/>
		<updated>2023-06-11T09:55:16Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add road stops to feature table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
To support changes in graphics based on other factors than just the load states, you use a VarAction2. This provides a sophisticated way of deciding what graphics to use.&lt;br /&gt;
&lt;br /&gt;
A VarAction2 can be used like any other action 2, but it provides an additional step in-between: instead of defining the action 1 sets right away, it instead specifies a list of additional action 2 entry, one of which is used depending on the kind of variation that is defined. These action 2 entries that are referred can in turn be variational or random (to provide chains of decisions), or they can be the final element, that is a regular action 2 which contains definitions of action 1 sets, or a callback result.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The data looks as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Sprite-number&amp;gt; * &amp;lt;Length&amp;gt; 02 &amp;lt;feature&amp;gt; &amp;lt;set-id&amp;gt; &amp;lt;type&amp;gt; &amp;lt;variable&amp;gt; &amp;lt;varadjust&amp;gt; &amp;lt;nvar&amp;gt; (&amp;lt;set-id&amp;gt; &amp;lt;low-range&amp;gt; &amp;lt;high-range&amp;gt;){n} &amp;lt;default&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!&#039;&#039;&#039;Element&#039;&#039;&#039;!![[GRFActionsDetailed|&#039;&#039;&#039;Size&#039;&#039;&#039;]]!!&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;Sprite-number&amp;gt;||dec||A sequential sprite number&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;length&amp;gt;||dec||The total number of bytes used in this action.&lt;br /&gt;
|-&lt;br /&gt;
|02||B||Defines action 02&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;feature&amp;gt;||B||For what type of vehicle/station should this definition be used?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;set-id&amp;gt;||B||The ID of this action 2 (used like a cargo ID)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;type&amp;gt;||B||Type of VarAction2, see below&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;variable&amp;gt;||B||Which variable we base the decision on&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;varadjust&amp;gt;||V||How to manipulate the value before deciding.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nvar&amp;gt;||B||Number of different ranges of the value (not counting the default)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;set-id&amp;gt;||W||Action 2 set-id to use for the following range.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;low-range&amp;gt;||B/W/D||Minimum (inclusive) of the range for which to use the above set-id&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;high-range&amp;gt;||B/W/D||Maximum (inclusive) of the range&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;default&amp;gt;||W||Action 2 set-id to use if no range matches&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The size of &amp;lt;varadjust&amp;gt; depends on &amp;lt;type&amp;gt; as well as the adjustments to be performed and must always provide an AND mask. For &amp;lt;type&amp;gt; 81, a &amp;quot;do nothing&amp;quot; &amp;lt;varadjust&amp;gt; would be 00 FF.&lt;br /&gt;
&lt;br /&gt;
You repeat the sequence of &amp;lt;set-id&amp;gt; &amp;lt;low-range&amp;gt; &amp;lt;high-range&amp;gt; as often as &amp;lt;nvar&amp;gt; specifies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;low-range&amp;gt; and &amp;lt;high-range&amp;gt; have a size of B, W, or D, depending on &amp;lt;type&amp;gt;. See that entry for more information.&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||[[VariationalAction2/Vehicles | Trains]]&lt;br /&gt;
|-&lt;br /&gt;
|01||[[VariationalAction2/Vehicles | Road Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
|02||[[VariationalAction2/Vehicles | Ships]]&lt;br /&gt;
|-&lt;br /&gt;
|03||[[VariationalAction2/Vehicles | Aircraft]]&lt;br /&gt;
|-&lt;br /&gt;
|04||[[VariationalAction2/Stations | Stations]]&lt;br /&gt;
|-&lt;br /&gt;
|05||[[VariationalAction2/Canals | Canals/Rivers]]&lt;br /&gt;
|-&lt;br /&gt;
|06||[[VariationalAction2/Bridges | Bridges]]&lt;br /&gt;
|-&lt;br /&gt;
|07||[[VariationalAction2/Houses | Houses]]&lt;br /&gt;
|-&lt;br /&gt;
|09||[[VariationalAction2/Industry Tiles | Industry Tiles]]&lt;br /&gt;
|-&lt;br /&gt;
|0A||[[VariationalAction2/Industries | Industries]]&lt;br /&gt;
|-&lt;br /&gt;
|0B||Cargos (no feature specific variables)&lt;br /&gt;
|-&lt;br /&gt;
|0C||Sound Effects (no feature specific variables)&lt;br /&gt;
|-&lt;br /&gt;
|0D||[[VariationalAction2/Airports | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
|0E||[[VariationalAction2/Signals | Signals]]&lt;br /&gt;
|-&lt;br /&gt;
|0F||[[VariationalAction2/Objects | Objects]]&lt;br /&gt;
|-&lt;br /&gt;
|10||[[VariationalAction2/Railtypes | Railtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|11||[[VariationalAction2/Airport Tiles | Airport Tiles]]&lt;br /&gt;
|-&lt;br /&gt;
|12||[[VariationalAction2/Roadtypes | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|13||[[VariationalAction2/Tramtypes | Tramtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|14||[[VariationalAction2/Road Stops | Road Stops]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Set-ID ===&lt;br /&gt;
&lt;br /&gt;
This defines the number of this action 2. &amp;amp;nbsp;The ID can then be used as target in an action 3 or another variational/random action 2.&lt;br /&gt;
&lt;br /&gt;
=== Type ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
! !! B&amp;lt;br/&amp;gt;Access lowest byte !! {{ottdp|0.6|2.5}} W&amp;lt;br/&amp;gt;Access lowest word !! {{ottdp|0.6|2.5}} D&amp;lt;br/&amp;gt;Access lowest doubleword&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;left&amp;quot;| Access general variable or&amp;lt;br/&amp;gt;variable of the primary object&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 81 &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 85 &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 89&lt;br /&gt;
|-&lt;br /&gt;
!align=&amp;quot;left&amp;quot;| Access variable of &amp;quot;related&amp;quot; object&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 82 &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 86 &lt;br /&gt;
|align=&amp;quot;center&amp;quot;| 8A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The access type specifies both the size of the variable access, and selects between general variables and the object&#039;s innate variables, or variables of a specific &amp;quot;related&amp;quot; object.&lt;br /&gt;
&lt;br /&gt;
{|- |&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|[[Features|Feature]]!!Related object&lt;br /&gt;
|-&lt;br /&gt;
|00-03||[[VariationalAction2/Vehicles | Vehicles]]||First [[VariationalAction2/Vehicles | vehicle]] of consist&lt;br /&gt;
|-&lt;br /&gt;
|04||[[VariationalAction2/Stations | Stations]]||[[VariationalAction2/Towns | Town]] to which station belongs&lt;br /&gt;
|-&lt;br /&gt;
|05||[[VariationalAction2/Canals | Canals/Rivers]]||N/A&lt;br /&gt;
|-&lt;br /&gt;
|06||[[VariationalAction2/Bridges | Bridges]]||[[VariationalAction2/Towns | Town]] of bridge&lt;br /&gt;
|-&lt;br /&gt;
|07||[[VariationalAction2/Houses | Houses]]||[[VariationalAction2/Towns | Town]] of house&lt;br /&gt;
|-&lt;br /&gt;
|09||[[VariationalAction2/Industry Tiles | Industry Tiles]]||[[VariationalAction2/Industries | Industry]] containing tile&lt;br /&gt;
|-&lt;br /&gt;
|0A||[[VariationalAction2/Industries | Industries]]||[[VariationalAction2/Towns | Town]] of industry&lt;br /&gt;
|-&lt;br /&gt;
|0B||Cargos||N/A&lt;br /&gt;
|-&lt;br /&gt;
|0C||Sound Effects||N/A&lt;br /&gt;
|-&lt;br /&gt;
|0D||[[VariationalAction2/Airports | Airports]]||N/A&lt;br /&gt;
|-&lt;br /&gt;
|0E||[[VariationalAction2/Signals | Signals]]||N/A&lt;br /&gt;
|-&lt;br /&gt;
|0F||[[VariationalAction2/Objects | Objects]]||[[VariationalAction2/Towns | Town]] of object&lt;br /&gt;
|-&lt;br /&gt;
|10||[[VariationalAction2/Railtypes | Railtypes]]||N/A&lt;br /&gt;
|-&lt;br /&gt;
|11||[[VariationalAction2/Airport Tiles | Airport Tiles]]||N/A&lt;br /&gt;
|-&lt;br /&gt;
|12||[[VariationalAction2/Roadtypes | Roadtypes]]||N/A&lt;br /&gt;
|-&lt;br /&gt;
|13||[[VariationalAction2/Tramtypes | Tramtypes]]||N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Every variable specifies a size for it. Not every variable is a doubleword.&lt;br /&gt;
If the accessed variable is smaller than the size given here, the extra bits may contain junk, and should be &amp;lt;and-masked&amp;gt; out.&lt;br /&gt;
&lt;br /&gt;
=== Variable ===&lt;br /&gt;
&lt;br /&gt;
Variational Action 2 allows accessing these variables:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!&#039;&#039;&#039;Number&#039;&#039;&#039;!![[GRFActionsDetailed|&#039;&#039;&#039;Size&#039;&#039;&#039;]]!!Version!!&#039;&#039;&#039;Meaning&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|00-3F|| || ||See [[GlobalVariables| global variables page]].&lt;br /&gt;
|-&lt;br /&gt;
|40+x||D|| ||specially calculated feature-specific variable, see following feature-specific pages&lt;br /&gt;
|-&lt;br /&gt;
|5F||D||{{ottdp|0.7|2.6|ttdprev=r1928}}||Feature-specific random data: triggers in low byte, bits in other three bytes. Bits of the variable not associated with random or trigger bits are reserved.&lt;br /&gt;
|-&lt;br /&gt;
|60+x||D|| ||similar to 40+x variables, but the variable number must be followed by a byte, which will be given to the variable handler as parameter.&lt;br /&gt;
|-&lt;br /&gt;
|7B||-||{{ottdp|1.1|2.6|ottdrev=r21604|ttdprev=r2359}}||A special 60+x variable to be used in Advanced Variational Action 2. It allows to evaluate any other 60+x variable using a non-constant parameter from a register. The parameter of variable 7B specifies another 60+x variable which is evaluated. The parameter for that variable is read from the accumulator (&#039;val1&#039;), i.e. the result from the preceding operations of the same Advanced Variational Action 2. Hence variable 7B may not be the first variable used in the calculation. Variable 7B itself and 7E (procedure call) are not allowed to be used as parameter for variable 7B.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|1.2|no|ottdrev=r23138}} Since OpenTTD r23138 you can use this to pass 32 bit parameters to 60+x variables. Currently this is only useful for a few variables, e.g. vehicle variable 60. For most variables the higher bits of the parameter are considered reserved. So, make sure to mask the higher bits in the preceding calculations.&lt;br /&gt;
|-&lt;br /&gt;
|7C||D||{{ottdp|0.6|2.6|ttdprev=r1315}}||A special 60+x variable used to access values stored in the registers of [[Storages#Persistent storage|persistent storage]].&lt;br /&gt;
|-&lt;br /&gt;
|7D||D||{{ottdp|0.6|2.6|ttdprev=r1246}}||A special 60+x variable used to access values stored in the registers of [[Storages#Temporary storage|temporary storage]]. Available in the purchase list.&lt;br /&gt;
|-&lt;br /&gt;
|7E||D||{{ottdp|0.6|2.5}}||A special 60+x variable indicating a [[VarAction2Advanced#Using procedures|procedure call]]. Available in the purchase list.&lt;br /&gt;
|-&lt;br /&gt;
|7F||D||{{ottdp|0.6|2.5}}||A special 60+x variable that reads GRF parameter whose number is given by the 60+x parameter. Available in the purchase list.&lt;br /&gt;
|-&lt;br /&gt;
|80+x|| || ||Feature-specific variable, see following feature-specific pages. While most of these variables actually refer to raw memory locations of original TTD structures, you cannot rely on that. Some variables were added later, some were moved or replaced. Only the variables listed in the specs are somewhat set to not be changed in the future.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For all features, the 80+x variables are offsets into the corresponding structure in TTD&#039;s game data. &amp;amp;nbsp;The 40+x and 60+x variables are special variables that are computed on-the-fly, and aren&#039;t actually stored anywhere in memory, unless stated otherwise. Therefore they should be used as little as necessary so as not to slow down the game too much with the calculation of these variables (which can be called thousands of times per second, whenever any vehicle moves).&lt;br /&gt;
&lt;br /&gt;
When displaying a vehicle (etc.) in the purchase list, the game will show those variations based on external variables (dates etc.) correctly, but variations based on vehicle variables (variables 40+x, 60+x and 80+x) will always show the first (not the default) cargo-ID unless otherwise specified for the given variable. If you do a calculation, the first cargo-ID will be selected if any of the needed variables is inaccessible.&lt;br /&gt;
&lt;br /&gt;
The lists of 80+x variables on the following pages are not exhaustive; only the useful variables are listed there. For a full list check the definition of corresponding structures in TTD. Marcin Grzegorczyk has a pretty good list of the structure definitions on his [http://marcin.ttdpatch.net/sv1codec/TTD-locations.html savegame internals page].&lt;br /&gt;
&lt;br /&gt;
=== varadjust ===&lt;br /&gt;
&lt;br /&gt;
Adjust variable to a more useful range. It has the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &amp;lt;shift-num&amp;gt; &amp;lt;and-mask&amp;gt; &amp;lt;nowiki&amp;gt;[&amp;lt;add-val&amp;gt; &amp;lt;divide-val&amp;gt;/&amp;lt;modulo-val&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!&#039;&#039;&#039;Element&#039;&#039;&#039;!![[GRFActionsDetailed|&#039;&#039;&#039;Size&#039;&#039;&#039;]]!!&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|shift-num||B||value to right-shift the variable, and some special bits. See below.&lt;br /&gt;
|-&lt;br /&gt;
|and-mask||B/W/D||value with which to AND the variable after shifting. Return this value if neither bit 6 nor bit 7 of shift-num are set.&lt;br /&gt;
|-&lt;br /&gt;
|add-val||B/W/D||value to add to the variable after ANDing. Only present if bits 6 or 7 are set in shift-num.&lt;br /&gt;
|-&lt;br /&gt;
|divide-val||B/W/D||return the sum divided by this value. Only present if bit 6 is set in shift-num.&lt;br /&gt;
|-&lt;br /&gt;
|modulo-val||B/W/D||return the sum modulo (remainder of division by) this value. Only present if bit 7 is set in shift-num.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;shift-num&amp;gt; is a partial bit-mask; its bits have the following meanings:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit(s)!!Value!!Version!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0..4||0..1F||{{ottdp|0.6|2.0}}||number of bits to right shift &amp;lt;variable&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|5||20||{{ottdp|0.6|2.5}}||This is an [[VarAction2Advanced|advanced VarAction2]]&lt;br /&gt;
|-&lt;br /&gt;
|6||40||{{ottdp|0.6|2.5}}||This is a shift-and-add-divide adjustment.&lt;br /&gt;
|-&lt;br /&gt;
|7||80||{{ottdp|0.6|2.5}}||This is a shift-and-add-modulo adjustment.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bits 6 and 7 may not both be set. If neither are set, this varadjust is a shift-and adjustment.&lt;br /&gt;
&lt;br /&gt;
Note that for the add and divide operations, both the variable and the divisor are taken to be signed numbers. This means that if the high bit is set, the number is taken to be negative, so you may need to mask out the most significant bit to do an unsigned division.&lt;br /&gt;
&lt;br /&gt;
=== nvar ===&lt;br /&gt;
&lt;br /&gt;
Here you set how many different ranges to check for. If the value of the variable, after the above manipulations, is not within one of these ranges, the default will be used. &amp;amp;nbsp;When displayed in the purchase window, the game will always show the first range if the variable is of the 40+x or 80+x type (because the variable is undefined since the vehicle doesn&#039;t exist yet).&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.6|2.5|ttdprev=2.0.1 alpha 57}} Since TTDPatch 2.0.1 alpha 57, nvar=0 is a special case. Instead of using ranges, nvar=0 means that the result of an [[VarAction2Advanced|advanced]] calculation (or, if no calculation is performed, the adjusted variable value itself) is returned as callback result, with bit 15 set. &amp;amp;nbsp;This is useful for those callbacks where many different return values are possible and it is easier to calculate them than list them in ranges. &amp;amp;nbsp;The default value must still be specified, and will be used in case the variable(s) used are not available.&lt;br /&gt;
&lt;br /&gt;
=== sets and ranges ===&lt;br /&gt;
&lt;br /&gt;
For each of the ranges to check, you give the set-id as a &#039;&#039;&#039;WORD&#039;&#039;&#039; value (i.e. with a 00 following, e.g. set-id 5 becomes 05 00, or - in case of a callback result - by setting the high bit, e.g. 05 80), followed by the low and high limits of this range. &amp;amp;nbsp;The first range that matches will be used.&lt;br /&gt;
&lt;br /&gt;
The various \b, \w, and \d escape sequences can be useful for &amp;lt;min-range&amp;gt; and &amp;lt;max-range&amp;gt;. See [[GRFActionsDetailed#Byte order|the discussion of escape sequences]] for further information.&lt;br /&gt;
&lt;br /&gt;
=== default ===&lt;br /&gt;
&lt;br /&gt;
The set-id to use if none of the ranges matches.&lt;br /&gt;
&lt;br /&gt;
=Example=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 -1 * 15       02 05 03 81        // Action2, Feature 05 (canals), action2ID 03, 1-byte variable&lt;br /&gt;
                   81 00 04       // variable 81 (terrain type), shift 00, mask 0x04 (=bit for &amp;quot;on or above snowline&amp;quot;)&lt;br /&gt;
                   01             // check one range&lt;br /&gt;
                   02 00    04 04 // snowy tile: link to action2ID 02&lt;br /&gt;
                   01 00          // default:    link to action2ID 01&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=RandomAction2&amp;diff=4462</id>
		<title>RandomAction2</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=RandomAction2&amp;diff=4462"/>
		<updated>2023-06-11T09:53:47Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add road stops to feature table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
Unlike [[VariationalAction2]], whose results are always determined by a predictable decision, RandomAction2 can use randomized results to pick one of several [[Action2]] entries.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The data looks as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Sprite-number&amp;gt; * &amp;lt;Length&amp;gt; 02 &amp;lt;feature&amp;gt; &amp;lt;set-id&amp;gt; &amp;lt;nowiki&amp;gt;[80|83]&amp;lt;/nowiki&amp;gt; &amp;lt;random-triggers&amp;gt; &amp;lt;randbit&amp;gt; &amp;lt;nrand&amp;gt; &amp;lt;set-ids&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From TTDPatch 2.6 r1850 and OpenTTD r12452, and &#039;&#039;&#039;for vehicles only&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Sprite-number&amp;gt; * &amp;lt;Length&amp;gt; 02 &amp;lt;feature&amp;gt; &amp;lt;set-id&amp;gt; 84 &amp;lt;count&amp;gt; &amp;lt;random-triggers&amp;gt; &amp;lt;randbit&amp;gt; &amp;lt;nrand&amp;gt; &amp;lt;set-ids&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!&#039;&#039;&#039;Element&#039;&#039;&#039;!![[GRFActionsDetailed|&#039;&#039;&#039;Size&#039;&#039;&#039;]]!!&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;Sprite-number&amp;gt;||dec||A sequential sprite number&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;length&amp;gt;||dec||The total number of bytes used in this action.&lt;br /&gt;
|-&lt;br /&gt;
|02||B||Defines action 02&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;feature&amp;gt;||B||For what type of vehicle/station/... should this definition be used?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;set-id&amp;gt;||B||The ID of this action 2 (used like a cargo ID)&lt;br /&gt;
|-&lt;br /&gt;
|80, 83, 84||B||Type of random action, see below.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;count&amp;gt;||B||(when present) Location of controlling vehicle.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;random-triggers&amp;gt;||B||When to re-randomize&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;randbit&amp;gt;||B||What random bit to use for this action 2&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;nrand&amp;gt;||B||Number of set-ids to choose from, must be a power of 2&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;set-ids&amp;gt;||W||Action 2 set-ids to choose from.&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||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;
|0D||Airports&lt;br /&gt;
|-&lt;br /&gt;
|0F||Objects&lt;br /&gt;
|-&lt;br /&gt;
|10||Railtypes&lt;br /&gt;
|-&lt;br /&gt;
|11||Airport Tiles&lt;br /&gt;
|-&lt;br /&gt;
|12||Roadtypes&lt;br /&gt;
|-&lt;br /&gt;
|13||Tramtypes&lt;br /&gt;
|-&lt;br /&gt;
|14||Road Stops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== set-ID ===&lt;br /&gt;
&lt;br /&gt;
This defines the number of this action 2. &amp;amp;nbsp;The ID can then be used as target in an action 3 or another variational/random action 2.&lt;br /&gt;
&lt;br /&gt;
=== 80/83/84 ===&lt;br /&gt;
&lt;br /&gt;
Use 80 to randomize the object (vehicle, station, building, industry, object) based on its own triggers and bits.&lt;br /&gt;
&lt;br /&gt;
Use 83 to randomize the object based on its &amp;quot;related&amp;quot; object (s.b.).&lt;br /&gt;
&lt;br /&gt;
Use 84 to randomize the vehicle based on any vehicle in the consist.&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Feature!!Related object&lt;br /&gt;
|-&lt;br /&gt;
|Vehicles (00-03)||First vehicle of consist&lt;br /&gt;
|-&lt;br /&gt;
|Stations (04)||N/A&lt;br /&gt;
|-&lt;br /&gt;
|Houses (07)||N/A&lt;br /&gt;
|-&lt;br /&gt;
|Industry tiles (09)||Industry containing tile&lt;br /&gt;
|-&lt;br /&gt;
|Industries (0A)||N/A&lt;br /&gt;
|-&lt;br /&gt;
|Objects (0F)||N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== count ===&lt;br /&gt;
&lt;br /&gt;
For type 84, this specifies which vehicle&#039;s random bits this vehicle will be using and/or modifying.&lt;br /&gt;
&lt;br /&gt;
The low nibble (bits 0-3) specifies how far to count from the starting vehicle. If it is zero, the count will be read from GRF register 100h instead.&lt;br /&gt;
&lt;br /&gt;
The high nibble (bits 6-7, actually) specifies which vehicle is the starting vehicle, and which direction to count:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||count back (away from the engine), starting at this vehicle&lt;br /&gt;
|-&lt;br /&gt;
|4||count forward (toward the engine), starting at this vehicle.&lt;br /&gt;
|-&lt;br /&gt;
|8||count back, starting at the engine&lt;br /&gt;
|-&lt;br /&gt;
|C||count back, starting at the first vehicle in this chain of vehicles with the same ID, as for vehicle variable 41&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bits 4-5 are reserved and must be zero, so other values of the high nibble are not allowed.&lt;br /&gt;
&lt;br /&gt;
=== random-triggers ===&lt;br /&gt;
&lt;br /&gt;
This is a bit mask of triggers which cause re-randomizing. Normally, any matching trigger causes the graphics to be randomized again, but if you add 80 to the bitmask, the re-randomizing only happens if &#039;&#039;&#039;all&#039;&#039;&#039; triggers have occurred.&lt;br /&gt;
&lt;br /&gt;
Trigger bits are feature-specific, see below.&lt;br /&gt;
&lt;br /&gt;
Note, that rerandomisation only occurs in the graphics chain, not for callbacks. So, if you use a random action only inside a callback and want to rerandomise the bits, you have to add a &amp;quot;dummy&amp;quot; rerandomisation RA2 into the graphics chain.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 -1 * -1   02 04 02&lt;br /&gt;
           80                         // random in callback&lt;br /&gt;
           00                         // no triggers&lt;br /&gt;
           00                         // first random bit to use&lt;br /&gt;
           \b 16                      // number of cases&lt;br /&gt;
           \w 10 \w 11 \w 12 \w 13    // random cases&lt;br /&gt;
           \w 14 \w 15 \w 16 \w 17&lt;br /&gt;
           \w 18 \w 19 \w 20 \w 21&lt;br /&gt;
           \w 22 \w 23 \w 24 \w 25&lt;br /&gt;
 &lt;br /&gt;
 -1 * -1   02 04 01&lt;br /&gt;
           85 0C 00 \wx FFFF&lt;br /&gt;
           01&lt;br /&gt;
           \w 2 \w 14 \w 14           // callback 14&lt;br /&gt;
           \w 3                       // graphics chain&lt;br /&gt;
 &lt;br /&gt;
 -1 * -1   02 04 00&lt;br /&gt;
           80                         // dummy random outside callback&lt;br /&gt;
           04                         // train arrival&lt;br /&gt;
           00                         // first bit to rerandomise&lt;br /&gt;
           \b 16                      // number of cases&lt;br /&gt;
           \w 1 \w1 \w 1 \w1          // all cases the same, only for triggering rerandomisation&lt;br /&gt;
           \w 1 \w1 \w 1 \w1&lt;br /&gt;
           \w 1 \w1 \w 1 \w1&lt;br /&gt;
           \w 1 \w1 \w 1 \w1&lt;br /&gt;
 &lt;br /&gt;
 -1 * -1   03 04 01 00 00 \w 0        // action 3&lt;br /&gt;
&lt;br /&gt;
=== randbit ===&lt;br /&gt;
&lt;br /&gt;
{{ottdp|no|&amp;amp;lt;2.5|ttdprev=alpha30}} For versions before TTDPatch 2.0.1 alpha 30, leave this at 00. It doesn&#039;t quite work the way intended (it was supposed to allow independent random chains, but currently everything is re-randomized at the same time, thereby defeating this mechanism).&lt;br /&gt;
&lt;br /&gt;
{{ottdp| |2.5|ttdprev=alpha 30}} Since TTDPatch 2.0.1 alpha 30, only those bits that actually get triggered will be re-randomized. Prior versions always re-randomized all bits. This will make it possible to have independent sets of bits for independent triggers (or untriggered bits, set only at the time of purchase). Setting randbit determines the first bit to be re-randomized, as well as basing the random graphics on. The total number of bits used is the 2-logarithm of nrand below (e.g., for nrand=16, 4 bits are used).&lt;br /&gt;
&lt;br /&gt;
=== nrand ===&lt;br /&gt;
&lt;br /&gt;
Number of different sets to choose from. &amp;amp;nbsp;This must be a power of 2, i.e. 2, 4, 8, 16 etc.&lt;br /&gt;
&lt;br /&gt;
=== set-ids ===&lt;br /&gt;
&lt;br /&gt;
Action 2 IDs to randomly choose from&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|Feature&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Random bits&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot;|Triggers&lt;br /&gt;
|-&lt;br /&gt;
!Self!!Related&lt;br /&gt;
|-&lt;br /&gt;
|Vehicles&lt;br /&gt;
|8&lt;br /&gt;
{{ottdp|14.0|no}} 16&lt;br /&gt;
|8 read-only&lt;br /&gt;
{{ottdp|14.0|no}} 16 read-only&lt;br /&gt;
|yes&lt;br /&gt;
|-&lt;br /&gt;
|Stations||16 + 4 &amp;lt;ref name=&amp;quot;stationshared&amp;quot;&amp;gt;16 Bits shared for the whole station/airport (airport and station share the same bits). 4 bits per tile.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;TTDPatch actually only implements 8 shared random bits (plus 4 per tile). Bits 8-15 are always zero.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|no||yes&lt;br /&gt;
|-&lt;br /&gt;
|Canals||8||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Houses||8||no||yes&lt;br /&gt;
|-&lt;br /&gt;
|Industry tiles||8||16||yes&lt;br /&gt;
|-&lt;br /&gt;
|Industries||16||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Airports||16 &amp;lt;ref name=&amp;quot;stationshared&amp;quot;/&amp;gt;||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Objects||8||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Railtypes||2||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Roadtypes||2||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Tramtypes||2||no||no&lt;br /&gt;
|-&lt;br /&gt;
|Airport tiles||16 + 4 &amp;lt;ref name=&amp;quot;stationshared&amp;quot;/&amp;gt;||no||no&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vehicles ===&lt;br /&gt;
&lt;br /&gt;
Vehicles have 8 random bits, increased to 16 since {{ottdp|14.0|no}}, and the following triggers:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Version!!Trigger&lt;br /&gt;
|-&lt;br /&gt;
|0||01||{{ottdp|0.6|2.0}}||Vehicle gets new load of cargo (only after it was empty)&lt;br /&gt;
|-&lt;br /&gt;
|1||02||{{ottdp|0.6|2.0}}||Vehicle enters a depot and is serviced&lt;br /&gt;
|-&lt;br /&gt;
|2||04||{{ottdp|0.6|2.5}}||The consist has unloaded all cargo&lt;br /&gt;
|-&lt;br /&gt;
|3||08||{{ottdp|0.6|2.5}}||Any vehicle of the consist receives cargo&lt;br /&gt;
|-&lt;br /&gt;
|4||10||{{ottdp|0.6|2.5}}||[[Callbacks#32-day callback (32) |Callback 32]] returned 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The consist trigger bits 2 and 3 allow re-randomizing whenever the consist receives cargo after fully unloading. They should be used with action 2 type 80, not 83, and the random-triggers variable should have 80 added to it, to make the re-randomizing happen only if the consist was empty and &#039;&#039;&#039;then&#039;&#039;&#039; received new cargo.&lt;br /&gt;
&lt;br /&gt;
Vehicles can read the random bits of other vehicles (using random action type 83 or 84), but they can only trigger&lt;br /&gt;
rerandomisation of their own bits. Do not specify any triggers for rerandomisation when accessing random bits of other vehicles (via type 83 or 84), it will not do what you think.&lt;br /&gt;
&lt;br /&gt;
=== Stations ===&lt;br /&gt;
&lt;br /&gt;
Stations have 16+4 random bits. Bits 0 to 15 are a property of the station as a whole, and bits 16 to 19 are different for each tile. &amp;amp;nbsp;To get tile-based randomness, therefore use randbit=10 and nrand of no more than 16 (since only 4 random bits are available per tile).&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Version!!Trigger&lt;br /&gt;
|-&lt;br /&gt;
|0||01||{{ottdp|1.3|2.5}}||new cargo waiting&lt;br /&gt;
|-&lt;br /&gt;
|1||02||{{ottdp|1.3|2.5}}||no more cargo&lt;br /&gt;
|-&lt;br /&gt;
|2||04||{{ottdp|1.3|2.5}}||train arrives (starts unloading/loading)&lt;br /&gt;
|-&lt;br /&gt;
|3||08||{{ottdp|1.3|2.5}}||train leaves (done unloading &amp;amp; loading)&lt;br /&gt;
|-&lt;br /&gt;
|4||10||{{ottdp|1.3|2.5}}||train loads or unloads cargo&lt;br /&gt;
|-&lt;br /&gt;
|5||20||{{ottdp|1.3|2.5}}||train reserves platform (using PBS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Also note that none of the above triggers will actually trigger unless prop. 12 has at least one bit set. &amp;amp;nbsp;Triggers 01 will be triggered for any of the cargo types set in prop. 12, but trigger 02 will only be triggered if all of those cargo types have no more cargo waiting. Triggers 04, 08 and 20 are triggered no matter what cargo types the train transports, as long as prop. 12 is not zero.&lt;br /&gt;
&lt;br /&gt;
Triggers 04, 08, 10 and 20 only affect the platform on which they occur, as well as the random bits of the station, but not other platforms.&lt;br /&gt;
&lt;br /&gt;
Because the &#039;occured triggers&#039; are only stored once per station (not distinguishing tiles or cargo types), adding 80 to &lt;br /&gt;
random-triggers does not make a lot of sense.&lt;br /&gt;
&lt;br /&gt;
=== Town building triggers ===&lt;br /&gt;
&lt;br /&gt;
Town buildings have 8 random bits.&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Version!!Trigger&lt;br /&gt;
|-&lt;br /&gt;
|0||01||{{ottdp|0.6|2.5}}||the building tile is processed in the periodic tile processing loop&lt;br /&gt;
|-&lt;br /&gt;
|1||02||{{ottdp|0.6|2.5}}||the top tile of the building is processed in the periodic tile processing loop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The periodic tile processing loop constantly processes the tiles of the map, processing any given tile in every 256 ticks (approx. 3.5 TTD days). Since no &amp;quot;real&amp;quot; event happens to town buildings, you have only this opportunity to re-randomize the look of your building.&lt;br /&gt;
&lt;br /&gt;
If every 3.5 days is too fast for you, you can multiply the time-out by setting property 16 for the given tile. The time-out is 256 ticks*(prop. 16+1), so 0 means every 3.5 days, 1 means every 7 days, 2 means every 10.5 days and so on.&lt;br /&gt;
&lt;br /&gt;
If trigger 02 is activated, all parts of the building that has this trigger set will get the same random bits, allowing you to randomize a multi-tile building as one unit. On the other hand, if the tiles of a multi-tile building have trigger 1 set, all tiles will be randomized individually. Note that all tiles of a multi-tile building get the same value when building the building.&lt;br /&gt;
&lt;br /&gt;
=== Industry tile triggers ===&lt;br /&gt;
&lt;br /&gt;
Industry tiles have 8+16 random bits. Accessed through random action 2 type 80, you get 8 tile-specific bits, and accessed through random action 2 type 83, you get 16 industry-specific bits. The triggers are the same for both. Triggers 02 and 04 are triggered for all tiles of the industry at once. Every tile can rerandomise both its own random bits and those of the industry. That is every tile can specify some bits of the industry to rerandomize, and the union of all those bits will be rerandomsied at the end.&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Version!!Trigger&lt;br /&gt;
|-&lt;br /&gt;
|0||01||{{ottdp|0.6|2.5}}||the building tile is processed in the periodic tile processing loop&amp;lt;ref&amp;gt;{{ottdp|no| |}} Rerandomisation of the shared bits of the industry does not happen properly in current TTDPatch.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|1||02||{{ottdp|0.6|2.5}}||triggers simultaneously for all tiles of the industry every 256 ticks. If the industry is a primary one, output cargo is generated at the same time.&lt;br /&gt;
|-&lt;br /&gt;
|2||04||{{ottdp|0.6|2.5}}||cargo is delivered to the industry. If the industry is a processing one, output cargo is generated at the same time.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trigger 1 works similarly to trigger 1 for houses except that you cannot multiply the timeout: it&#039;s always 256 ticks.&lt;br /&gt;
&lt;br /&gt;
Industry tiles can rerandomise both their own random bits as well as the random bits of the industry (via random action type 83).&lt;br /&gt;
The remembered triggers for rerandomisation with 80 added to the triggers are in both cases the same per tile.&lt;br /&gt;
&lt;br /&gt;
Industries have random bits. However, they can only be rerandomised by their tiles.&lt;br /&gt;
&lt;br /&gt;
=== Canals ===&lt;br /&gt;
&lt;br /&gt;
Canals / Rivers have 8 random bits.&lt;br /&gt;
&lt;br /&gt;
There is currently no way to influence the random byte creation via triggers, internally the bits are feed from VarAction2Canals var 83 that is set when building a canal. Feature ids not supported by VarAction2Canals are undefined and should never be used.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
Objects have 8 random bits per tile of the object.&lt;br /&gt;
&lt;br /&gt;
There are no triggers for objects however.&lt;br /&gt;
&lt;br /&gt;
Also note that the random bits are unique to each tile in the object, and are not shared across the whole object.&lt;br /&gt;
&lt;br /&gt;
=== Railtypes ===&lt;br /&gt;
&lt;br /&gt;
Rail tiles have 2 pseudo random bits, based on tile location.&lt;br /&gt;
&lt;br /&gt;
There are no triggers.&lt;br /&gt;
&lt;br /&gt;
=== Roadtypes ===&lt;br /&gt;
&lt;br /&gt;
Road tiles have 2 pseudo random bits, based on tile location.&lt;br /&gt;
&lt;br /&gt;
There are no triggers.&lt;br /&gt;
&lt;br /&gt;
=== Tramtypes ===&lt;br /&gt;
&lt;br /&gt;
Tram tiles have 2 pseudo random bits, based on tile location.&lt;br /&gt;
&lt;br /&gt;
There are no triggers.&lt;br /&gt;
&lt;br /&gt;
=== Other features ===&lt;br /&gt;
&lt;br /&gt;
All features not mentioned in the list above have neither random bits nor triggers, including towns (which would be accessed using random action 2 type 83 for stations and industries).&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action2&amp;diff=4461</id>
		<title>Action2</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action2&amp;diff=4461"/>
		<updated>2023-06-11T09:52:40Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add road stops to feature table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Defining graphics set IDs.&lt;br /&gt;
&lt;br /&gt;
Action2 is used to group sets of sprites from the previous [[Action1]] together, and make them accessible by a [[VariationalAction2|variational]] or [[RandomAction2|random action 2]] (chain) or an [[Action3]].&lt;br /&gt;
&lt;br /&gt;
Do not skip an Action2 using [[Action9]] (unless it skips the whole file). Action2 must not be skipped by Action9 or TTDPatch will most likely crash. Skip or modify [[Action3]] instead. Skipping an Action2 with an [[Action7]] has no effect.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
In general, the data looks as follows. Some features use a different syntax though (see table below).&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Sprite-number&amp;gt; * &amp;lt;Length&amp;gt; 02 &amp;lt;feature&amp;gt; &amp;lt;set-id&amp;gt; &amp;lt;num-ent1&amp;gt; &amp;lt;num-ent2&amp;gt; &amp;lt;entries...&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Element!![[GRFActionsDetailed|Size]]!!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;Sprite-number&amp;gt;||dec||A sequential sprite number&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;length&amp;gt;||dec||The total number of bytes used in this action&lt;br /&gt;
|-&lt;br /&gt;
|02||B||Defines action 02&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;feature&amp;gt;||B||For what type of feature should the following sprites be used?&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;set-id&amp;gt;||B||What set-ID this action 2 defines&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;num-ent1&amp;gt;||B||First number of entries, depends on feature&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;num-ent2&amp;gt;||B||Second number of entries, depends on feature&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;entries...&amp;gt;||W||Entry numbers, depends on the feature&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Descriptions ==&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||[[Action2/Vehicles | Trains]]&lt;br /&gt;
|-&lt;br /&gt;
|01||[[Action2/Vehicles | Road Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
|02||[[Action2/Vehicles | Ships]]&lt;br /&gt;
|-&lt;br /&gt;
|03||[[Action2/Vehicles | Aircraft]]&lt;br /&gt;
|-&lt;br /&gt;
|04||[[Action2/Stations | Stations]]&lt;br /&gt;
|-&lt;br /&gt;
|05||[[Action2/Single_Set | Canals/Rivers]]&lt;br /&gt;
|-&lt;br /&gt;
|07||[[Action2/Sprite_Layout | Houses]] (special Sprite Layout format)&lt;br /&gt;
|-&lt;br /&gt;
|09||[[Action2/Sprite_Layout | Industry Tiles]] (special Sprite Layout format)&lt;br /&gt;
|-&lt;br /&gt;
|0A||[[Action2/Industries | Industries]] (special Production Callback format)&lt;br /&gt;
|-&lt;br /&gt;
|0B||[[Action2/Single_Set | Cargos]]&lt;br /&gt;
|-&lt;br /&gt;
|0C||[[Action2/Only_Callback_Failure | Sound Effects]] (callback failure only)&lt;br /&gt;
|-&lt;br /&gt;
|0D||[[Action2/Single_Set | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
|0E||[[Action2/Only_Callback_Failure | Signals]] (callback failure only)&lt;br /&gt;
|-&lt;br /&gt;
|0F||[[Action2/Sprite_Layout | Objects]] (special Sprite Layout format)&lt;br /&gt;
|-&lt;br /&gt;
|10||[[Action2/Single_Set | Railtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|11||[[Action2/Sprite_Layout | Airport Tiles]] (special Sprite Layout format)&lt;br /&gt;
|-&lt;br /&gt;
|12||[[Action2/Single_Set | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|13||[[Action2/Single_Set | Tramtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|14||[[Action2/Sprite_Layout | Road Stops]] (special Sprite Layout format)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== set-id ===&lt;br /&gt;
&lt;br /&gt;
This defines the ID of the current action 2. This ID will later be referred to by [[Action3|action 3]], or a variational/random action 2.&lt;br /&gt;
&lt;br /&gt;
You can reuse action 2 IDs, and there&#039;s no restriction on the order in which they are defined.&lt;br /&gt;
&lt;br /&gt;
=== num-ent1, num-ent2 ===&lt;br /&gt;
&lt;br /&gt;
Each feature has two different graphics ranges, but their exact meaning differs from feature to feature. For example, for vehicles, the first set is used while moving, and the second while loading/unloading in a station.&lt;br /&gt;
&lt;br /&gt;
=== entries ===&lt;br /&gt;
&lt;br /&gt;
This is the list of action 1 sets to use, first num-ent1 for the first range, then num-ent2 entries for the second range.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action1&amp;diff=4460</id>
		<title>Action1</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action1&amp;diff=4460"/>
		<updated>2023-06-11T09:51:50Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add road stops to feature table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Defining a set of real sprites.&lt;br /&gt;
Action 01 is used to define sets of real sprites (as opposed to pseudo-sprites). It can be put anywhere in the .nfo file after [[Action8|Action 8]].&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
=== Basic format ===&lt;br /&gt;
{{ottdp|0.6|2.0}}&lt;br /&gt;
 &amp;lt;sprite-number&amp;gt; * &amp;lt;length&amp;gt; &#039;&#039;&#039;01&#039;&#039;&#039; &amp;lt;feature&amp;gt; &amp;lt;num-sets&amp;gt; &amp;lt;num-ent&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Element!![[GRFActionsDetailed|Size]]!!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sprite-number&amp;gt;||dec||A sequential sprite number&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;length&amp;gt;||dec||The total number of bytes used in this action&lt;br /&gt;
|-&lt;br /&gt;
|01||B||Defines action 01&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;feature&amp;gt;||B||The feature that following sprites should be used for (s.b.)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;num-sets&amp;gt;||B||The number of sprite sets you have (one sprite set is one vehicle/station/ship etc). Setting this to 00 makes it an extended format (see below).&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;num-ent&amp;gt;||B*||The number of views the sprite has&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The block of data that always follows after action 01 should consist of num-sets * num-ent RealSprites or RecolorSprites.&lt;br /&gt;
&lt;br /&gt;
=== Extended format ===&lt;br /&gt;
{{ottdp|1.2.2|no|ottdrev=r24361}} &lt;br /&gt;
 &amp;lt;sprite-number&amp;gt; * &amp;lt;length&amp;gt; &#039;&#039;&#039;01&#039;&#039;&#039; &amp;lt;feature&amp;gt; &#039;&#039;&#039;00&#039;&#039;&#039; &amp;lt;first-set&amp;gt; &amp;lt;num-sets&amp;gt; &amp;lt;num-ent&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Element!![[GRFActionsDetailed|Size]]!!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sprite-number&amp;gt;||dec||A sequential sprite number&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;length&amp;gt;||dec||The total number of bytes used in this action&lt;br /&gt;
|-&lt;br /&gt;
|01||B||Defines action 01&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;feature&amp;gt;||B||The feature that following sprites should be used for (s.b.)&lt;br /&gt;
|-&lt;br /&gt;
|00||B||Identfies the extended format.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;first-set&amp;gt;||B*||The ID of the first spriteset to define&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;num-sets&amp;gt;||B*||The number of sprite sets you have (one sprite set is one vehicle/station/ship etc)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;num-ent&amp;gt;||B*||The number of views the sprite has&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The block of data that always follows after action 01 should consist of num-sets * num-ent RealSprites or RecolorSprites.&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||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;
|0D||Airports&lt;br /&gt;
|-&lt;br /&gt;
|0F||Objects&lt;br /&gt;
|-&lt;br /&gt;
|10||Railtypes&lt;br /&gt;
|-&lt;br /&gt;
|11||Airport Tiles&lt;br /&gt;
|-&lt;br /&gt;
|12||Roadtypes&lt;br /&gt;
|-&lt;br /&gt;
|13||Tramtypes&lt;br /&gt;
|-&lt;br /&gt;
|14||Road Stops&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== first-set ===&lt;br /&gt;
This specifies the first set ID to define.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|1.2|no|ottdrev=r22925}} Since OpenTTD r22925 spritesets stay valid across multiple Action1. That is, if one Action1 defines spritesets 0 to 4, and later a second Action1 redefines spriteset 0, spritesets 1 to 4 still refer to the first Action1. Spritesets are feature-specific, each feature maintains its own mapping of ids to Action1 spritesets. (Prior to OpenTTD r22925 and in TTDPatch only spritesets from a single Action1 are referencible from an Action2 at a time. Referencing an Action1 with a different feature than the Action2 is an error.)&lt;br /&gt;
&lt;br /&gt;
This behaviour of Action1 applies to both the basic as well as the extended format. &lt;br /&gt;
&lt;br /&gt;
{{ottdp|1.2|no|ottdrev=r22926}} In addition the extended format allows to specify an ID for the first spriteset to define. That way individual spritesets and be redefined individually. &lt;br /&gt;
&lt;br /&gt;
There are no restriction on the order the spritesets are defined. If you define spritesets 23..25 in one Action 1, define spritesets 0..5 in another Action 1, then an Action 2 can access sets 0..5 and 23..25. Later another Action 1 can redefine spritesets 2..3, and following Action 2 could access spritesets 0..1, 2..3, 4, 23..25 from various Action 1.&lt;br /&gt;
&lt;br /&gt;
Note that all spriteset defined in a single Action1 have the same amount of sprites per spriteset. Using multiple Action1 you can define spriteset with different amounts of sprites per set. Action2 will individually use the size of each referenced spriteset. There is no requirement for consistent numbers of sprites in Action2 or spritelayouts.&lt;br /&gt;
&lt;br /&gt;
=== num-sets ===&lt;br /&gt;
The amount of stations, vehicles, ships, etc that the following sprites represent (be warned, one spriteset can be used for more as one vehicle, or truck; you will see this when you reach [[Action2|Action 2]] and [[Action3|Action 3]])&lt;br /&gt;
&lt;br /&gt;
=== num-ent ===&lt;br /&gt;
&lt;br /&gt;
This sets how many different views each entry has.&lt;br /&gt;
&lt;br /&gt;
For vehicles, this corresponds to the different directions it can be in. If your vehicle is symmetrical you need 4 views, and if it isn&#039;t symmetrical then use 8 views.&lt;br /&gt;
&lt;br /&gt;
A station should normally be 12 (hex) because a station is made out of 18 (decimal) sprites, although if you use a different sprite layout for your station this number may vary.&lt;br /&gt;
For canals, it depends on the canal feature, see [[Action3|Action 3]].&lt;br /&gt;
&lt;br /&gt;
For houses and industry tiles, this should be between 1 and 4 and specifies the number of different construction stages. Sprites after the first four are always ignored. See also action 2 and 3.&lt;br /&gt;
&lt;br /&gt;
For cargos, this should always be 1. The following sprites should be no larger than 10x10 pixels or they won&#039;t fit into the station window correctly.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.6|2.5|ttdprev=2.0.1 alpha 49}} Since TTDPatch 2.0.1 alpha 49, this value is a so-called &amp;quot;extended byte&amp;quot; (see [[GRFActionsDetailed]]).&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.6|2.5|ttdprev=2.0.1 alpha 63}} Since TTDPatch 2.0.1 alpha 63, it is possible to have &amp;lt;num-ent&amp;gt;=0. This is useful for defining an action 1/2 combination that only serves as invalid callback result. If the .grf file defines no graphics otherwise, this way callbacks can return an explicit failure code without needing any actual sprites to be allocated. This is also needed if the feature has [[Action2/Only_Callback_Failure | no graphics at all]].&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Below is an example of what a real Action 1 pseudo-sprite could look like with the sprite entries under it.&lt;br /&gt;
&lt;br /&gt;
 2 * 4 01 00 01 08&lt;br /&gt;
 3 C:\TTD\SPRITES\mytrain.pcx 66 8 01 18 8 -3 -10&lt;br /&gt;
 4 C:\TTD\SPRITES\mytrain.pcx 82 8 09 15 20 -14 -6&lt;br /&gt;
 5 C:\TTD\SPRITES\mytrain.pcx 114 8 01 12 28 -14 -6&lt;br /&gt;
 6 C:\TTD\SPRITES\mytrain.pcx 162 8 09 16 20 -4 -8&lt;br /&gt;
 7 C:\TTD\SPRITES\mytrain.pcx 194 8 01 18 8 -3 -10&lt;br /&gt;
 8 C:\TTD\SPRITES\mytrain.pcx 210 8 09 16 20 -14 -7&lt;br /&gt;
 9 C:\TTD\SPRITES\mytrain.pcx 242 8 01 12 28 -14 -6&lt;br /&gt;
 10 C:\TTD\SPRITES\mytrain.pcx 290 8 09 15 20 -4 -7&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!&#039;&#039;&#039;Byte&#039;&#039;&#039;!!&#039;&#039;&#039;Meaning&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|2||&amp;lt;sprite-number&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|4||&amp;lt;length&amp;gt; of the action in bytes; start counting at 01 (&amp;lt;action&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
|01||&amp;lt;action&amp;gt;: sets this pseudo-sprite to function as action 1&lt;br /&gt;
|-&lt;br /&gt;
|00||&amp;lt;feature&amp;gt;: In this case Train&lt;br /&gt;
|-&lt;br /&gt;
|01||&amp;lt;num-sets&amp;gt;: 1 Set of views&lt;br /&gt;
|-&lt;br /&gt;
|08||&amp;lt;num-ent&amp;gt;: 8 views of this train&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Main_Page&amp;diff=4459</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Main_Page&amp;diff=4459"/>
		<updated>2023-06-11T09:51:06Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add road stops to feature tables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sprite types ==&lt;br /&gt;
;[[Action0]] - Defines new properties for anything added or changed by the NewGRF&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
| [[Action0/Vehicles | Vehicles]]&lt;br /&gt;
| [[Action0/Vehicles/Trains | Trains]]&lt;br /&gt;
| [[Action0/Vehicles/RoadVehicles | RoadVehicles]]&lt;br /&gt;
| [[Action0/Vehicles/Ships | Ships]]&lt;br /&gt;
| [[Action0/Vehicles/Planes | Aircraft]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action0/Stations | Stations]]&lt;br /&gt;
| [[Action0/Canals | Canals &amp;amp; Rivers]]&lt;br /&gt;
| [[Action0/Bridges | Bridges]]&lt;br /&gt;
| [[Action0/Houses | Houses]]&lt;br /&gt;
| [[Action0/Global Settings | Global Settings]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action0/Industry Tiles | Industry Tiles]]&lt;br /&gt;
| [[Action0/Industries | Industries]]&lt;br /&gt;
| [[Action0/Cargos | Cargos]]&lt;br /&gt;
| [[Action0/Sound Effects | Sound Effects]]&lt;br /&gt;
| [[Action0/Airports | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Signals&#039;&#039;&lt;br /&gt;
| [[Action0/Objects | Objects]]&lt;br /&gt;
| [[Action0/Railtypes | Railtypes]]&lt;br /&gt;
| [[Action0/Airport Tiles | Airport Tiles]]&lt;br /&gt;
| [[Action0/Roadtypes | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action0/Tramtypes | Tramtypes]]&lt;br /&gt;
| [[Action0/Road Stops| Road Stops]]&lt;br /&gt;
| &#039;&#039;Towns&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
;[[Action1]] - Defines one or more graphics sets&lt;br /&gt;
;[[Action2]] - Defines graphics set IDs&lt;br /&gt;
* Basic Action2&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
|colspan=5| [[Action2/Vehicles | Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action2/Stations | Stations]]&lt;br /&gt;
| [[Action2/Single Set | Canals &amp;amp; Rivers]]&lt;br /&gt;
| &#039;&#039;Bridges&#039;&#039;&lt;br /&gt;
| [[Action2/Sprite Layout | Houses]]&lt;br /&gt;
| &#039;&#039;Global Settings&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[Action2/Sprite Layout | Industry Tiles]]&lt;br /&gt;
| [[Action2/Industries | Industries]]&lt;br /&gt;
| [[Action2/Single Set | Cargos]]&lt;br /&gt;
| [[Action2/Only Callback Failure | Sound Effects]]&lt;br /&gt;
| [[Action2/Single Set | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action2/Only Callback Failure | Signals]]&lt;br /&gt;
| [[Action2/Sprite Layout | Objects]]&lt;br /&gt;
| [[Action2/Single Set | Railtypes]]&lt;br /&gt;
| [[Action2/Sprite Layout | Airport Tiles]]&lt;br /&gt;
| [[Action2/Single Set | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action2/Single Set | Tramtypes]]&lt;br /&gt;
| [[Action2/Sprite Layout | Road Stops]]&lt;br /&gt;
| &#039;&#039;Towns&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
* [[VariationalAction2]] - A conditional switch that determines a [[Callbacks|callback]] result or chains to another Action 2&lt;br /&gt;
: [[VarAction2Advanced]] - Advanced features of Variational Action 2&lt;br /&gt;
: [[GlobalVariables | Global Variables]]&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;VA2&#039;&#039;&#039;&lt;br /&gt;
|colspan=5| [[VariationalAction2/Vehicles | Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
| [[VariationalAction2/Stations | Stations]]&lt;br /&gt;
| [[VariationalAction2/Canals | Canals &amp;amp; Rivers]]&lt;br /&gt;
| [[VariationalAction2/Bridges | Bridges]]&lt;br /&gt;
| [[VariationalAction2/Houses | Houses]]&lt;br /&gt;
| &#039;&#039;Global Settings&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[VariationalAction2/Industry Tiles | Industry Tiles]]&lt;br /&gt;
| [[VariationalAction2/Industries | Industries]]&lt;br /&gt;
| [[VariationalAction2/Cargos | Cargos]]&lt;br /&gt;
| &#039;&#039;Sound Effects&#039;&#039;&lt;br /&gt;
| [[VariationalAction2/Airports | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| [[VariationalAction2/Signals | Signals]]&lt;br /&gt;
| [[VariationalAction2/Objects | Objects]]&lt;br /&gt;
| [[VariationalAction2/Railtypes | Railtypes]]&lt;br /&gt;
| [[VariationalAction2/Airport Tiles | Airport Tiles]]&lt;br /&gt;
| [[VariationalAction2/Roadtypes | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[VariationalAction2/Tramtypes | Tramtypes]]&lt;br /&gt;
| [[VariationalAction2/Road Stops | Road Stops]]&lt;br /&gt;
| [[VariationalAction2/Towns | Towns]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
* [[RandomAction2]] - A randomized Variational Action 2&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;R&#039;&#039;&#039;&lt;br /&gt;
|colspan=5| [[RandomAction2#Vehicles | Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
| [[RandomAction2#Stations | Stations]]&lt;br /&gt;
| [[RandomAction2#Canals | Canals &amp;amp; Rivers]]&lt;br /&gt;
| &#039;&#039;Bridges&#039;&#039;&lt;br /&gt;
| [[RandomAction2#Town_building_triggers | Houses]]&lt;br /&gt;
| &#039;&#039;Global Settings&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[RandomAction2#Industry_tile_triggers | Industry Tiles]]&lt;br /&gt;
| [[RandomAction2#Industry_tile_triggers | Industries]]&lt;br /&gt;
| &#039;&#039;Cargos&#039;&#039;&lt;br /&gt;
| &#039;&#039;Sound Effects&#039;&#039;&lt;br /&gt;
| [[RandomAction2#Stations | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Signals&#039;&#039;&lt;br /&gt;
| [[RandomAction2#Objects | Objects]]&lt;br /&gt;
| [[RandomAction2#Rail_types | Railtypes]]&lt;br /&gt;
| [[RandomAction2#Stations | Airport Tiles]]&lt;br /&gt;
| [[RandomAction2#Road_types | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[RandomAction2#Tram_types | Tramtypes]]&lt;br /&gt;
| [[RandomAction2#Road_stops | Road Stops]]&lt;br /&gt;
| &#039;&#039;Towns&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* [[Callbacks]] - List of available callbacks&lt;br /&gt;
&lt;br /&gt;
;[[Action3]] - Associates Action 2s with an Action 0&lt;br /&gt;
:{| |-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:3em&amp;quot;|&#039;&#039;&#039;3&#039;&#039;&#039;&lt;br /&gt;
|colspan=5| [[Action3 | Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action3 | Stations]]&lt;br /&gt;
| [[Action3/Canals | Canals &amp;amp; Rivers]]&lt;br /&gt;
| &#039;&#039;Bridges&#039;&#039;&lt;br /&gt;
| [[Action3 | Houses]]&lt;br /&gt;
| &#039;&#039;Global Settings&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[Action3 | Industry Tiles]]&lt;br /&gt;
| [[Action3 | Industries]]&lt;br /&gt;
| [[Action3 | Cargos]]&lt;br /&gt;
| [[Action3 | Sound Effects]]&lt;br /&gt;
| [[Action3 | Airports]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action3 | Signals]]&lt;br /&gt;
| [[Action3 | Objects]]&lt;br /&gt;
| [[Action3/Railtypes | Railtypes]]&lt;br /&gt;
| [[Action3 | Airport Tiles]]&lt;br /&gt;
| [[Action3/Roadtypes | Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Action3/Tramtypes | Tramtypes]]&lt;br /&gt;
| [[Action3 | Road Stops]]&lt;br /&gt;
| &#039;&#039;Towns&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
: [[Action3LiveryOverride]] - Change wagon livery to match the engine&lt;br /&gt;
;[[Action4]] - Defines text strings&lt;br /&gt;
;[[Action5]] - Replaces base set sprites not present in the original TTD.&lt;br /&gt;
;[[Action6]] - Modifies the contents of the following sprite&lt;br /&gt;
;[[Action7]] - Conditionally skips sprites or jumps to a label&lt;br /&gt;
: [[TTDPatchFlags| GameConfigFlags]] - Configuration flags for Action 7/9 Variable 85&lt;br /&gt;
;[[Action8]] - Defines GRFID, Name and Description&lt;br /&gt;
;[[Action9]] - (see action 7 above)&lt;br /&gt;
;[[ActionA]] - Replaces TTD base set sprites&lt;br /&gt;
;[[ActionB]] - Generates an error message&lt;br /&gt;
;[[ActionC]] - Does nothing (can be used to embed comments)&lt;br /&gt;
;[[ActionD]] - Assigns parameters and calculates results&lt;br /&gt;
* [[ReadingOtherGRFParameters]] - Reading another GRF file&#039;s parameters&lt;br /&gt;
* [[ReadingPatchVariables| ReadingGameSettings]] - Reading game configuration settings&lt;br /&gt;
* [[GRFResourceManagement]] - Preventing conflicts with limited resources&lt;br /&gt;
;[[ActionE]] - Deactivates a NewGRF file&lt;br /&gt;
;[[ActionF]] - Defines new town name styles&lt;br /&gt;
;[[Action10]] - Defines a label for action 7/9&lt;br /&gt;
;[[Action11]] - Defines new sounds&lt;br /&gt;
;[[Action12]] - Adds Unicode font glyphs&lt;br /&gt;
;[[Action13]] - Translates GRF-specific strings&lt;br /&gt;
;[[Action14]] - Static NewGRF information (OpenTTD only)&lt;br /&gt;
;[[RealSprites]] - Sprites that actually are drawn on the screen&lt;br /&gt;
;[[RecolorSprites]] - Changing other sprites&#039; colors&lt;br /&gt;
&lt;br /&gt;
== Graphics properties ==&lt;br /&gt;
* [[PalettesAndCoordinates#Palettes | Palettes]] - Palettes used by the game&lt;br /&gt;
* [[PalettesAndCoordinates#Coordinates | Coordinates]] - Coordinates used for sprite alignement&lt;br /&gt;
&lt;br /&gt;
== TTD defaults ==&lt;br /&gt;
* [[DefaultHouseProps]] - Default property values for TTD&#039;s houses&lt;br /&gt;
* [[IndustryTileDefaultProps]] - Default property values for TTD&#039;s industry tiles&lt;br /&gt;
* [[IndustryDefaultProps]] - Default properties values for TTD&#039;s industries&lt;br /&gt;
* [[CargoDefaultProps]] - Default property values for TTD&#039;s cargo types&lt;br /&gt;
* [[VehicleIDs]] - Default vehicle IDs&lt;br /&gt;
* [[NML:Default_Vehicle_Properties]] - Default Vehicle Properties (NML)&lt;br /&gt;
* [[AirportTypes]] - Default Airport IDs&lt;br /&gt;
* [[AirportTileDefaultProps]] - Default airport tile properties&lt;br /&gt;
&lt;br /&gt;
== NewGRF commons ==&lt;br /&gt;
* [[Action0Cargos#CargoClasses_.2816.29 | Cargo classes]] - Commonly used cargo classes&lt;br /&gt;
* [[CargoTypes | Cargo labels]] - Commonly used cargo labels&lt;br /&gt;
* [[ObjectLabels | Object classes]] - Commonly used object clases&lt;br /&gt;
* [[TracktypeLabels | Rail/road/tram type labels]] - Commonly used labels for rail/road/tram types&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
* [[Features]] - List of all features and feature-specific actions.&lt;br /&gt;
* [[BaseCosts | Base Costs]]&lt;br /&gt;
* [[VehicleRefitting | Vehicle Refitting]]&lt;br /&gt;
* [[GrfLoadingStages | GRF loading stages]]&lt;br /&gt;
* [[GlobalVariables | Global variables]]&lt;br /&gt;
* [[Storages | Storages]]&lt;br /&gt;
* [[StringCodes | String control codes]]&lt;br /&gt;
* [[TextIDs | Text IDs (TTD + TTDPatch + NewGRF defined)]]&lt;br /&gt;
* [[GRFActionsDetailed | Syntax details]]&lt;br /&gt;
* [[Version numbers | Types of version numbers used throughout the specs]]&lt;br /&gt;
* [[DebuggingGRFCode | Debugging NewGRFs]]&lt;br /&gt;
* [[SpriteErrors | TTDPatch error codes on loading NewGRFs]]&lt;br /&gt;
&lt;br /&gt;
== Game mechanics ==&lt;br /&gt;
* [[TownZones | Town zones]]&lt;br /&gt;
* [[NMLMain | NML]]&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action0&amp;diff=4458</id>
		<title>Action0</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action0&amp;diff=4458"/>
		<updated>2023-06-11T09:45:58Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Add road stops to feature table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
Action 0 allows to change the feature properties of &#039;features&#039;, i.e. vehicles, stations, bridges, houses and more.&lt;br /&gt;
Each feature has its own very specific properties. These are explained in detail in their separate pages.&lt;br /&gt;
&lt;br /&gt;
You will also find the minimum version requirements for properites on the pages.&lt;br /&gt;
Note, that due to the nature of Action 0 unknown properties cannot be ignored. Only a whole Action 0 can be skipped.&lt;br /&gt;
OpenTTD and TTDPatch will disable GRFs once they encounter an unknown property. So, if you use some properties for optional features, which you want to disable for older versions of OpenTTD or TTDPatch, you have to skip the Action 0 using [[Action9|Action 9]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
The data for Action 0 looks as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Sprite-number&amp;gt; * &amp;lt;Length&amp;gt; 00 &amp;lt;Feature&amp;gt; &amp;lt;Num-props&amp;gt; &amp;lt;Num-info&amp;gt; &amp;lt;Id&amp;gt; (&amp;lt;Property &amp;lt;New-info&amp;gt;)...&lt;br /&gt;
&lt;br /&gt;
Here is a short overview of what every term means:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Element!![[GRFActionsDetailed|Size]]!!Description&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;Sprite-number&amp;gt; ||dec||A sequential sprite number&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;Length&amp;gt; ||dec||The total number of bytes in the action&lt;br /&gt;
|-&lt;br /&gt;
|00 ||B||Action type. In this case, 00&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;Feature&amp;gt; ||B||Which type of feature you would like to change&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;Num-props&amp;gt; ||B||How many properties you would like to change per vehicle or station&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;Num-info&amp;gt; ||B||How many vehicles/stations you would like to change&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;Id&amp;gt; ||B*||The ID of the first vehicle/station to change&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;Property&amp;gt; ||B||What property to change for each vehicle/station&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;New-info&amp;gt; ||V||The new value of the property&lt;br /&gt;
|}&lt;br /&gt;
You can put an Action 0 anywhere after [[Action8|Action 8]] in the GRF file.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.6|2.5|ttdprev=2.0.1 alpha 61}} The &amp;lt;Id&amp;gt; is an extended byte since TTDPatch 2.0.1 alpha 61, to support the definition of &amp;gt;255 sound effects.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.7|ottdrev=r13482}} {{grf|7|&amp;lt;7}} In OpenTTD since r13482, extended IDs (up to 65535) can be used for vehicles as well. However there is currently a caveat that articulated parts must be below 128.&lt;br /&gt;
{{ottdp|1.2}} {{grf|8}} In OpenTTD 1.2, extended IDs (up to 65535) can be used for vehicles as well. The ID for articulated vehicles must be below 16384.&lt;br /&gt;
&lt;br /&gt;
== Descriptions ==&lt;br /&gt;
&lt;br /&gt;
=== Sprite-number ===&lt;br /&gt;
&lt;br /&gt;
Action 0 can appear anywhere in the GRF file, so set it to the sprite number you are currently at.&lt;br /&gt;
&lt;br /&gt;
=== Length ===&lt;br /&gt;
&lt;br /&gt;
The total number of bytes in Action 0. Start counting from &amp;lt;Action&amp;gt;, the bit that sets the pseudo-sprite to act as the specified action.&lt;br /&gt;
&lt;br /&gt;
=== Action ===&lt;br /&gt;
&lt;br /&gt;
The type of action this pseudo-sprites defines. It should be 00 here because we want this pseudo-sprite to act as Action 0.&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;
!Value&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|[[Features|Feature]]&lt;br /&gt;
|-&lt;br /&gt;
|00 || [[Action0/Vehicles/Trains|Trains]]&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot;|[[Action0/Vehicles|Common vehicle properties]]&lt;br /&gt;
|-&lt;br /&gt;
|01 || [[Action0/Vehicles/RoadVehicles|Road Vehicles]]&lt;br /&gt;
|-&lt;br /&gt;
|02 || [[Action0/Vehicles/Ships|Ships]]&lt;br /&gt;
|-&lt;br /&gt;
|03 || [[Action0/Vehicles/Planes|Aircraft]]&lt;br /&gt;
|-&lt;br /&gt;
|04&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| [[Action0/Stations|Stations]]&lt;br /&gt;
|-&lt;br /&gt;
|05 &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| [[Action0/Canals|Canals]]&lt;br /&gt;
|-&lt;br /&gt;
|06 &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| [[Action0/Bridges|Bridges]]&lt;br /&gt;
|-&lt;br /&gt;
|07 &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| [[Action0/Houses|Houses]] (see [[DefaultHouseProps|defaults]])&lt;br /&gt;
|-&lt;br /&gt;
|08 &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| [[Action0/Global Settings|Global Settings]]&lt;br /&gt;
|-&lt;br /&gt;
|09 &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| [[Action0/Industry Tiles|Industry Tiles]] (see [[IndustryTileDefaultProps|defaults]])&lt;br /&gt;
|-&lt;br /&gt;
|0A &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| [[Action0/Industries|Industries]] (see [[IndustryDefaultProps|defaults]])&lt;br /&gt;
|-&lt;br /&gt;
|0B &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| [[Action0/Cargos|Cargos]] (see [[CargoDefaultProps|defaults]])&lt;br /&gt;
|-&lt;br /&gt;
|0C &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| [[Action0/Sound Effects|Sound Effects]]&lt;br /&gt;
|-&lt;br /&gt;
|0D &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| [[Action0/Airports|Airports]]&lt;br /&gt;
|-&lt;br /&gt;
|0F &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| [[Action0/Objects|Objects]]&lt;br /&gt;
|-&lt;br /&gt;
|10 &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| {{ottdp|1.0|no|ottdrev=r18969}} [[Action0/Railtypes|Railtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|11 &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| {{ottdp|1.1|no|ottdrev=r19204}} [[Action0/Airport Tiles|Airport Tiles]]&lt;br /&gt;
|-&lt;br /&gt;
|12 &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| {{ottdp|1.10|no|ottdrev=gc02ef3e456}} [[Action0/Roadtypes|Roadtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|13 &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| {{ottdp|1.10|no|ottdrev=gc02ef3e456}} [[Action0/Tramtypes|Tramtypes]]&lt;br /&gt;
|-&lt;br /&gt;
|14 &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| {{ottdp|14|no|ottdrev=g4c1406a4b5}} [[Action0/Road Stops|Road Stops]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Num-props ===&lt;br /&gt;
&lt;br /&gt;
This is the number of properties that you wish to change per vehicle or station. Note: even if you wish to set the same properties to the same value for different vehicles then you must still repeat the properties and their values for each vehicle.&lt;br /&gt;
&lt;br /&gt;
=== Num-info ===&lt;br /&gt;
&lt;br /&gt;
Simply the number of vehicles that you will change using this action 0.&lt;br /&gt;
&lt;br /&gt;
=== Id ===&lt;br /&gt;
The [[VehicleIDs|Vehicle ID]] of the first vehicle or station to change. If num-info is greater than one, this vehicle/station and the following vehicles/stations will be changed.&lt;br /&gt;
&lt;br /&gt;
=== Property ===&lt;br /&gt;
&lt;br /&gt;
The number of the property that will be changed. This and the New-info section are repeated as many times as there are properties to set; in total, there are &amp;lt;&lt;br /&gt;
num-props&amp;gt; property bytes.&lt;br /&gt;
&lt;br /&gt;
See relevant sub-section (links at the bottom) for more details.&lt;br /&gt;
&lt;br /&gt;
=== New-info ===&lt;br /&gt;
&lt;br /&gt;
The new information that will replace the previous information for the specified property. This is a variable size; dependent upon the property. Each property byte is followed by &amp;lt;num-info&amp;gt; new-info sections.&lt;br /&gt;
The appropriate \b, \w, and \d escape sequences can be quite useful for most &amp;lt;&lt;br /&gt;
new-info&amp;gt;s. See [[GRFActionsDetailed#Byte order|the discussion of escape sequences]] for further information.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Objects&amp;diff=4386</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=4386"/>
		<updated>2023-02-19T22:54:03Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Correct name of colour object variable from company_colour, see: https://github.com/OpenTTD/nml/pull/267&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
==Object IDs==&lt;br /&gt;
Object IDs are NewGRF-local and can therefore freely be chosen in the 0..255 range. An object is allocated by setting the &#039;class&#039;-property, which should therefore be set first. Overriding the default objects (e.g. transmitter, lighthouse) is not (yet) possible.&lt;br /&gt;
&lt;br /&gt;
==Object properties==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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. &#039;&#039;&#039;This property &#039;&#039;must&#039;&#039; be set first, before any other properties or graphics.&#039;&#039;&#039; 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;
See [[#Animation_triggers|list of animation triggers]]&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;
| count_per_map256&lt;br /&gt;
| 0..255&lt;br /&gt;
| {{ottd|1.4|r25878}} Measure for the amount of objects placed on a map of 256^2 tiles. (Comparison: there are 15 transmitter)&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;wikitable sortable&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. Note that if an object is allowed to be built both on land and on water, then it will resist being flooded and will not flood adjacent tiles.&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;
| OBJ_FLAG_SCALE_BY_WATER&lt;br /&gt;
| Scale amount of objects placed on map generation not by map area, but roughly by the length of the coastline&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Object variables==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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 .. (frame_count - 1)&lt;br /&gt;
| Current animation frame, with the maximum defined in the object&#039;s &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;animation_info&amp;lt;/code&amp;gt; property.&lt;br /&gt;
|-&lt;br /&gt;
| 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;wikitable sortable&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_object_view&lt;br /&gt;
| x, y offset (-8..7)&lt;br /&gt;
|&lt;br /&gt;
| {{ottdp|1.4|no|ottdrev=r26316}} View of the object on a nearby tile, if defined by the same grf.&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. Only valid for tiles of the same object.&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. Only valid for tiles of the same object.&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;
==Object callbacks==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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 &amp;lt;ref name=&amp;quot;notyetbuilt&amp;quot;&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;/ref&amp;gt;&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. 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;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt;: 32 random bits, if the object flag OBJ_FLAG_RANDOM_ANIMATION is set.&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. Returning a sound effect in the high byte will cause that sound effect to be played.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;extra_callback_info1&amp;lt;/code&amp;gt;: 32 random bits, if the object flag OBJ_FLAG_RANDOM_ANIMATION is set.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;getbits(extra_callback_info2, 0, 8)&amp;lt;/code&amp;gt;: Reason for the callback trigger, see the [[#Animation triggers| table]] below.&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. &lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;getbits(extra_callback_info1, 0, 8)&amp;lt;/code&amp;gt;: 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.&lt;br /&gt;
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 &amp;lt;ref name=&amp;quot;notyetbuilt&amp;quot;/&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
See the [[#Location check results|table]] below&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;getbits(extra_callback_info1, 0, 5)&amp;lt;/code&amp;gt;: Tile slope, see below&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;getbits(extra_callback_info2, 0, 8)&amp;lt;/code&amp;gt;: The location of the tile within the object as 16*y + x.&lt;br /&gt;
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 &amp;lt;ref name=&amp;quot;notyetbuilt&amp;quot;/&amp;gt;&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;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{NML:LocationCheckResults}}&lt;br /&gt;
&lt;br /&gt;
===Animation triggers===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&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>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action13&amp;diff=4165</id>
		<title>Action13</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action13&amp;diff=4165"/>
		<updated>2022-01-27T23:25:01Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Fix  &amp;lt;feature&amp;gt; incorrectly appearing in the format summary line&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
{{ottdp|0.6|2.6|ttdprev=r857}}&lt;br /&gt;
Translating regular strings is easy by just overwriting them with an [[Action4|action 4]], however this is not possible for translating GRF-specific strings in the D000 or DC00 range of IDs. Instead, these must be translated with this action 13.&lt;br /&gt;
&lt;br /&gt;
{{ottd|}}Usage of this action with OpenTTD is troublesome in multiplayer. The action does not specify a language code for the translation, but forces the translation on every player. However, GRFs with only action 13 can be loaded as [[OpenTTD static NewGRF]]. {{grfFrom|8}} GRF version 8 alleviates this problem by providing the language that is overridden.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The data looks as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;sprite-number&amp;gt; * &amp;lt;length&amp;gt; 13 &amp;lt;GRFID&amp;gt; (&amp;lt;language-id&amp;gt;)? &amp;lt;num-ent&amp;gt; &amp;lt;offset&amp;gt; &amp;lt;text...&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&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 in the action&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|B&lt;br /&gt;
|Action 13&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;GRFID&amp;gt;&lt;br /&gt;
|4*B&lt;br /&gt;
|The GRFID of the file whose texts are to be translated&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;language-id&amp;gt;&lt;br /&gt;
|B&lt;br /&gt;
|{{grfFrom|8}} Which of TTD&#039;s languages these strings are for (only for GRF version 8 an higher)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;num-ent&amp;gt;&lt;br /&gt;
|B&lt;br /&gt;
|Number of strings&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;offset&amp;gt;&lt;br /&gt;
|W&lt;br /&gt;
|First text ID&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;text...&amp;gt;&lt;br /&gt;
|S&lt;br /&gt;
|Zero-terminated strings&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For action 13, &amp;lt;num-ent&amp;gt;, &amp;lt;offset&amp;gt; and &amp;lt;text...&amp;gt; work exactly as for [[Action4|action 4]], but the offset may only refer to a text ID in the D000 or DC00 range of IDs.&lt;br /&gt;
&lt;br /&gt;
Action 13 is skipped if the given GRFID cannot be found or if the file is inactive; action 13 generates an error message and disables the current file if it appears before the GRF that it is translating.&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=NML:Cargos&amp;diff=4157</id>
		<title>NML:Cargos</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=NML:Cargos&amp;diff=4157"/>
		<updated>2021-11-16T16:21:18Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Clarify that town_growth_multiplier has no effect in OpenTTD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NMLNavPropVarCB}}&lt;br /&gt;
&lt;br /&gt;
==Cargo IDs==&lt;br /&gt;
For cargos, the item ID corresponds to the cargo type slot of the cargo. TTD default cargos occupy slots 0-11, so if you want to define a new cargo be sure to set this ID to 12 or higher. It is recommended to set the &#039;number&#039;-property to the same value as the item ID.&lt;br /&gt;
&lt;br /&gt;
==Cargo properties==&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;
| number&lt;br /&gt;
| 0..63&lt;br /&gt;
| Number of the cargo for bitmasks. Prior to {{ottd|1.9}} this was clamped to 0..31. This mostly affects old NewGRFs that don&#039;t have a cargo translation table.&lt;br /&gt;
|-&lt;br /&gt;
| type_name&lt;br /&gt;
| string&lt;br /&gt;
| String to use as cargo type name. Example: &amp;quot;Passengers&amp;quot;. The list of [[NML:Default_TTD_strings|default TTD strings]] contains the strings used by the default cargos (TTD_STR_CARGO_PLURAL_XXX), which may be re-used.&lt;br /&gt;
|-&lt;br /&gt;
| unit_name&lt;br /&gt;
| string&lt;br /&gt;
| String to use for the name of one unit from the cargo type. Currently used for subsidies only (First Passenger service to..). Example string: &amp;quot;Passenger&amp;quot;. The list of [[NML:Default_TTD_strings|default TTD strings]] contains the strings used by the default cargos (TTD_STR_CARGO_SINGULAR_XXX), which may be re-used.&lt;br /&gt;
|-&lt;br /&gt;
| units_of_cargo&lt;br /&gt;
| string&lt;br /&gt;
| String used to show the &amp;quot;short cargo&amp;quot; form for cargo units, e.g. &amp;quot;10 tonnes&amp;quot; or &amp;quot;20.000 litres&amp;quot;. Example: &amp;quot;{COMMA} item{P &amp;quot;&amp;quot; s}&amp;quot;. The list of [[NML:Default_TTD_strings|default TTD strings]] contains the strings used by the default cargos (TTD_STR_PASSENGERS and further), which may be re-used.&lt;br /&gt;
|-&lt;br /&gt;
| items_of_cargo&lt;br /&gt;
| string&lt;br /&gt;
| String used to show the &amp;quot;long cargo&amp;quot; form for cargo units, e.g. &amp;quot;10 tonnes of coal&amp;quot; or &amp;quot;20.000 litres of water&amp;quot;. Example: &amp;quot;{COMMA} item{P &amp;quot;&amp;quot; s} of livestock&amp;quot;. The list of [[NML:Default_TTD_strings|default TTD strings]] contains the strings used by the default cargos (TTD_STR_QUANTITY_XXX), which may be re-used.&lt;br /&gt;
|-&lt;br /&gt;
| type_abbreviation&lt;br /&gt;
| string&lt;br /&gt;
| String used for the two-letter cargo type abbreviation. Must start with a {TINYFONT} string-code. Example: &amp;quot;{TINYFONT}XX&amp;quot;. Make sure to avoid multiple cargos having the same abbreviation. The list of [[NML:Default_TTD_strings|default TTD strings]] contains the strings used by the default cargos (TTD_STR_ABBREV_XXX), which may be re-used.&lt;br /&gt;
|-&lt;br /&gt;
| sprite&lt;br /&gt;
| sprite&lt;br /&gt;
| TTD sprite number for the icon of the cargo. Alternatively, set to NEW_CARGO_SPRITE and use a graphics block to define a custom sprite.&lt;br /&gt;
|-&lt;br /&gt;
| weight&lt;br /&gt;
| float 0..255&lt;br /&gt;
| Weight of one unit of the cargo (in tons)&lt;br /&gt;
|-&lt;br /&gt;
| penalty_lowerbound&lt;br /&gt;
| 0..255&lt;br /&gt;
| Delivery time until penalty is applied. The units depend on the vehicle used (see vehicle property &#039;cargo_age_period&#039;), by default 1 unit = 2.5 days.&lt;br /&gt;
|-&lt;br /&gt;
| single_penalty_length&lt;br /&gt;
| 0..255&lt;br /&gt;
| Length of the interval where a single penalty is applied&lt;br /&gt;
|-&lt;br /&gt;
| price_factor&lt;br /&gt;
| float&lt;br /&gt;
| Payment for delivering 10 units of cargo across a distance of 20 squares (in British Pounds), when delivering in less than &#039;penalty_lowerbound&#039; time (no time penalty).&lt;br /&gt;
|-&lt;br /&gt;
| station_list_colour&lt;br /&gt;
| 0..255&lt;br /&gt;
|&lt;br /&gt;
Colour for the station list window (index from the [[NML:Graphic files|default (DOS) palette]])&lt;br /&gt;
|-&lt;br /&gt;
| cargo_payment_list_colour&lt;br /&gt;
| 0..255&lt;br /&gt;
|&lt;br /&gt;
Colour for the cargo payment list window (index from the [[NML:Graphic files|default (DOS) palette]])&lt;br /&gt;
|-&lt;br /&gt;
| is_freight&lt;br /&gt;
| 0 or 1&lt;br /&gt;
| Freight status (for the freighttrains switch); 0=not freight, 1=is freight&lt;br /&gt;
|-&lt;br /&gt;
| cargo_classes&lt;br /&gt;
|&lt;br /&gt;
bitmask([[#Cargo classes|cargo classes]])&lt;br /&gt;
| Cargo classes&lt;br /&gt;
|-&lt;br /&gt;
| cargo_label&lt;br /&gt;
| 4 letters&lt;br /&gt;
| [[CargoTypes|Cargo label]], as used in the [[NML:Cargotable|cargo table]]&lt;br /&gt;
|-&lt;br /&gt;
| town_growth_effect&lt;br /&gt;
| TOWNGROWTH_XXX&lt;br /&gt;
|&lt;br /&gt;
Effect for town growth, see [[#Cargo effects on town growth|Cargo effects on town growth]]&lt;br /&gt;
|-&lt;br /&gt;
| town_growth_multiplier&lt;br /&gt;
| float 0..255&lt;br /&gt;
| {{ottd|no}} Multiplier for town growth. To be used in conjuction with town_growth_effect, when that is not TOWNGROWTH_NONE. For example, a value of 4 makes your cargo have the same effect on town growth as 4 units of food/goods/etc.&lt;br /&gt;
|-&lt;br /&gt;
| callback_flags&lt;br /&gt;
| bitmask(flags)&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;
| capacity_multiplier&lt;br /&gt;
| float 0 .. 255&lt;br /&gt;
| {{ottd|1.2|r22860}} This defines the capacity of vehicles carrying this cargo type, if the vehicle sets no specific capacity to this specific cargo type. Set this property to the amount of cargo a vehicle shall carry, which can carry 1 ton of coal or 1000 thousand litres of water (whatever comparison is more suitable for your cargotype). Depending on whether your cargo type is light or heavy you should set this property either comparing the weight or the volume. Default values are 4 for passengers, 2 for mail, goods and sweets and 1 for all other cargos.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cargo payment is computed from &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;price_factor&amp;lt;/code&amp;gt;, amount of cargo transported, distance, and a time delivery factor. Unit of the delivery time is 185 ticks, roughly 2.5 days. The factor is constant (with value 255) if delivery time is less than &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;penalty_lowerbound&amp;lt;/code&amp;gt;. It goes down with rate 1 between &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;penalty_lowerbound + single_penalty_length&amp;lt;/code&amp;gt;, and goes down with rate 2 if the delivery time is even longer. Time delivery factor is never less than 31.&lt;br /&gt;
&lt;br /&gt;
===Cargo classes===&lt;br /&gt;
&lt;br /&gt;
Available cargo classes are listed in the following table. Cargos may be in more than one class. Cargo classes are always used as a bitmask, use the built-in function &amp;lt;code&amp;gt;bitmask()&amp;lt;/code&amp;gt;. For example, &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CC_EXPRESS, CC_REFRIGERATED)&amp;lt;/code&amp;gt; is used for food.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! name&lt;br /&gt;
! type of cargo&lt;br /&gt;
|-&lt;br /&gt;
| CC_PASSENGERS&lt;br /&gt;
| passengers, also tourists (ECS)&lt;br /&gt;
|-&lt;br /&gt;
| CC_MAIL&lt;br /&gt;
| mail&lt;br /&gt;
|-&lt;br /&gt;
| CC_EXPRESS&lt;br /&gt;
| express goods, also tourists (ECS)&lt;br /&gt;
|-&lt;br /&gt;
| CC_ARMOURED&lt;br /&gt;
| valuables, diamonds, gold and alike&lt;br /&gt;
|-&lt;br /&gt;
| CC_BULK&lt;br /&gt;
| coal, ore, grain,...&lt;br /&gt;
|-&lt;br /&gt;
| CC_PIECE_GOODS&lt;br /&gt;
| containers, crates, livestock&lt;br /&gt;
|-&lt;br /&gt;
| CC_LIQUID&lt;br /&gt;
| oil, milk, water, ...&lt;br /&gt;
|-&lt;br /&gt;
| CC_REFRIGERATED&lt;br /&gt;
| food, milk, ...&lt;br /&gt;
|-&lt;br /&gt;
| CC_HAZARDOUS&lt;br /&gt;
| chemicals?, uranium, ...&lt;br /&gt;
|-&lt;br /&gt;
| CC_COVERED&lt;br /&gt;
| grain, cement, fruit, ...&lt;br /&gt;
|-&lt;br /&gt;
| CC_OVERSIZED&lt;br /&gt;
| vehicles, ...&lt;br /&gt;
|-&lt;br /&gt;
| CC_POWDERIZED&lt;br /&gt;
| cement, ...&lt;br /&gt;
|-&lt;br /&gt;
| CC_NON_POURABLE&amp;lt;br&amp;gt;CC_NEO_BULK&lt;br /&gt;
| sugar cane, wool or straw bales, ...&lt;br /&gt;
|-&lt;br /&gt;
| CC_SPECIAL&lt;br /&gt;
| Special cargo, used for refit tricks. (e.g. regearing in NARS)&lt;br /&gt;
|-&lt;br /&gt;
| NO_CARGO_CLASS&lt;br /&gt;
| Special value that you can used to instead of 0.&lt;br /&gt;
|-&lt;br /&gt;
| ALL_NORMAL_CARGO_CLASSES&lt;br /&gt;
| Bitmask of all cargo classes except CC_SPECIAL. This is the same as &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(CC_PASSENGERS, CC_MAIL, ..., CC_OVERSIZED)&amp;lt;/code&amp;gt;. Note: This is already a bitmask, don&#039;t use the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(..)&amp;lt;/code&amp;gt; function with this.&lt;br /&gt;
|-&lt;br /&gt;
| ALL_CARGO_CLASSES&lt;br /&gt;
| Bitmask of all cargo classes. Same as &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;ALL_NORMAL_CARGO_CLASSES | bitmask(CC_SPECIAL)&amp;lt;/code&amp;gt; Note: This is already a bitmask, don&#039;t use the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;bitmask(..)&amp;lt;/code&amp;gt; function with this.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Cargo effects on town growth===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! value&lt;br /&gt;
! effect&lt;br /&gt;
|-&lt;br /&gt;
| TOWNGROWTH_PASSENGERS&lt;br /&gt;
| Affect towns as passengers do&lt;br /&gt;
|-&lt;br /&gt;
| TOWNGROWTH_MAIL&lt;br /&gt;
| Affect towns as mail does&lt;br /&gt;
|-&lt;br /&gt;
| TOWNGROWTH_GOODS&lt;br /&gt;
| Affect towns as goods/candy does&lt;br /&gt;
|-&lt;br /&gt;
| TOWNGROWTH_WATER&lt;br /&gt;
| Affect towns as water does (second required cargo for towngrowth in the desert)&lt;br /&gt;
|-&lt;br /&gt;
| TOWNGROWTH_FOOD&lt;br /&gt;
| Affect towns as food/fizzy drinks do (first required cargo for towngrowth in desert/above snowline)&lt;br /&gt;
|-&lt;br /&gt;
| TOWNGROWTH_NONE&lt;br /&gt;
| Don&#039;t affect town growth (default)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If no cargos in the game are defined as TOWNGROWTH_FOOD, towns above the snowline will not require food to grow. If no cargos in the game are defined as TOWNGROWTH_FOOD or TOWNGROWTH_WATER, towns in desert will not require food or water to grow. This can be used positively for gameplay purposes, and is otherwise worth being aware of as an unintended side effect when designing cargos.&lt;br /&gt;
&lt;br /&gt;
There are some additional effects of these flags on subsidies and town cargo transport statistics.  See the nfo docs for details: https://newgrf-specs.tt-wiki.net/wiki/Action0/Cargos#Substitute_type_and_multiplier_for_town_growth_.2818.2C_19.29&lt;br /&gt;
&lt;br /&gt;
==Cargo variables==&lt;br /&gt;
&lt;br /&gt;
Cargos have no variables (yet).&lt;br /&gt;
&lt;br /&gt;
==Cargo 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 set (with 1 sprite)&lt;br /&gt;
| Graphics for the cargo icon (only if property &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;sprite&amp;lt;/code&amp;gt; is set to NEW_CARGO_SPRITE)&lt;br /&gt;
|-&lt;br /&gt;
| station_rating&lt;br /&gt;
| -16384 .. 16383&lt;br /&gt;
| See detailed explanation below&lt;br /&gt;
|-&lt;br /&gt;
| profit&lt;br /&gt;
| -12748 .. 12748&lt;br /&gt;
| Called whenever cargo is delivered.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;getbits(extra_callback_info2, 0, 16):&amp;lt;/code&amp;gt; The manhattan distance the cargo was transported.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;getbits(extra_callback_info2, 16, 8):&amp;lt;/code&amp;gt; The amount of cargo delivered.&lt;br /&gt;
* &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;getbits(extra_callback_info2, 24, 8):&amp;lt;/code&amp;gt; The time spent en-route (1 unit = 2.5 days).&lt;br /&gt;
The returned value is multiplied by the amount and the &amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;price_factor&amp;lt;/code&amp;gt; to determine the income the player receives. Returning negative values is possible, it makes players pay for the delivery.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Station rating callback===&lt;br /&gt;
&lt;br /&gt;
The station rating callback is quite complicated and deserves some detailed explanation. The default station rating calculation works as follows:&lt;br /&gt;
&lt;br /&gt;
Internally, station rating is byte with values 0 .. 255, representing respectively 0% and 100%. Every 2.5 days, the transportation &#039;performance&#039; is calculated using some factors outlined below. The station rating is then set to this performance value, with the caveat that the rating change cannot exceed 2 points. Therefore, rating changes are always slow, this callback cannot change this. The initial rating is 175 points (69%). The following factors are parts of the performance, their effects are summed.&lt;br /&gt;
&lt;br /&gt;
====Time since the cargo was last picked up====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Time units (days)&lt;br /&gt;
! Score (%, rounded)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;gt;21 (&amp;amp;gt;52.5 days)&lt;br /&gt;
| 0 (0%)&lt;br /&gt;
|-&lt;br /&gt;
| 13 .. 21 (32.5 days .. 52.5 days)&lt;br /&gt;
| 25 (10%)&lt;br /&gt;
|-&lt;br /&gt;
| 7 .. 12 (17.5 days .. 32.5 days)&lt;br /&gt;
| 50 (20%)&lt;br /&gt;
|-&lt;br /&gt;
| 4 .. 6 (10 days .. 17.5 days)&lt;br /&gt;
| 95 (37%)&lt;br /&gt;
|-&lt;br /&gt;
| 0..3 (0 days..10 days)&lt;br /&gt;
| 130 (51%)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The time unit used equals 185 engine ticks, or 2.5 TTD days. For ships, the time units are divided by 4 before calculating this component, so ships have four times more time before the ratings start dropping.&lt;br /&gt;
&lt;br /&gt;
====Amount of cargo waiting====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Amount of cargo&lt;br /&gt;
! Score (%, rounded)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;gt;1500&lt;br /&gt;
| -90 (-35%)&lt;br /&gt;
|-&lt;br /&gt;
| 1001..1500&lt;br /&gt;
| -35 (-14%)&lt;br /&gt;
|-&lt;br /&gt;
| 601..1000&lt;br /&gt;
| 0 (0%)&lt;br /&gt;
|-&lt;br /&gt;
| 301..600&lt;br /&gt;
| 10 (4%)&lt;br /&gt;
|-&lt;br /&gt;
| 101..300&lt;br /&gt;
| 30 (12%)&lt;br /&gt;
|-&lt;br /&gt;
| 0..100&lt;br /&gt;
| 40 (16%)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Max. speed of the last vehicle picking up the cargo====&lt;br /&gt;
&lt;br /&gt;
This calculation is somewhat complicated. The maximum speed of the vehicle is expressed in &amp;quot;speed units&amp;quot;. For trains and road vehicles, the speed unit is 1 km/h; for ships, it&#039;s 0.5 km/h; for aircraft, it&#039;s 8 mph. If the max. speed is above 255 speed units, 255 is used instead. If the vehicle is slower than 85 units, no points are awarded; otherwise, you get (speed_units-85)/4 points. Therefore, the maximum you can get is 42 points, or 16%.&lt;br /&gt;
&lt;br /&gt;
====Age of the last carrier picking up the cargo====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! Age of vehicle (years)&lt;br /&gt;
! Score (%, rounded)&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 10 (4%)&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 20 (8%)&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 33 (13%)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In TTDPatch this changes when the &#039;newagerating&#039; switch is enabled&lt;br /&gt;
&lt;br /&gt;
====Bonus for AI companies (TTDPatch only)====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;t&amp;quot;&lt;br /&gt;
! AI intelligence setting&lt;br /&gt;
! Score (%, rounded)&lt;br /&gt;
|-&lt;br /&gt;
| Low&lt;br /&gt;
| 0 (0%)&lt;br /&gt;
|-&lt;br /&gt;
| Medium&lt;br /&gt;
| 31 (12%)&lt;br /&gt;
|-&lt;br /&gt;
| High&lt;br /&gt;
| 63 (25%)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Bonus for statue in nearest town====&lt;br /&gt;
&lt;br /&gt;
If your company has erected a statue in the nearest town, you get 26 points (10%) bonus to all cargo ratings.&lt;br /&gt;
&lt;br /&gt;
====Callback parameters====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;getbits(extra_callback_info1, 0, 8)&amp;lt;/code&amp;gt;:&lt;br /&gt;
{| |-&lt;br /&gt;
!value!!meaning&lt;br /&gt;
|-&lt;br /&gt;
|0x10||the last vehicle entering the station was a train&lt;br /&gt;
|-&lt;br /&gt;
|0x11||the last vehicle entering the station was a road vehicle&lt;br /&gt;
|-&lt;br /&gt;
|0x12||the last vehicle entering the station was a ship&lt;br /&gt;
|-&lt;br /&gt;
|0x13||the last vehicle entering the station was an aircraft&lt;br /&gt;
|-&lt;br /&gt;
|0||no vehicle entered the station yet, or (TTDPatch) the last one entering was sold&lt;br /&gt;
|}&lt;br /&gt;
Please note that there&#039;s only one &amp;quot;last vehicle type&amp;quot; field per station, so the vehicle this refers to may not have picked up any of your cargo.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;getbits(extra_callback_info2, 0, 8)&amp;lt;/code&amp;gt;: The time since the cargo was last picked up, in the time units described above (1 unit = 2.5 days independent of vehicle type)&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;getbits(extra_callback_info2, 8, 16)&amp;lt;/code&amp;gt;: The amount of cargo waiting.&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;code style=&amp;quot;color:darkgreen&amp;quot;&amp;gt;getbits(extra_callback_info2, 24, 8)&amp;lt;/code&amp;gt;: The speed of the last vehicle picking the cargo up, in the speed units described above (if no vehicle entered the station yet, the value is 0xFF).&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Effect of callback====&lt;br /&gt;
&lt;br /&gt;
The return value of the callback replaces the first three components (time since pickup, amount of cargo, max speed) of the calculation. The bonus for statues, TTDPatch AIs and new vehicles is always in effect, you cannot (yet) change this.&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Cargos&amp;diff=4156</id>
		<title>Action0/Cargos</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=Action0/Cargos&amp;diff=4156"/>
		<updated>2021-11-16T15:56:54Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Clarify that property 19 only has an effect in TTDPatch, not in OpenTTD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[ttwiki:NewCargos|NewCargos]] switch of TTDPatch allows modifying the existing 12 cargos per climate, and allows adding 20 new cargos per climate as well. These cargo slots are numbered from 0 to 31, where slots 0-11 are used by default TTD cargos and slots 12-31 contain uninitialized garbage by default (so you can&#039;t trust them having meaningful information, you must set all of their properties).&lt;br /&gt;
&lt;br /&gt;
{{ottdp|1.9|no|ottdrev=11ab3c4e}} OpenTTD 1.9 increases the number of cargos to 64.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Number!![[GRFActionsDetailed|Size]]!!Version!!Description&lt;br /&gt;
|-&lt;br /&gt;
|08||B||{{ottdp|0.6|2.5}}||Bit number for bitmasks&lt;br /&gt;
|-&lt;br /&gt;
|09||W||{{ottdp|0.6|2.5}}||TextID for the cargo type name&lt;br /&gt;
|-&lt;br /&gt;
|0A||W||{{ottdp|0.6|2.5}}||TextID for the name of one unit from the cargo type&lt;br /&gt;
|-&lt;br /&gt;
|0B||W||{{ottdp|0.6|2.5}}||TextID to be displayed for 1 unit of cargo&lt;br /&gt;
|-&lt;br /&gt;
|0C||W||{{ottdp|0.6|2.5}}||TextID to be displayed for multiple units of cargo&lt;br /&gt;
|-&lt;br /&gt;
|0D||W||{{ottdp|0.6|2.5}}||TextID for cargo type abbreviation&lt;br /&gt;
|-&lt;br /&gt;
|0E||W||{{ottdp|0.6|2.5}}||Sprite number for the icon of the cargo&lt;br /&gt;
|-&lt;br /&gt;
|0F||B||{{ottdp|0.6|2.5}}||Weight of one unit of the cargo&lt;br /&gt;
|-&lt;br /&gt;
|10,11||B||{{ottdp|0.6|2.5}}||Penalty times&lt;br /&gt;
|-&lt;br /&gt;
|12||D||{{ottdp|0.6|2.5}}||Base price&lt;br /&gt;
|-&lt;br /&gt;
|13||B||{{ottdp|0.6|2.5}}||Color for the station list window&lt;br /&gt;
|-&lt;br /&gt;
|14||B||{{ottdp|0.6|2.5}}||Color for the cargo payment list window&lt;br /&gt;
|-&lt;br /&gt;
|15||B||{{ottdp|0.6|2.5}}||Freight status (for freight-weight-multiplier setting); 0=not freight, 1=is freight&lt;br /&gt;
|-&lt;br /&gt;
|16||W||{{ottdp|0.6|2.5}}||Cargo classes&lt;br /&gt;
|-&lt;br /&gt;
|17||D||{{ottdp|0.6|2.5}}||Cargo label&lt;br /&gt;
|-&lt;br /&gt;
|18||B||{{ottdp|0.6|2.5|ttdprev=alpha 72}}||Substitute type for town growth&lt;br /&gt;
|-&lt;br /&gt;
|19||W||{{ottdp|no|2.5|ttdprev=alpha 72}}||Multiplier for town growth&lt;br /&gt;
|-&lt;br /&gt;
|1A||B||{{ottdp|0.6|2.5|ttdprev=alpha 72}}||Callback flags&lt;br /&gt;
|-&lt;br /&gt;
|1B||W||{{ottdp|1.1|no|ottdrev=r21224}}||TextID for displaying the units of a cargo&lt;br /&gt;
|-&lt;br /&gt;
|1C||W||{{ottdp|1.1|no|ottdrev=r21224}}||TextID for displaying the amount of cargo&lt;br /&gt;
|-&lt;br /&gt;
|1D||W||{{ottdp|1.2|no|ottdrev=r23860}}||Capacity mulitplier&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Descriptions ==&lt;br /&gt;
&lt;br /&gt;
=== Bit number for bitmasks (08) ===&lt;br /&gt;
&lt;br /&gt;
This value must be used in [[Action3]] and in cargo bit mask properties such as refit masks. Values 1C-1F should be safe to use (if they aren&#039;t already taken, of course) if you intend to maintain compatibility with GRFs unaware of the newcargos switch. Further assuming that no active GRFs support the toyland climate, you can use values 11-1A as well.&lt;br /&gt;
&lt;br /&gt;
Additionally, you can use the value FFh to disable the given cargo slot. This way, it won&#039;t appear in cargo type lists, but it won&#039;t be removed from things already on the map. If you disable a cargo, you&#039;ll probably want to zero out the cargo label (property 17) as well.&lt;br /&gt;
&lt;br /&gt;
This property only affects GRFs which do not have a [[Action0/Global Settings#Cargo_translation_table_.2809.29 | cargo translation table]]. GRFs with such a table generally use the index of the cargo in the table instead of the value of this property to access a cargo. As such this property is more or less a default value for GRFs without cargo translation table. If you are unsure what value to assign to this property, set it to the same value as the cargo slot ID.&lt;br /&gt;
&lt;br /&gt;
=== TextID for the cargo type name (09) ===&lt;br /&gt;
&lt;br /&gt;
This textID should refer to the name of the cargo, capitalized, to match the TTD style (e.g. &amp;quot;Passengers&amp;quot;, &amp;quot;Coal&amp;quot;, &amp;quot;Gold Ore&amp;quot;, &amp;quot;Milk&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
You can reuse existing [[TextIDs]] or create custom strings using [[Action4]] with an offset in the DCxx range. Note that you need to set language-id bit 7 as well in the Action4 for a custom string. (Also applies to properties 0A to 0D)&lt;br /&gt;
&lt;br /&gt;
=== TextID for one unit of the type (0A) ===&lt;br /&gt;
&lt;br /&gt;
This textID should refer to the cargo type name in the singular. Currently, this ID is used only in subsidy messages (&amp;quot;First Passenger service...&amp;quot; instead of &amp;quot;First Passengers service...&amp;quot;, for example)&lt;br /&gt;
&lt;br /&gt;
=== TextID for 1 unit of cargo (0B) ===&lt;br /&gt;
&lt;br /&gt;
This textID will be used to display the amount of the cargo if there&#039;s exactly 1 unit waiting. Although there&#039;s only one unit waiting, you&#039;ll still have to use either the special character 7C (print signed word) or 87 (print amount in litres and add suffix &amp;quot; litres&amp;quot;) so TTD removes the amount from its internal reference stack. For example, if you have a new cargo named &amp;quot;gold ore&amp;quot;, this should be &amp;quot;\7C ton of gold ore&amp;quot;, which will expand to &amp;quot;1 ton of gold ore&amp;quot;. On the other hand, a liquid cargo named &amp;quot;milk&amp;quot; should be something like &amp;quot;\87 of milk&amp;quot;, which will expand to either &amp;quot;100 litres of milk&amp;quot; or &amp;quot;1,000 litres of milk&amp;quot; (The multiplier for liquid cargos depends on miscmods.dontfixlitres. If it&#039;s on, the multiplier is 100, otherwise it&#039;s 1000)&lt;br /&gt;
&lt;br /&gt;
=== TextID for multiple units of cargo (0C) ===&lt;br /&gt;
&lt;br /&gt;
This textID will be used to display the amount of cargo if the amount waiting isn&#039;t exactly 1. You&#039;ll need the same special characters as above, but now they will be expanded according to the actual cargo waiting. Sticking to the example above, you&#039;ll need &amp;quot;\7C tons of gold ore&amp;quot; and &amp;quot;\87 of milk&amp;quot;, which can expand to &amp;quot;42 tons of gold ore&amp;quot; and &amp;quot;42,000 litres of milk&amp;quot;, accordingly. You will note that liquid cargos can have the same textID for both property 0B and 0C since they always use the plural form.&lt;br /&gt;
&lt;br /&gt;
=== TextID for cargo type abbreviation (0D) ===&lt;br /&gt;
&lt;br /&gt;
This textID will be used in the station list window to represent the cargo waiting. It should be a two-letter abbreviation prefixed by the special character 0E to switch to the microscopic font. The microscopic font has every letter capitalized, so capitalization isn&#039;t important here. Continuing the above example, gold ore could have this as &amp;quot;GO&amp;quot; and milk as &amp;quot;MK&amp;quot; (&amp;quot;ML&amp;quot; is already taken by mail).&lt;br /&gt;
&lt;br /&gt;
=== Sprite number for icon (0E) ===&lt;br /&gt;
&lt;br /&gt;
This is a sprite number of an old TTD sprite to be displayed in the station window for this cargo, or FFFFh if the icon should be found by following the action 3 associated with this cargo. The icon must not be bigger than 10x10 pixels. One icon will be shown for every 10 units of the cargo waiting, up to 23 icons, which is the maximum.&lt;br /&gt;
&lt;br /&gt;
=== Weight of one unit of the cargo (0F) ===&lt;br /&gt;
&lt;br /&gt;
This property defines the weight of 1 unit from the cargo, which will be used to calculate the weight of the vehicles when loaded. The unit is 1/16 ton (which is 62.5 kg). With the examples above, gold ore should have this as 16 (since 1 ton of gold ore should weigh exactly 1 ton), while milk should have this slightly above 16 (milk is denser than water).&lt;br /&gt;
&lt;br /&gt;
=== Penalty times and price factor (10,11,12) ===&lt;br /&gt;
&lt;br /&gt;
These three values define how much is paid for the delivery of the cargo type. The price factor is subject to inflation, but GRFs needn&#039;t care about this, the programme will adjust the price for them.&lt;br /&gt;
&lt;br /&gt;
The income generated from cargo delivery is calculated as:&lt;br /&gt;
&lt;br /&gt;
income=((((distance/2) * timefactor * amount_moved) &amp;gt;&amp;gt; 7) * cargopricefactor) &amp;gt;&amp;gt; 13&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
; a &amp;gt;&amp;gt; b : means a is arithmetically shifted right by b bits&lt;br /&gt;
; distance : is the Manhattan distance between the two station signs&lt;br /&gt;
; amount_moved : is the number of cargo units moved&lt;br /&gt;
; cargopricefactor : is the value you set in property 12. Inflation will be applied automatically on it.&lt;br /&gt;
; timefactor : is a multiplier in the range 0..255, calculated in the following way: (T1 is the value of property 10, T2 is the value of property 11, t is the time the delivery took, the unit is 185 game ticks (roughly 2.5 game days) )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    if t&amp;lt;=T1 then timefactor=255&lt;br /&gt;
    else if t&amp;lt;=(T1+T2) then timefactor=255-(t-T1)&lt;br /&gt;
    else timefactor=255-(t-T1)-(t-T1-T2)&lt;br /&gt;
    if the above rules result in a timefactor less than 31, 31 is used instead. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Color for the station list window (13) ===&lt;br /&gt;
&lt;br /&gt;
This color index will be used to draw the rectangle representing the amount waiting from the current cargo type in the station list window. The index should be given for the DOS palette. OpenTTD and TTDPatch will automatically translate the index for the Windows palette, if they use the windows base graphics.&lt;br /&gt;
&lt;br /&gt;
=== Color for the cargo payment list window (14) ===&lt;br /&gt;
&lt;br /&gt;
The graph of the current cargo will be drawn using this color in the cargo payment rates graph. The index should be given for the DOS palette, the Windows version of TTDPatch will automatically translate the index for the Windows palette.&lt;br /&gt;
&lt;br /&gt;
=== CargoClasses (16) ===&lt;br /&gt;
&lt;br /&gt;
See [[Action0Trains#Cargo classes .2828.2C_29.29|train prop. 28/29]] for a description of the utility of this property.&lt;br /&gt;
&lt;br /&gt;
This is a bit mask of all cargo classes to which this cargo could belong.&lt;br /&gt;
The following classes are available:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|-&lt;br /&gt;
!bit&lt;br /&gt;
!value&lt;br /&gt;
!class name&lt;br /&gt;
!wagon type&amp;lt;ref name=vehicle&amp;gt;Suggestion for vehicle types which transport this cargo&amp;lt;/ref&amp;gt;&lt;br /&gt;
!usage&amp;lt;ref name=refitusage&amp;gt;Suggestion how to best make use of this class in the refit masks of vehicles&amp;lt;br&amp;gt;OR to be included in the &#039;allowed classes&#039; (train prop. 28), AND NOT in the &#039;disallowed classes&#039; (train prop. 29)&amp;lt;/ref&amp;gt;&lt;br /&gt;
!vehicle tips&amp;lt;ref name=vehicleuse&amp;gt;Suggestions this class should be used in the property which excludes a class of cargos from a vehicle. One specific type of cargo could appear both as liquid or as piece goods (e.g. milk), which depends on the actual representation. Thus excluding the other would disallow refit to that cargo.&amp;lt;/ref&amp;gt;&lt;br /&gt;
!industry tips&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|Passengers&lt;br /&gt;
|passenger wagon&lt;br /&gt;
|OR&lt;br /&gt;
|never exclude&lt;br /&gt;
|do not combine with other flags&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|Mail&lt;br /&gt;
|closed or mail wagon&lt;br /&gt;
|OR&lt;br /&gt;
|never exclude&lt;br /&gt;
|do not combine with other flags&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|4&lt;br /&gt;
|Express&lt;br /&gt;
|closed or mail wagon&lt;br /&gt;
|OR&lt;br /&gt;
|never exclude, suitable for airplane or maglev&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|8&lt;br /&gt;
|Armored&lt;br /&gt;
|armored or mail wagon&lt;br /&gt;
|OR&lt;br /&gt;
|never exclude&lt;br /&gt;
|do not combine with other flags&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|10&lt;br /&gt;
|Bulk (Uncountable)&lt;br /&gt;
|open or hopper wagon&lt;br /&gt;
|OR&lt;br /&gt;
|never exclude&lt;br /&gt;
|may be combined with Piece Goods or Liquid to simulate multiple modes of transport&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|20&lt;br /&gt;
|Piece Goods (Countable)&lt;br /&gt;
|closed or open wagon&lt;br /&gt;
|OR&lt;br /&gt;
|never exclude&lt;br /&gt;
|may be combined with Bulk or Liquid to simulate multiple modes of transport&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|40&lt;br /&gt;
|Liquid&lt;br /&gt;
|tank wagon&lt;br /&gt;
|OR&lt;br /&gt;
|never exclude&lt;br /&gt;
|may be combined with Piece Goods or Bulk to simulate multiple modes of transport&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|80&lt;br /&gt;
|Refrigerated&lt;br /&gt;
|refrigerated wagon&lt;br /&gt;
|OR/AND NOT&lt;br /&gt;
|only exclude, when Piece Goods included&lt;br /&gt;
|also set Piece Goods&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|100&lt;br /&gt;
|Hazardous&lt;br /&gt;
|unknown&lt;br /&gt;
|OR/AND NOT&lt;br /&gt;
|only exclude, when special wagons are provided.&lt;br /&gt;
|combine with Piece Goods, Liquid, Bulk or Express&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|200&lt;br /&gt;
|Covered (weather protected)&lt;br /&gt;
|closed wagon, any other wagon with tarpaulin or weather cover&lt;br /&gt;
|OR/AND NOT&lt;br /&gt;
|do not exclude for Liquid&lt;br /&gt;
|combine with Piece Goods or Bulk&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|400&lt;br /&gt;
|Oversized&lt;br /&gt;
|stake/flatbed wagon&lt;br /&gt;
|OR/AND NOT&lt;br /&gt;
|only exclude, when Piece Goods included&lt;br /&gt;
|combine with Piece Goods&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|800&lt;br /&gt;
|Powderized (moist protected)&lt;br /&gt;
|powder/silo wagon&lt;br /&gt;
|OR/AND NOT&lt;br /&gt;
|only exclude, when Bulk included&lt;br /&gt;
|combine with Bulk&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|1000&lt;br /&gt;
|Not Pourable&lt;br /&gt;
|open wagon, but not hopper wagon&lt;br /&gt;
|AND NOT&lt;br /&gt;
|only exclude, when Bulk included&lt;br /&gt;
|combine with Bulk&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|2000&lt;br /&gt;
|reserved. No canonical specification&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|4000&lt;br /&gt;
|reserved. No canonical specification&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|8000&lt;br /&gt;
|special&lt;br /&gt;
|and not&lt;br /&gt;
|none&lt;br /&gt;
|special use&lt;br /&gt;
|do not set&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only cargos which are in class 0 (passengers) will appear in bus stations. Only cargos which are &#039;&#039;not&#039;&#039; in class 0 will appear in truck stations.&lt;br /&gt;
&lt;br /&gt;
Disclaimer: there is no guarantee that classes won&#039;t vary over time or between sets.  The classes of a cargo may change between different versions of a specific industry/cargo newgrf, or different classes may be set for the same cargo label by different industry/cargo newgrfs.   Feel free to use classes in your set for conveniently refitting to cargos, but if you - the vehicle author - care about specific cargos being transported in specific vehicles, use label based refits (changing labels without a very good reason is considered to be bad practice).&lt;br /&gt;
&lt;br /&gt;
=== Cargo label (17) ===&lt;br /&gt;
&lt;br /&gt;
Cargo labels are globally [[CargoTypes#Cargo Labels|unique identifiers]] for a cargo type. They are used to allow vehicle grfs to easily support many cargo types, whether they are active or not and no matter what slot or bit they are using.&lt;br /&gt;
&lt;br /&gt;
Read about the [[Action0/Global Settings#Cargo translation table 09|cargo translation table]] for further info.&lt;br /&gt;
&lt;br /&gt;
=== Substitute type and multiplier for town growth (18, 19) ===&lt;br /&gt;
&lt;br /&gt;
These properties allow you to modify how a cargo type affects town growth. Property 18 can contain one of the following values:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Value!!Meaning!!{{ottdp|0.7|no}} Details&amp;lt;ref&amp;gt;This is the interpretation of OpenTTD. For TTDPatch see [http://www.tt-wiki.net/wiki/NewTownGrowthSwitches NewTownGrowthMechanism], which is quite different/unrelated.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|00||Affect towns as passengers do||Cargo produced by houses is added to the statistics in the town GUI.&lt;br /&gt;
|-&lt;br /&gt;
|02||Affect towns as mail does||Cargo produced by houses is added to the statistics in the town GUI.&lt;br /&gt;
|-&lt;br /&gt;
|05||Affect towns as goods/candy does||See note about subsidies below.&lt;br /&gt;
|-&lt;br /&gt;
|09||Affect towns as water does||Second required cargo for towngrowth in the desert&lt;br /&gt;
|-&lt;br /&gt;
|0B||Affect towns as food/fizzy drinks do||First required cargo for towngrowth in desert/above snowline. Alse see note about subsidies below.&lt;br /&gt;
|-&lt;br /&gt;
|FF||Don&#039;t affect town growth (default)|| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ottdp|no|2.5|ttdprev=alpha 72}} The incoming cargo amount is multiplied by property 19, then divided by 256 before it is added to the town statistics. This allows you to have smaller or bigger impact than original cargoes do. &lt;br /&gt;
&lt;br /&gt;
If no cargos in the game are defined as food (0B), towns above the snowline will not require food to grow. If no cargos in the game are defined as food (0B) or water (09), towns in desert will not require food or water to grow.  This can be used positively for gameplay purposes, and is otherwise worth being aware of as an unintended side effect when designing cargos.&lt;br /&gt;
&lt;br /&gt;
Please note that cargoes accepted by industries affect the closest town as well; for example, if you have an industry that accepts passengers, every passenger brought to the industry affects the town just like if they were transported to the town directly. Usually, it&#039;s not a good idea to have industries that process such cargoes; they should be accepted by towns only.&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.6-1.1|no}} In OpenTTD up to 1.1 (not 1.2) property 18 also affects the creation of subsidies. Usually subsidies apply to cargo transportation between two industries. For cargos with substitution-type 05 or 0B the destination will be a town instead. Independent of property 18 subsidies from town to town are only created for cargo slot 0 (Passengers).&lt;br /&gt;
&lt;br /&gt;
=== Callback flags (1A) ===&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Var. 0C!!Callback&lt;br /&gt;
|-&lt;br /&gt;
|0||1||39||Custom profit calculation&lt;br /&gt;
|-&lt;br /&gt;
|1||2||145||Custom station rating calculation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== TextID for displaying the units of a cargo (1B) ===&lt;br /&gt;
&lt;br /&gt;
This textID is used by OpenTTD to show the &amp;quot;short cargo&amp;quot; form for cargo units, e.g. &amp;quot;10 litres&amp;quot; or &amp;quot;10 tonnes&amp;quot;. This textID must be set after property 0B. The text this textID refers to should properly handle plurals, e.g. &amp;quot;\7B item\9A\15\80\9A\10\9A\11s\9A\12&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The default for this textID depends on the default for property 0B; if the default 0B string has &amp;quot;litre&amp;quot;, then the default for this textID will be the unit for litres. OpenTTD maps the following textIDs so you don&#039;t need to provide translations:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!textID!!String&lt;br /&gt;
|-&lt;br /&gt;
|004f||&amp;lt;num&amp;gt; passenger(s)&lt;br /&gt;
|-&lt;br /&gt;
|0050||&amp;lt;num&amp;gt; tonne(s)&lt;br /&gt;
|-&lt;br /&gt;
|0051||&amp;lt;num&amp;gt; bag(s)&lt;br /&gt;
|-&lt;br /&gt;
|0052||&amp;lt;num&amp;gt; litre(s)&lt;br /&gt;
|-&lt;br /&gt;
|0053||&amp;lt;num&amp;gt; item(s)&lt;br /&gt;
|-&lt;br /&gt;
|0054||&amp;lt;num&amp;gt; crate(s)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;tonne&amp;quot; and &amp;quot;litre&amp;quot; strings (textID 0050 and 0052) are automatically updated based on the user settings of unit display, e.g. they &amp;quot;tonne&amp;quot; might become &amp;quot;kg&amp;quot;. The &amp;quot;(s)&amp;quot; is for display purposes; in reality that is a choice list.&lt;br /&gt;
&lt;br /&gt;
=== TextID for displaying the amount of cargo (1C) ===&lt;br /&gt;
&lt;br /&gt;
This textID is used by OpenTTD to show the &amp;quot;long cargo&amp;quot; form for cargo units, e.g. &amp;quot;10 litres of water&amp;quot; or &amp;quot;10 tonnes of coal&amp;quot;. This textID must be set after property 0c. The text this textID refers to should properly handle plurals, e.g. &amp;quot;\7B item\9A\15\80\9A\10\9A\11s\9A\12 of livestock&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The default for this textID depends on the default for property 0C, but with support for plurals. For &amp;quot;X litre(s)&amp;quot; or &amp;quot;X tonne(s)&amp;quot; you should respectively use string codes 87 and 9A 0D.&lt;br /&gt;
&lt;br /&gt;
=== Capacity multiplier (1D) ===&lt;br /&gt;
&lt;br /&gt;
This defines the capacity (and indirectly loading speed) of vehicles carrying this cargo type, if the vehicle sets no specific capacity to this specific cargo type.&lt;br /&gt;
&lt;br /&gt;
Set this property to the amount of cargo a vehicle shall carry, which can carry 0x100 (256) tons of coal or 0x100 (256) thousand litres of water (whatever comparison is more suitable for your cargotype). Depending on whether your cargo type is light or heavy you should set this property either comparing the weight or the volume.&lt;br /&gt;
&lt;br /&gt;
The default value of this property is:&lt;br /&gt;
{| |-&lt;br /&gt;
! Cargo slot !! Default cargo in this slot !! Property 1D !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 00 || PASS || 0x400 || A vehicle carrying 1 ton of coal, can carry 4 passengers.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || MAIL || 0x200 || A vehicle carrying 1 ton of coal, can carry 2 bags of mail.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || GOOD, SWET || 0x200 || A vehicle carrying 1 ton of coal, can carry 2 crates of goods/sweets.&lt;br /&gt;
|-&lt;br /&gt;
| xx || (everything else) || 0x100 || All other slots default to 0x100, i.e. 1 unit of cargo equals 1 ton of coal.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Vehicles&amp;diff=4149</id>
		<title>VariationalAction2/Vehicles</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Vehicles&amp;diff=4149"/>
		<updated>2021-09-01T18:37:15Z</updated>

		<summary type="html">&lt;p&gt;Jgr: Position within articulated vehicle section was labelled with incorrect variable number 4B, instead of 4D&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;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Variable!![[GRFActionsDetailed|Size]]!!Version!!Description!!Available in purchase list&lt;br /&gt;
|-&lt;br /&gt;
|10||D||{{ottdp|1.2|no|ottdrev=r23080}}||Pick sprites for different GUI windows - See [[Action2/Vehicles]].||{{ottdp|1.2|no|ottdrev=r23080}}&lt;br /&gt;
|-&lt;br /&gt;
|40||D||{{ottdp|0.6|2.5}}||Position in consist and length of consist||no&lt;br /&gt;
|-&lt;br /&gt;
|41||D||{{ottdp|0.6|2.5}}||Position in and length of chain of consecutive vehicles with same ID||no&lt;br /&gt;
|-&lt;br /&gt;
|42||D||{{ottdp|0.6|2.5}}||Cargo types transported by consist||no&lt;br /&gt;
|-&lt;br /&gt;
|43||D||{{ottdp|0.6|2.5}}||Player info||{{ottdp|0.6|2.5|ottdrev=r4611|ttdprev=beta 2}}&lt;br /&gt;
|-&lt;br /&gt;
|44||D||{{ottdp|0.6|2.5|ttdprev=2.0.1 alpha 48}}||Aircraft info||no&lt;br /&gt;
|-&lt;br /&gt;
|45||D||{{ottdp|0.6|2.5|ttdprev=2.0.1 alpha 58}}||Curvature info||no&lt;br /&gt;
|-&lt;br /&gt;
|46||D||{{ottdp|0.6|2.5|ttdprev=2.0.1 alpha 59}}||Motion counter||no&lt;br /&gt;
|-&lt;br /&gt;
|47||D||{{ottdp|0.6|2.5}}||Vehicle cargo info||{{ottdp|0.7|no|ottdrev=r15542}} &amp;lt;ref name=&amp;quot;var47&amp;quot;&amp;gt;Variable 47 refers to the default cargo of the vehicle, when in purchase list. This differs from the cargo used in Action 3, which is 0xFF in purchase list. The &amp;quot;refit cycle&amp;quot; (F2) is currently always zero in the purchase list.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|48||D||{{ottdp|0.6|2.5}}||Vehicle type information||{{ottdp|0.6|2.5|ottdrev=r5338|ttdprev=beta 2}}&lt;br /&gt;
|-&lt;br /&gt;
|49||D||{{ottdp|0.7|2.6|ottdrev=r13376|ttdprev=r2216}}||Year of construction (long format, 0 based)||{{ottdp|0.7|no|ottdrev=r13376}} &amp;lt;ref name=&amp;quot;date&amp;quot;&amp;gt;This is the current date&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|4A||D||{{ottdp|1.1|no|ottdrev=r20165}}||Info about current railtype/roadtype/tramtype||no&lt;br /&gt;
|-&lt;br /&gt;
|4B||D||{{ottdp|1.2|no|ottdrev=r23068}}||Long date of last servicing||{{ottdp|1.2|no|ottdrev=r23068}} &amp;lt;ref name=&amp;quot;date&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|4C||D||{{ottdp|1.3|no|ottdrev=r24246}}||Current max speed including e.g track or timetable speed limits. Only valid for front vehicle. Note, units differ for each vehicle type&amp;lt;ref name=&amp;quot;speed&amp;quot;&amp;gt;See [[Action0Trains#Speed 09|train property 09]], [[Action0RoadVehicles|road vehicle property 08]] (not 15, even when using realistic acceleration), [[Action0Ships|ship property 0B]] and [[Action0Planes|aircraft property 0C]].&amp;lt;/ref&amp;gt;||no&lt;br /&gt;
|-&lt;br /&gt;
|4D||D||{{ottdp|1.4|no|ottdrev=r26157}}||Position within articulated vehicle||no&lt;br /&gt;
|-&lt;br /&gt;
|60||D||{{ottdp|0.6|2.5|ttdprev=2.0.1 alpha 57}}||Count Veh.ID occurence||no&lt;br /&gt;
|-&lt;br /&gt;
|61||-&amp;lt;ref&amp;gt;The size of the result matches the size of the queried variable.&amp;lt;/ref&amp;gt;||{{ottdp|1.2|no|ottdrev=r22997}}||Query variable of n-th vehicle in chain||no&lt;br /&gt;
|-&lt;br /&gt;
|62||D||{{ottdp|1.2|no|ottdrev=r22998}}||Curvature/position difference for n-th vehicle in chain||no&lt;br /&gt;
|-&lt;br /&gt;
|63||D||{{ottdp|1.11|no|ottdrev=g868d84bbf}}||Test track-type of tile against another track-type||no&lt;br /&gt;
|-&lt;br /&gt;
|97||B||{{ottdp|0.6|2.0}}||Tick counter, increased every engine tick||no&lt;br /&gt;
|-&lt;br /&gt;
|B2||W||||Vehicle status: bit0 = vehicle invisible (in tunnel/depot), bit1 = stopped, bit7 = crashed||no&lt;br /&gt;
|-&lt;br /&gt;
|B4||W||{{ottdp|0.6|2.0}}||Current speed. Note, units differ for each vehicle type&amp;lt;ref name=&amp;quot;speed&amp;quot; /&amp;gt;||no&lt;br /&gt;
|-&lt;br /&gt;
|B9||B||{{ottdp|0.6|2.0}}||Cargo type (type B from the list at [[CargoTypes]]; climate dependent)||no&lt;br /&gt;
|-&lt;br /&gt;
|C0||W||{{ottdp|0.6|2.0}}||Engine age in days&amp;lt;br/&amp;gt;{{ottdp|1.2|2.5|ottdrev=r22816|ttdprev=alpha 61}} Valid for wagons and articulated parts as well.||no&lt;br /&gt;
|-&lt;br /&gt;
|C4||B||{{ottdp|0.6|2.0}}||Year built (counted from 1920), note this is modified when Cht: Year is used||{{ottdp|0.6|no|ottdrev=r4611}} &amp;lt;ref name=&amp;quot;date&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|C6||W||{{ottdp|0.6|2.0}}||Vehicle type ID &amp;lt;ref&amp;gt;{{ottdp|0.7|no}} In OpenTTD 0.7 and newer this is the GRF-local ID of the vehicle. Earlier versions of OpenTTD and TTDPatch report the [[VehicleIDs|TTD ID]]. For trains this is the same; for other vehicle types they differ.&amp;lt;/ref&amp;gt; (useful for [[Callbacks#Can wagon be attached (1D)|Callback 1D]])||no&lt;br /&gt;
|-&lt;br /&gt;
|C8||B||{{ottdp|0.6|2.0}}||Sprite type; FD for trains forward, FE or FF when reversed||no&lt;br /&gt;
|-&lt;br /&gt;
|C9||B||{{ottdp|0.6|2.0}}||Day counter; increased daily||no&lt;br /&gt;
|-&lt;br /&gt;
|DA||W||{{ottdp|0.6|2.0}}||Next wagon index, FFFF if last wagon (use shift-num=08 and check for FF)||no&lt;br /&gt;
|-&lt;br /&gt;
|F2||B||{{ottdp|0.6|2.5}}||Refit cycle, how many times refitted to the same cargo type||{{ottdp|0.7|no|ottdrev=r15542}} &amp;lt;ref name=&amp;quot;var47&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|FE||W||{{ottdp|0.6|2.5}}||Modflags||no&lt;br /&gt;
|-&lt;br /&gt;
|FF||B||{{ottdp|0.6|2.5}}||Modflags||no&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For other 80+x variables confer the [http://marcin.ttdpatch.net/sv1codec/TTD-locations.html#_VehicleArray TTD vehicle structure].&lt;br /&gt;
&lt;br /&gt;
Variables 40, 41, 42 and 43 are cached. This means that while they are in principle computationally expensive, they can be used without impacting performance. Variables 45 and 60 are also computationally expensive but cannot be cached, and should therefore be used sparingly. If possible 80+x variables are to be preferred.&lt;br /&gt;
&lt;br /&gt;
Cached variables are updated when the game is loaded, when the consist enters or is rearranged in a depot, and when the train reverses.&lt;br /&gt;
&lt;br /&gt;
In the purchase list only a few variables are available. Especially the front vehicle (related object) cannot be accessed, nor other articulated parts.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
=== Position and length (40, 41) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format:&#039;&#039;&#039; 00nnbbff&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Variable!!Value&lt;br /&gt;
|-&lt;br /&gt;
|ff||position of vehicle within the consist counted from the engine (front), e.g. the engine would have ff=0, the 1st wagon or mail compartment of planes would have ff=1, the 2nd wagon or the rotor of helicopters would have ff=2, the 3rd wagon would have ff=3 etc&lt;br /&gt;
|-&lt;br /&gt;
|bb||same as ff, but counted from the end, i.e. the last wagon has bb=0, the next-to-last wagon has bb=1 etc.&lt;br /&gt;
|-&lt;br /&gt;
|nn||Total number of vehicles in the consist, including shadow and rotor for aircraft.&lt;br /&gt;
* In var 40 this is zero-based. That is, the value returned is one less than the actual number of vehicles. A train with engine and three wagons has nn=3.&lt;br /&gt;
* In var 41 this is one-based. That is, the value returned is the actual number of vehicles.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For variable 40, these numbers refer to the whole consist, but for variable 41, they only refer to the chain of consecutive vehicles with the same ID as the current wagon (including itself, but possibly excluding the engine):&lt;br /&gt;
&lt;br /&gt;
[[File:vehicle_var40_41.png]]&lt;br /&gt;
&lt;br /&gt;
Note however, that accessing the &amp;quot;related&amp;quot; object (i.e. the locomotive) doesn´t make much sense for vars 40/41, except for var40 when in a [[Callbacks#Can wagon be attached 1D|callback 1D]] chain.&lt;br /&gt;
&lt;br /&gt;
=== Consist cargo (42) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format:&#039;&#039;&#039; uuiicctt&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Variable!!Value&lt;br /&gt;
|-&lt;br /&gt;
|tt||a bit mask of all [[Action0Cargos#Cargo classes 16|cargo classes]] transported by the consist&lt;br /&gt;
|-&lt;br /&gt;
|cc||the most common [[CargoTypes|cargo type]] (from the column for type A)&lt;br /&gt;
|-&lt;br /&gt;
|ii||the most common refit cycle (var. F2) of cargo type cc&lt;br /&gt;
|-&lt;br /&gt;
|uu||the result of ORing the bits of prop. 25 from all vehicles in the train&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If used with VarAction2 type 81 (vehicle) it returns only cargo from this vehicle on, with type 82 (engine) that of the whole consist.&lt;br /&gt;
See also variable 47 for more details on the cargo carried by a vehicle.&lt;br /&gt;
&lt;br /&gt;
{{grfTill|7}} For GRF versions 7 and before &amp;quot;cc&amp;quot; is the untranslated bit number from [[Action0/Cargos#Bit_number_for_bitmasks_.2808.29|cargo property 8]].&lt;br /&gt;
&lt;br /&gt;
{{grfFrom|8}} With GRF version 8 the meaning of &amp;quot;cc&amp;quot; changes. If the grf file has installed a [[Action0/Global_Settings#Cargo_translation_table_.2809.29|cargo translation table]], the value in &amp;quot;cc&amp;quot; is the index of the cargo in that table; or FF if the cargo is not present in the table.&lt;br /&gt;
&lt;br /&gt;
=== Player info (43) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format:&#039;&#039;&#039; Ccttmmnn&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Variable!!Value&lt;br /&gt;
|-&lt;br /&gt;
|nn||the number of the current player from 0 to 7 (up to E (14) in OpenTTD since r14735)&lt;br /&gt;
|-&lt;br /&gt;
|mm||the multiplayer player number with the host player (or the single player) being 0 and the client player being 1&lt;br /&gt;
|-&lt;br /&gt;
|tt||the player type, see below for possible values&lt;br /&gt;
|-&lt;br /&gt;
|c||the primary player colour&lt;br /&gt;
|-&lt;br /&gt;
|C||{{ottdp|0.6|2.5|ttdprev=r1405}} the secondary player colour, equal to c if none (since r1405)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!tt value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||Player is human player (permanent company)&lt;br /&gt;
|-&lt;br /&gt;
|1||Player is AI player (not managed)&lt;br /&gt;
|-&lt;br /&gt;
|2||{{ottdp|no|2.5}} Player is a human managing an AI company&lt;br /&gt;
|-&lt;br /&gt;
|3||{{ottdp|no|2.5}} Player is human player&#039;s original company, now temporarily AI controlled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ottdp|0.6|2.5|ttdprev=r1497}} Since r1497, when the vehicle sprite is being displayed in an exclusive offer window or new vehicle news message, or in other circumstances when no player is associated with the vehicle, nn will be FF.&lt;br /&gt;
&lt;br /&gt;
=== Aircraft info (44) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format:&#039;&#039;&#039; xxxxhhtt&lt;br /&gt;
&lt;br /&gt;
hh is the height of the aircraft above ground, or more properly above the height of its shadow. Buildings, including the heliport, don&#039;t count as &amp;quot;ground&amp;quot;, i.e. to get the height above a heliport, you have to subtract the heliport height from hh.&lt;br /&gt;
&lt;br /&gt;
tt is the type of the current airport: 0=small, 1=large, 2=heliport, 3=oil rig. The current airport is the target airport for aircraft that have finished the ascent and are in flight.&lt;br /&gt;
&lt;br /&gt;
=== Curvature info (45) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format:&#039;&#039;&#039; xxxTxBxF&lt;br /&gt;
&lt;br /&gt;
This returns the amount of curvature between the adjacent wagon pairs. It is useful for train vehicles that normally tilt in curves. The curvature is the difference in direction between the surrounding vehicles:&lt;br /&gt;
&lt;br /&gt;
F = for the front pair (previous wagon to current wagon, 0 if vehicle is first)&lt;br /&gt;
&lt;br /&gt;
B = for the back pair (current wagon to next wagon, 0 if wagon is last)&lt;br /&gt;
&lt;br /&gt;
T = for the triplet (previous wagon to next wagon; is zero in an S-bend)&lt;br /&gt;
&lt;br /&gt;
Possible values:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Decimal!!Hex!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
| -4||C||180° curve left (T only)&lt;br /&gt;
|-&lt;br /&gt;
| -3||D||135° curve left (T only)&lt;br /&gt;
|-&lt;br /&gt;
| -2||E||90° curve left&lt;br /&gt;
|-&lt;br /&gt;
| -1||F||45° curve left&lt;br /&gt;
|-&lt;br /&gt;
|0||0||no curve&lt;br /&gt;
|-&lt;br /&gt;
|1||1||45° curve right&lt;br /&gt;
|-&lt;br /&gt;
|2||2||90° curve right&lt;br /&gt;
|-&lt;br /&gt;
|3||3||135° curve right (T only)&lt;br /&gt;
|-&lt;br /&gt;
|4||4||180° curve right (T only)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Motion counter (46) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format:&#039;&#039;&#039; 32-bit value&lt;br /&gt;
&lt;br /&gt;
This variable counts the amount of motion that a vehicle has done. &amp;amp;nbsp;It is only valid for the first vehicle in a consist (i.e. use VarAction2 type 82!). &amp;amp;nbsp;Its value is in units of 1/4096 of a tile. &amp;amp;nbsp;A vehicle actually moves visibly every time the motion counter increases by 256, and since a tile consists of 16 such subunits, 16*256=4096 motion units mean motion across one tile.&lt;br /&gt;
&lt;br /&gt;
The most useful way to access it is probably with &amp;amp;lt;shiftnum&amp;amp;gt;=08 and an appropriate &amp;amp;lt;andmask&amp;amp;gt;. &amp;amp;nbsp;For example, to achieve an animation with one frame per vehicle motion and 16 frames in total for motion across an entire tile, you would use &amp;amp;lt;shiftnum&amp;amp;gt;=08 and &amp;amp;lt;andmask&amp;amp;gt;=0F. &amp;amp;nbsp;For an animation with one frame every two vehicle motions and 4 frames total, use &amp;amp;lt;shiftnum&amp;amp;gt;=09 and &amp;amp;lt;andmask&amp;amp;gt;=03.&lt;br /&gt;
&lt;br /&gt;
If the vehicle is going very fast (&amp;amp;gt;160 mph for trains), it may move by several 1/16ths of a tile at once, and thus some frames may be skipped, but the animation will still remain in sync with the motion.&lt;br /&gt;
&lt;br /&gt;
Note that vehicle graphics are only updated every time the vehicle actually moves, so checking the lower byte is probably pointless, and only needed internally to achieve sufficient precision.&lt;br /&gt;
&lt;br /&gt;
=== Vehicle cargo info (47) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format:&#039;&#039;&#039; ccccwwtt&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Variable!!Value&lt;br /&gt;
|-&lt;br /&gt;
|tt||the [[CargoTypes|cargo type]] transported by the vehicle (from the column for type A); translated if a translation table has been installed&lt;br /&gt;
|-&lt;br /&gt;
|ww||cargo unit weight in 1/16 tons, same as [[Action0Cargos#Weight of one unit of the cargo 0F|cargo prop. 0F]]&lt;br /&gt;
|-&lt;br /&gt;
|cccc||the [[Action0Cargos#Cargo classes 16|cargo class]] value of the cargo transported by the vehicle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that if the grf has installed a [[Action0/Global_Settings#Cargo_translation_table_.2809.29|cargo translation table]], the value in &amp;quot;tt&amp;quot; is the slot number in that table, irrespective of which actual slot or bit the cargo is using in the game. If a table has been installed, but the current cargo is not listed there, &amp;quot;tt&amp;quot; will be set to FF.&lt;br /&gt;
&lt;br /&gt;
Unlike variable 42, this variable returns the info of the current vehicle only, not the consist.&lt;br /&gt;
&lt;br /&gt;
=== Vehicle type information (48) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format:&#039;&#039;&#039; xxxxxxff&lt;br /&gt;
&lt;br /&gt;
The bits of ff are:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||1||Vehicle type is available on the market&lt;br /&gt;
|-&lt;br /&gt;
|1||2||Vehicle type is in the testing phase&lt;br /&gt;
|-&lt;br /&gt;
|2||4||Exclusive testing offer for a human player active&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All other bits in ff are undefined and must be masked out.&lt;br /&gt;
&lt;br /&gt;
=== Information about current railtype/roadtype/tramtype (4A) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format:&#039;&#039;&#039; xxxxFFrr&lt;br /&gt;
&lt;br /&gt;
The lower byte (rr) contains the (translated) railtype/roadtype/tramtype the vehicle is currently driving on. &lt;br /&gt;
If the railtype/roadtype/tramtype has no entry in the railtype/roadtype/tramtype translation table of the GRF, this value will be 0xFF. &lt;br /&gt;
If no translation table is present, the raw value will be returned.&lt;br /&gt;
Note: only exact matches of rail-/road-/-tram-types are reported. If the translation table of the GRF does not contain the exact track-type 0xFF is returned, even if the translation table contains equivalent track-types (according to rail-/road-/tram-type property 1D). Use variable 63 to test for compatibility/poweredness/equivalency with track-types known to both the vehicle and the track-type NewGRF.&lt;br /&gt;
&lt;br /&gt;
The variable only reports about the tracks the vehicle is using: on a level crossing with rail, road and tram tracks, the vehicle (train, road vehicle, tram) can only query the track type it belongs to.&lt;br /&gt;
&lt;br /&gt;
The second byte (FF) contains the following flags:&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||1||The vehicle is/would be powered on the current railtype (this is independent from powered/non-powered wagon or anything)&lt;br /&gt;
|-&lt;br /&gt;
|1||2||{{ottdp|1.11|no|ottdrev=gf1bc4d840}} Set, if the track-type has catenary. This is independent of the vehicle: a NewGRF can define an engine as powered on non-electrified track (bit 0), and show a raised pantograph (bit 1) to look like a dual-powered engine. This bit is a simplified as it only checks for &amp;quot;some catenary&amp;quot;. To distinguish different types of catenaries, AC and DC voltages, ... use variable 63 instead.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All other bits are reserved, and must be masked.&lt;br /&gt;
&lt;br /&gt;
All other bytes are reserved, and must be masked.&lt;br /&gt;
&lt;br /&gt;
=== Position within articulated vehicle (4D) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format:&#039;&#039;&#039; xxxxbbff&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Variable!!Value&lt;br /&gt;
|-&lt;br /&gt;
|ff||Position of vehicle (articulated part) within the articulated vehicle, counted from the first part, starting with 0.&lt;br /&gt;
|-&lt;br /&gt;
|bb||Position of vehicle (articulated part) within the articulated vehicle, counted from the last part, starting with 0.&lt;br /&gt;
|-&lt;br /&gt;
|xx||Reserved, do not access.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The total number of articulated parts of a vehicle equals ff + 1 + bb.&lt;br /&gt;
&lt;br /&gt;
For road vehicles &amp;quot;ff&amp;quot; and &amp;quot;bb&amp;quot; currently equal var 40, since there are no road vehicle wagons yet.&lt;br /&gt;
&lt;br /&gt;
=== Count Veh.ID occurence (60) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format:&#039;&#039;&#039; xxxxxxnn&lt;br /&gt;
&lt;br /&gt;
The 60+x parameter is the vehicle ID to look for, and the returned nn is the number of vehicles in the consist that have this ID. If used with VarAction2 type 81, only the current vehicle and onwards will be check, with VarAction2 type 82, all vehicles in the consist will be counted.&lt;br /&gt;
&lt;br /&gt;
=== Query variable of n-th vehicle in chain (61) ===&lt;br /&gt;
&lt;br /&gt;
This is a special variable to get the contents of another variable of a different vehicle in the vehicle chain. It is only supported for trains and road vehicles. It is not supported during a callback that is used to modify vehicle properties to avoid circular dependencies, which currently limits this variable to callbacks 1D, 2D, 31 and 32 plus outside callback scope.&lt;br /&gt;
&lt;br /&gt;
Temporary register 10F is interpreted as a signed integer and specifies the offset in the chain from the current vehicle. Positive values are interpreted as towards the end, negative values as towards the front. If the offset is outside the vehicle chain, the result value will be 0.&lt;br /&gt;
&lt;br /&gt;
The 60+x parameter specifies the variable to access and temporary register 10E is passed as the new 60+x parameter. Passing 61 as the variable is not allowed. Currently only vehicle specific variables listed on this page plus global variable 25 and {{ottdp|1.3|no|ottdrev=r24527}} 5F are accessible through var 61.&lt;br /&gt;
&lt;br /&gt;
The resulting value will have the size of whatever variable is queried.&lt;br /&gt;
&lt;br /&gt;
=== Curvature/position difference for n-th vehicle in chain (62) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format:&#039;&#039;&#039; zzyyxxFD&lt;br /&gt;
&lt;br /&gt;
This variable is only supported for trains and road vehicles.&lt;br /&gt;
&lt;br /&gt;
The 60+x parameter is interpreted as a signed integer and specifies the offset in the chain from the current vehicle. Positive values are interpreted as towards the end, negative values as towards the front. If the offset is outside the vehicle chain, the result value will be 0.&lt;br /&gt;
&lt;br /&gt;
The lowest nibble (D) contains the direction difference between the selected vehicle and this vehicle, the possible values are identical to those of [[#Curvature_info_.2845.29|variable 45]].&lt;br /&gt;
&lt;br /&gt;
The next nibble (F) has the following meaning:&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|3||8||The vehicle is currently hidden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The upper three bytes contain the signed difference of the X/Y/Z position between the selected vehicle and this vehicle.&lt;br /&gt;
&lt;br /&gt;
=== Track-type test against another track-type (63) ===&lt;br /&gt;
&lt;br /&gt;
{{ottdp|1.11|no|ottdrev=g868d84bbf}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Format:&#039;&#039;&#039; xxxxxxFF&lt;br /&gt;
&lt;br /&gt;
This variable is only supported for trains and road vehicles.&lt;br /&gt;
&lt;br /&gt;
The 60+x parameter is an index into the rail-/road-/tram-type translation table.&lt;br /&gt;
The result value reports how vehicles of this type would behave on the current tile.&lt;br /&gt;
This allows vehicles to behave or look differently on various track-types independent of their own track-type.&lt;br /&gt;
&lt;br /&gt;
The lower byte (FF) contains some flags:&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
!Bit!!Value!!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|0||1||The track-type from the 60+x parameter is known. If unset, all other flags are unset as well, no information can be given.&lt;br /&gt;
|-&lt;br /&gt;
|1||2||Vehicles with type from the 60+x parameter are compatible with the track on the current tile.&lt;br /&gt;
|-&lt;br /&gt;
|2||4||Vehicles with type from the 60+x parameter are powered on the track of the current tile.&lt;br /&gt;
|-&lt;br /&gt;
|3||8||The track-type from the 60+x parameter is identical or equivalent (listed as alternate label in rail-/road-/tram-type property 1D) to the track-type of the current tile.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The remaining bytes are reserved, and must be masked.&lt;br /&gt;
&lt;br /&gt;
=== Modflags (FE and FF) ===&lt;br /&gt;
&lt;br /&gt;
The bits in FE mostly relate to gradualloading. &amp;amp;nbsp;A few useful bits for grf authors are;&lt;br /&gt;
&lt;br /&gt;
{| |-&lt;br /&gt;
!Bit!!Version!!Value of the bit&lt;br /&gt;
|-&lt;br /&gt;
|1||{{ottdp|1.5|2.5|ottdrev=r26430}}||Vehicle is still unloading and has not yet started loading new cargo at the current station.&lt;br /&gt;
|-&lt;br /&gt;
|5||{{ottdp|0.6|2.5}}||Vehicle is powered (engine or powered wagon, mainly useful for the latter)&lt;br /&gt;
|-&lt;br /&gt;
|6||{{ottdp|0.6|2.5}}||Vehicle would be powered (engine or powered wagon) if there were suitable track. (E.g. electric train in mixed train on normal track)&lt;br /&gt;
|-&lt;br /&gt;
|8 &amp;lt;ref&amp;gt;This bit is only accurate for the first vehicle in the consist.&amp;lt;/ref&amp;gt;||{{ottdp|0.6|2.5}}||This bit is flipped every time the train reverses direction&lt;br /&gt;
|-&lt;br /&gt;
|10||{{ottdp|0.6|2.5|ttdprev=r1334}}||Vehicle was built during the exclusive preview&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
variable FF is actually the high byte of variable FE, so FE bit 8 is the same as FF bit 0.&lt;br /&gt;
&lt;br /&gt;
Other bits are reserved; most are actually used for TTDPatch internal states.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=TextIDs&amp;diff=862</id>
		<title>TextIDs</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=TextIDs&amp;diff=862"/>
		<updated>2007-07-12T11:40:51Z</updated>

		<summary type="html">&lt;p&gt;Jgr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;TextIDs to use for Action 4&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is a list of the text IDs in TTD (for action 4), originally compiled by A. Skrobov.&lt;br /&gt;
&lt;br /&gt;
{maketoc}&lt;br /&gt;
&lt;br /&gt;
=0000 General strings=&lt;br /&gt;
&lt;br /&gt;
0000 \94Cannot remove obstacles on land&lt;br /&gt;
&lt;br /&gt;
0001 \94Off edge of map&lt;br /&gt;
&lt;br /&gt;
0002 \94Too close to edge of map&lt;br /&gt;
&lt;br /&gt;
0003 \94Not enough cash - requires \7f&lt;br /&gt;
&lt;br /&gt;
0004 \94\7f&lt;br /&gt;
&lt;br /&gt;
0005 \8b\7f&lt;br /&gt;
&lt;br /&gt;
0006&lt;br /&gt;
&lt;br /&gt;
0007 \94Flat land required&lt;br /&gt;
&lt;br /&gt;
0008 \98Waiting: \94\80&lt;br /&gt;
&lt;br /&gt;
0009 \94\80&lt;br /&gt;
&lt;br /&gt;
000A \94\80\90 (en-route from&lt;br /&gt;
&lt;br /&gt;
000B \90\80)&lt;br /&gt;
&lt;br /&gt;
000C \98Accepts: \94&lt;br /&gt;
&lt;br /&gt;
000D \98Accepts: \8a&lt;br /&gt;
&lt;br /&gt;
000E&lt;br /&gt;
&lt;br /&gt;
000F Passengers&lt;br /&gt;
&lt;br /&gt;
0010 Coal&lt;br /&gt;
&lt;br /&gt;
0011 Mail&lt;br /&gt;
&lt;br /&gt;
0012 Oil&lt;br /&gt;
&lt;br /&gt;
0013 Livestock&lt;br /&gt;
&lt;br /&gt;
0014 Goods&lt;br /&gt;
&lt;br /&gt;
0015 Grain&lt;br /&gt;
&lt;br /&gt;
0016 Wood&lt;br /&gt;
&lt;br /&gt;
0017 Iron Ore&lt;br /&gt;
&lt;br /&gt;
0018 Steel&lt;br /&gt;
&lt;br /&gt;
0019 Valuables&lt;br /&gt;
&lt;br /&gt;
001A Copper Ore&lt;br /&gt;
&lt;br /&gt;
001B Maize&lt;br /&gt;
&lt;br /&gt;
001C Fruit&lt;br /&gt;
&lt;br /&gt;
001D Diamonds&lt;br /&gt;
&lt;br /&gt;
001E Food&lt;br /&gt;
&lt;br /&gt;
001F Paper&lt;br /&gt;
&lt;br /&gt;
0020 Gold&lt;br /&gt;
&lt;br /&gt;
0021 Water&lt;br /&gt;
&lt;br /&gt;
0022 Wheat&lt;br /&gt;
&lt;br /&gt;
0023 Rubber&lt;br /&gt;
&lt;br /&gt;
0024 Sugar&lt;br /&gt;
&lt;br /&gt;
0025 Toys&lt;br /&gt;
&lt;br /&gt;
0026 Sweets&lt;br /&gt;
&lt;br /&gt;
0027 Cola&lt;br /&gt;
&lt;br /&gt;
0028 Candyfloss&lt;br /&gt;
&lt;br /&gt;
0029 Bubbles&lt;br /&gt;
&lt;br /&gt;
002A Toffee&lt;br /&gt;
&lt;br /&gt;
002B Batteries&lt;br /&gt;
&lt;br /&gt;
002C Plastic&lt;br /&gt;
&lt;br /&gt;
002D Fizzy Drinks&lt;br /&gt;
&lt;br /&gt;
002E&lt;br /&gt;
&lt;br /&gt;
002F Passenger&lt;br /&gt;
&lt;br /&gt;
0030 Coal&lt;br /&gt;
&lt;br /&gt;
0031 Mail&lt;br /&gt;
&lt;br /&gt;
0032 Oil&lt;br /&gt;
&lt;br /&gt;
0033 Livestock&lt;br /&gt;
&lt;br /&gt;
0034 Goods&lt;br /&gt;
&lt;br /&gt;
0035 Grain&lt;br /&gt;
&lt;br /&gt;
0036 Wood&lt;br /&gt;
&lt;br /&gt;
0037 Iron Ore&lt;br /&gt;
&lt;br /&gt;
0038 Steel&lt;br /&gt;
&lt;br /&gt;
0039 Valuables&lt;br /&gt;
&lt;br /&gt;
003A Copper Ore&lt;br /&gt;
&lt;br /&gt;
003B Maize&lt;br /&gt;
&lt;br /&gt;
003C Fruit&lt;br /&gt;
&lt;br /&gt;
003D Diamond&lt;br /&gt;
&lt;br /&gt;
003E Food&lt;br /&gt;
&lt;br /&gt;
003F Paper&lt;br /&gt;
&lt;br /&gt;
0040 Gold&lt;br /&gt;
&lt;br /&gt;
0041 Water&lt;br /&gt;
&lt;br /&gt;
0042 Wheat&lt;br /&gt;
&lt;br /&gt;
0043 Rubber&lt;br /&gt;
&lt;br /&gt;
0044 Sugar&lt;br /&gt;
&lt;br /&gt;
0045 Toy&lt;br /&gt;
&lt;br /&gt;
0046 Sweet&lt;br /&gt;
&lt;br /&gt;
0047 Cola&lt;br /&gt;
&lt;br /&gt;
0048 Candyfloss&lt;br /&gt;
&lt;br /&gt;
0049 Bubble&lt;br /&gt;
&lt;br /&gt;
004A Toffee&lt;br /&gt;
&lt;br /&gt;
004B Battery&lt;br /&gt;
&lt;br /&gt;
004C Plastic&lt;br /&gt;
&lt;br /&gt;
004D Fizzy Drink&lt;br /&gt;
&lt;br /&gt;
004E&lt;br /&gt;
&lt;br /&gt;
004F | passenger&lt;br /&gt;
&lt;br /&gt;
0050 | tonne of coal&lt;br /&gt;
&lt;br /&gt;
0051 | bag of mail&lt;br /&gt;
&lt;br /&gt;
0052 \87 of oil&lt;br /&gt;
&lt;br /&gt;
0053 | item of livestock&lt;br /&gt;
&lt;br /&gt;
0054 | crate of goods&lt;br /&gt;
&lt;br /&gt;
0055 | tonne of grain&lt;br /&gt;
&lt;br /&gt;
0056 | tonne of wood&lt;br /&gt;
&lt;br /&gt;
0057 | tonne of iron ore&lt;br /&gt;
&lt;br /&gt;
0058 | tonne of steel&lt;br /&gt;
&lt;br /&gt;
0059 | bag of valuables&lt;br /&gt;
&lt;br /&gt;
005A | tonne of copper ore&lt;br /&gt;
&lt;br /&gt;
005B | tonne of maize&lt;br /&gt;
&lt;br /&gt;
005C | tonne of fruit&lt;br /&gt;
&lt;br /&gt;
005D | bag of diamonds&lt;br /&gt;
&lt;br /&gt;
005E | tonne of food&lt;br /&gt;
&lt;br /&gt;
005F | tonne of paper&lt;br /&gt;
&lt;br /&gt;
0060 | bag of gold&lt;br /&gt;
&lt;br /&gt;
0061 \87 of water&lt;br /&gt;
&lt;br /&gt;
0062 | tonne of wheat&lt;br /&gt;
&lt;br /&gt;
0063 \87 of rubber&lt;br /&gt;
&lt;br /&gt;
0064 | tonne of sugar&lt;br /&gt;
&lt;br /&gt;
0065 | toy&lt;br /&gt;
&lt;br /&gt;
0066 | bag of sweets&lt;br /&gt;
&lt;br /&gt;
0067 \87 of cola&lt;br /&gt;
&lt;br /&gt;
0068 | tonne of candyfloss&lt;br /&gt;
&lt;br /&gt;
0069 | bubble&lt;br /&gt;
&lt;br /&gt;
006A | tonne of toffee&lt;br /&gt;
&lt;br /&gt;
006B | battery&lt;br /&gt;
&lt;br /&gt;
006C \87 of plastic&lt;br /&gt;
&lt;br /&gt;
006D | fizzy drink&lt;br /&gt;
&lt;br /&gt;
006E&lt;br /&gt;
&lt;br /&gt;
006F | passengers&lt;br /&gt;
&lt;br /&gt;
0070 | tonnes of coal&lt;br /&gt;
&lt;br /&gt;
0071 | bags of mail&lt;br /&gt;
&lt;br /&gt;
0072 \87 of oil&lt;br /&gt;
&lt;br /&gt;
0073 | items of livestock&lt;br /&gt;
&lt;br /&gt;
0074 | crates of goods&lt;br /&gt;
&lt;br /&gt;
0075 | tonnes of grain&lt;br /&gt;
&lt;br /&gt;
0076 | tonnes of wood&lt;br /&gt;
&lt;br /&gt;
0077 | tonnes of iron ore&lt;br /&gt;
&lt;br /&gt;
0078 | tonnes of steel&lt;br /&gt;
&lt;br /&gt;
0079 | bags of valuables&lt;br /&gt;
&lt;br /&gt;
007A | tonnes of copper ore&lt;br /&gt;
&lt;br /&gt;
007B | tonnes of maize&lt;br /&gt;
&lt;br /&gt;
007C | tonnes of fruit&lt;br /&gt;
&lt;br /&gt;
007D | bags of diamonds&lt;br /&gt;
&lt;br /&gt;
007E | tonnes of food&lt;br /&gt;
&lt;br /&gt;
007F | tonnes of paper&lt;br /&gt;
&lt;br /&gt;
0080 | bags of gold&lt;br /&gt;
&lt;br /&gt;
0081 \87 of water&lt;br /&gt;
&lt;br /&gt;
0082 | tonnes of wheat&lt;br /&gt;
&lt;br /&gt;
0083 \87 of rubber&lt;br /&gt;
&lt;br /&gt;
0084 | tonnes of sugar&lt;br /&gt;
&lt;br /&gt;
0085 | toys&lt;br /&gt;
&lt;br /&gt;
0086 | bags of sweets&lt;br /&gt;
&lt;br /&gt;
0087 \87 of cola&lt;br /&gt;
&lt;br /&gt;
0088 | tonnes of candyfloss&lt;br /&gt;
&lt;br /&gt;
0089 | bubbles&lt;br /&gt;
&lt;br /&gt;
008A | tonnes of toffee&lt;br /&gt;
&lt;br /&gt;
008B | batteries&lt;br /&gt;
&lt;br /&gt;
008C \87 of plastic&lt;br /&gt;
&lt;br /&gt;
008D | fizzy drinks&lt;br /&gt;
&lt;br /&gt;
008E&lt;br /&gt;
&lt;br /&gt;
008F \0ePS&lt;br /&gt;
&lt;br /&gt;
0090 \0eCL&lt;br /&gt;
&lt;br /&gt;
0091 \0eML&lt;br /&gt;
&lt;br /&gt;
0092 \0eOL&lt;br /&gt;
&lt;br /&gt;
0093 \0eLV&lt;br /&gt;
&lt;br /&gt;
0094 \0eGD&lt;br /&gt;
&lt;br /&gt;
0095 \0eGR&lt;br /&gt;
&lt;br /&gt;
0096 \0eWD&lt;br /&gt;
&lt;br /&gt;
0097 \0eOR&lt;br /&gt;
&lt;br /&gt;
0098 \0eST&lt;br /&gt;
&lt;br /&gt;
0099 \0eVL&lt;br /&gt;
&lt;br /&gt;
009A \0eCO&lt;br /&gt;
&lt;br /&gt;
009B \0eMZ&lt;br /&gt;
&lt;br /&gt;
009C \0eFT&lt;br /&gt;
&lt;br /&gt;
009D \0eDM&lt;br /&gt;
&lt;br /&gt;
009E \0eFD&lt;br /&gt;
&lt;br /&gt;
009F \0ePR&lt;br /&gt;
&lt;br /&gt;
00A0 \0eGD&lt;br /&gt;
&lt;br /&gt;
00A1 \0eWR&lt;br /&gt;
&lt;br /&gt;
00A2 \0eWH&lt;br /&gt;
&lt;br /&gt;
00A3 \0eRB&lt;br /&gt;
&lt;br /&gt;
00A4 \0eSG&lt;br /&gt;
&lt;br /&gt;
00A5 \0eTY&lt;br /&gt;
&lt;br /&gt;
00A6 \0eSW&lt;br /&gt;
&lt;br /&gt;
00A7 \0eCL&lt;br /&gt;
&lt;br /&gt;
00A8 \0eCF&lt;br /&gt;
&lt;br /&gt;
00A9 \0eBU&lt;br /&gt;
&lt;br /&gt;
00AA \0eTF&lt;br /&gt;
&lt;br /&gt;
00AB \0eBA&lt;br /&gt;
&lt;br /&gt;
00AC \0ePL&lt;br /&gt;
&lt;br /&gt;
00AD \0eFZ&lt;br /&gt;
&lt;br /&gt;
00AE \94\83&lt;br /&gt;
&lt;br /&gt;
00AF \94\82&lt;br /&gt;
&lt;br /&gt;
00B0 \94Map - \80&lt;br /&gt;
&lt;br /&gt;
00B1 \94Game Options&lt;br /&gt;
&lt;br /&gt;
00B2 \90Message&lt;br /&gt;
&lt;br /&gt;
00B3 \90Message from \80&lt;br /&gt;
&lt;br /&gt;
00B4 \94Can&#039;t do this....&lt;br /&gt;
&lt;br /&gt;
00B5 \94Can&#039;t clear this area....&lt;br /&gt;
&lt;br /&gt;
00B6 \98Copyright \a9 1995 Chris Sawyer,All rights reserved&lt;br /&gt;
&lt;br /&gt;
00B7 \98Version 2.01.119 6th October 1995 17:19:21&lt;br /&gt;
&lt;br /&gt;
00B8 \98Designed &amp;amp; Programmed by Chris Sawyer&lt;br /&gt;
&lt;br /&gt;
00B9 \98Graphics by Simon Foster&lt;br /&gt;
&lt;br /&gt;
00BA \98Music by John Broomhall\0dSound Programming by Andrew Parton\0d\0dQuality Assurance:\0dAndrew Luckett,Don Witcombe,Craig Lear, Daniel Luton,Justin Manning,\0dJason Sampson,Darren Kirby,Phil ))McDonnell[[]]McDonnell[[,Patrice Stauder\0dInstallation by Tim Cannell\0dProducer: Mike Rudderham\0d\0dThanks to: Jacqui Lyons at Marjacq Micro\0d&lt;br /&gt;
&lt;br /&gt;
00BB \98Memory: {K ({K unused)&lt;br /&gt;
&lt;br /&gt;
00BC \98Memory Manager:\80\80\80\80\80&lt;br /&gt;
&lt;br /&gt;
00BD \98Processor: 80}86&lt;br /&gt;
&lt;br /&gt;
00BE \98Graphics:&lt;br /&gt;
&lt;br /&gt;
00BF VESA (&lt;br /&gt;
&lt;br /&gt;
00C0 ATI&lt;br /&gt;
&lt;br /&gt;
00C1 Trident&lt;br /&gt;
&lt;br /&gt;
00C2 Oak Technologies&lt;br /&gt;
&lt;br /&gt;
00C3 Tseng Labs&lt;br /&gt;
&lt;br /&gt;
00C4 Paradise&lt;br /&gt;
&lt;br /&gt;
00C5 \98\ad&lt;br /&gt;
&lt;br /&gt;
00C6 \89\ad&lt;br /&gt;
&lt;br /&gt;
00C7 \94Quit to DOS&lt;br /&gt;
&lt;br /&gt;
00C8 \98Yes&lt;br /&gt;
&lt;br /&gt;
00C9 \98No&lt;br /&gt;
&lt;br /&gt;
00CA \90Are you sure you want to abandon this game and quit to DOS ?&lt;br /&gt;
&lt;br /&gt;
00CB \981&lt;br /&gt;
&lt;br /&gt;
00CC \982&lt;br /&gt;
&lt;br /&gt;
00CD \983&lt;br /&gt;
&lt;br /&gt;
00CE \984&lt;br /&gt;
&lt;br /&gt;
00CF \985&lt;br /&gt;
&lt;br /&gt;
00D0 Nothing&lt;br /&gt;
&lt;br /&gt;
00D1 Dark Blue&lt;br /&gt;
&lt;br /&gt;
00D2 Pale Green&lt;br /&gt;
&lt;br /&gt;
00D3 Pink&lt;br /&gt;
&lt;br /&gt;
00D4 Yellow&lt;br /&gt;
&lt;br /&gt;
00D5 Red&lt;br /&gt;
&lt;br /&gt;
00D6 Light Blue&lt;br /&gt;
&lt;br /&gt;
00D7 Green&lt;br /&gt;
&lt;br /&gt;
00D8 Dark Green&lt;br /&gt;
&lt;br /&gt;
00D9 Blue&lt;br /&gt;
&lt;br /&gt;
00DA Cream&lt;br /&gt;
&lt;br /&gt;
00DB Mauve&lt;br /&gt;
&lt;br /&gt;
00DC Purple&lt;br /&gt;
&lt;br /&gt;
00DD Orange&lt;br /&gt;
&lt;br /&gt;
00DE Brown&lt;br /&gt;
&lt;br /&gt;
00DF Grey&lt;br /&gt;
&lt;br /&gt;
00E0 White&lt;br /&gt;
&lt;br /&gt;
00E1 \94Too many vehicles in game&lt;br /&gt;
&lt;br /&gt;
00E2 \98|&lt;br /&gt;
&lt;br /&gt;
00E3 \8b|&lt;br /&gt;
&lt;br /&gt;
00E4 \98Location&lt;br /&gt;
&lt;br /&gt;
00E5 Contours&lt;br /&gt;
&lt;br /&gt;
00E6 Vehicles&lt;br /&gt;
&lt;br /&gt;
00E7 Industries&lt;br /&gt;
&lt;br /&gt;
00E8 Routes&lt;br /&gt;
&lt;br /&gt;
00E9 Vegetation&lt;br /&gt;
&lt;br /&gt;
00EA Owners&lt;br /&gt;
&lt;br /&gt;
00EB \98\0eRoads&lt;br /&gt;
&lt;br /&gt;
00EC \98\0eRailways&lt;br /&gt;
&lt;br /&gt;
00ED \98\0eStations/Airports/Docks&lt;br /&gt;
&lt;br /&gt;
00EE \98\0eBuildings/Industries&lt;br /&gt;
&lt;br /&gt;
00EF \98\0eVehicles&lt;br /&gt;
&lt;br /&gt;
00F0 \98\0e100m&lt;br /&gt;
&lt;br /&gt;
00F1 \98\0e200m&lt;br /&gt;
&lt;br /&gt;
00F2 \98\0e300m&lt;br /&gt;
&lt;br /&gt;
00F3 \98\0e400m&lt;br /&gt;
&lt;br /&gt;
00F4 \98\0e500m&lt;br /&gt;
&lt;br /&gt;
00F5 \98\0eTrains&lt;br /&gt;
&lt;br /&gt;
00F6 \98\0eRoad Vehicles&lt;br /&gt;
&lt;br /&gt;
00F7 \98\0eShips&lt;br /&gt;
&lt;br /&gt;
00F8 \98\0eAircraft&lt;br /&gt;
&lt;br /&gt;
00F9 \98\0eTransport Routes&lt;br /&gt;
&lt;br /&gt;
00FA \98\0eCoal Mine&lt;br /&gt;
&lt;br /&gt;
00FB \98\0ePower Station&lt;br /&gt;
&lt;br /&gt;
00FC \98\0eForest&lt;br /&gt;
&lt;br /&gt;
00FD \98\0eSawmill&lt;br /&gt;
&lt;br /&gt;
00FE \98\0eOil Refinery&lt;br /&gt;
&lt;br /&gt;
00FF \98\0eFarm&lt;br /&gt;
&lt;br /&gt;
0100 \98\0eFactory&lt;br /&gt;
&lt;br /&gt;
0101 \98\0ePrinting Works&lt;br /&gt;
&lt;br /&gt;
0102 \98\0eOil Wells&lt;br /&gt;
&lt;br /&gt;
0103 \98\0eIron Ore Mine&lt;br /&gt;
&lt;br /&gt;
0104 \98\0eSteel Mill&lt;br /&gt;
&lt;br /&gt;
0105 \98\0eBank&lt;br /&gt;
&lt;br /&gt;
0106 \98\0ePaper Mill&lt;br /&gt;
&lt;br /&gt;
0107 \98\0eGold Mine&lt;br /&gt;
&lt;br /&gt;
0108 \98\0eFood Processing Plant&lt;br /&gt;
&lt;br /&gt;
0109 \98\0eDiamond Mine&lt;br /&gt;
&lt;br /&gt;
010A \98\0eCopper Ore Mine&lt;br /&gt;
&lt;br /&gt;
010B \98\0eFruit Plantation&lt;br /&gt;
&lt;br /&gt;
010C \98\0eRubber Plantation&lt;br /&gt;
&lt;br /&gt;
010D \98\0eWater Supply&lt;br /&gt;
&lt;br /&gt;
010E \98\0eWater Tower&lt;br /&gt;
&lt;br /&gt;
010F \98\0eLumber Mill&lt;br /&gt;
&lt;br /&gt;
0110 \98\0eCandyfloss Forest&lt;br /&gt;
&lt;br /&gt;
0111 \98\0eSweet Factory&lt;br /&gt;
&lt;br /&gt;
0112 \98\0eBattery Farm&lt;br /&gt;
&lt;br /&gt;
0113 \98\0eCola Wells&lt;br /&gt;
&lt;br /&gt;
0114 \98\0eToy Shop&lt;br /&gt;
&lt;br /&gt;
0115 \98\0eToy Factory&lt;br /&gt;
&lt;br /&gt;
0116 \98\0ePlastic Fountains&lt;br /&gt;
&lt;br /&gt;
0117 \98\0eFizzy Drink Factory&lt;br /&gt;
&lt;br /&gt;
0118 \98\0eBubble Generator&lt;br /&gt;
&lt;br /&gt;
0119 \98\0eToffee Quarry&lt;br /&gt;
&lt;br /&gt;
011A \98\0eSugar Mine&lt;br /&gt;
&lt;br /&gt;
011B \98\0eRailway Station&lt;br /&gt;
&lt;br /&gt;
011C \98\0eLorry Loading Bay&lt;br /&gt;
&lt;br /&gt;
011D \98\0eBus Station&lt;br /&gt;
&lt;br /&gt;
011E \98\0eAirport/Heliport&lt;br /&gt;
&lt;br /&gt;
011F \98\0eDock&lt;br /&gt;
&lt;br /&gt;
0120 \98\0eRough Land&lt;br /&gt;
&lt;br /&gt;
0121 \98\0eGrass Land&lt;br /&gt;
&lt;br /&gt;
0122 \98\0eBare Land&lt;br /&gt;
&lt;br /&gt;
0123 \98\0eFields&lt;br /&gt;
&lt;br /&gt;
0124 \98\0eTrees&lt;br /&gt;
&lt;br /&gt;
0125 \98\0eRocks&lt;br /&gt;
&lt;br /&gt;
0126 \98\0eWater&lt;br /&gt;
&lt;br /&gt;
0127 \98\0eNo Owner&lt;br /&gt;
&lt;br /&gt;
0128 \98\0eTowns&lt;br /&gt;
&lt;br /&gt;
0129 \98\0eIndustries&lt;br /&gt;
&lt;br /&gt;
012A \98\0eDesert&lt;br /&gt;
&lt;br /&gt;
012B \98\0eSnow&lt;br /&gt;
&lt;br /&gt;
012C \94Message&lt;br /&gt;
&lt;br /&gt;
012D \94\80&lt;br /&gt;
&lt;br /&gt;
012E \98Cancel&lt;br /&gt;
&lt;br /&gt;
012F \98OK&lt;br /&gt;
&lt;br /&gt;
0130 \98Rename&lt;br /&gt;
&lt;br /&gt;
0131 \94Too many names defined&lt;br /&gt;
&lt;br /&gt;
0132 \94Chosen name in use already&lt;br /&gt;
&lt;br /&gt;
0133 Pounds (\a3)&lt;br /&gt;
&lt;br /&gt;
0134 Dollars ($)&lt;br /&gt;
&lt;br /&gt;
0135 Franc (FF)&lt;br /&gt;
&lt;br /&gt;
0136 Deutschmark (DM)&lt;br /&gt;
&lt;br /&gt;
0137 Yen (\a5)&lt;br /&gt;
&lt;br /&gt;
0138 Peseta (Pt)&lt;br /&gt;
&lt;br /&gt;
0139 Imperial (miles)&lt;br /&gt;
&lt;br /&gt;
013A Metric (kilometres)&lt;br /&gt;
&lt;br /&gt;
013B \94...owned by \80&lt;br /&gt;
&lt;br /&gt;
013C \98Cargo&lt;br /&gt;
&lt;br /&gt;
013D \98Information&lt;br /&gt;
&lt;br /&gt;
013E \98Capacities&lt;br /&gt;
&lt;br /&gt;
013F \98Capacity: \95\80&lt;br /&gt;
&lt;br /&gt;
0140 \98New Game&lt;br /&gt;
&lt;br /&gt;
0141 \98Load Game&lt;br /&gt;
&lt;br /&gt;
0142 \98Tutorial / Demonstration&lt;br /&gt;
&lt;br /&gt;
0143 \981 Player&lt;br /&gt;
&lt;br /&gt;
0144 \982 Players&lt;br /&gt;
&lt;br /&gt;
0145 \942 Player Link Setup&lt;br /&gt;
&lt;br /&gt;
0146 \98Attempt Connection&lt;br /&gt;
&lt;br /&gt;
0147 \94Unable to make connection to remote computer&lt;br /&gt;
&lt;br /&gt;
0148 \98Game Options&lt;br /&gt;
&lt;br /&gt;
014A&lt;br /&gt;
&lt;br /&gt;
014B &amp;amp;nbsp;XMS&lt;br /&gt;
&lt;br /&gt;
014C &amp;amp;nbsp;VCPI&lt;br /&gt;
&lt;br /&gt;
014D &amp;amp;nbsp;DPMI&lt;br /&gt;
&lt;br /&gt;
014E &amp;amp;nbsp;Windows&lt;br /&gt;
&lt;br /&gt;
014F &amp;amp;nbsp;OS/2&lt;br /&gt;
&lt;br /&gt;
0150 someone\85\85&lt;br /&gt;
&lt;br /&gt;
0151 Map of world&lt;br /&gt;
&lt;br /&gt;
0152 Town directory&lt;br /&gt;
&lt;br /&gt;
0153 Subsidies&lt;br /&gt;
&lt;br /&gt;
0154 Operating profit graph&lt;br /&gt;
&lt;br /&gt;
0155 Income graph&lt;br /&gt;
&lt;br /&gt;
0156 Delivered cargo graph&lt;br /&gt;
&lt;br /&gt;
0157 Performance history graph&lt;br /&gt;
&lt;br /&gt;
0158 Company value graph&lt;br /&gt;
&lt;br /&gt;
0159 Cargo payment rates&lt;br /&gt;
&lt;br /&gt;
015A Company league table&lt;br /&gt;
&lt;br /&gt;
015B \94Transport Tycoon (Deluxe)&lt;br /&gt;
&lt;br /&gt;
015C Save game&lt;br /&gt;
&lt;br /&gt;
015D Abandon game&lt;br /&gt;
&lt;br /&gt;
015E&lt;br /&gt;
&lt;br /&gt;
015F Quit to DOS&lt;br /&gt;
&lt;br /&gt;
0160 \90Are you sure you want to abandon this game ?&lt;br /&gt;
&lt;br /&gt;
0161 \94Abandon Game&lt;br /&gt;
&lt;br /&gt;
0162 Jan&lt;br /&gt;
&lt;br /&gt;
0163 Feb&lt;br /&gt;
&lt;br /&gt;
0164 Mar&lt;br /&gt;
&lt;br /&gt;
0165 Apr&lt;br /&gt;
&lt;br /&gt;
0166 May&lt;br /&gt;
&lt;br /&gt;
0167 Jun&lt;br /&gt;
&lt;br /&gt;
0168 Jul&lt;br /&gt;
&lt;br /&gt;
0169 Aug&lt;br /&gt;
&lt;br /&gt;
016A Sep&lt;br /&gt;
&lt;br /&gt;
016B Oct&lt;br /&gt;
&lt;br /&gt;
016C Nov&lt;br /&gt;
&lt;br /&gt;
016D Dec&lt;br /&gt;
&lt;br /&gt;
016E \0e\80\0d \80&lt;br /&gt;
&lt;br /&gt;
016F \0e\80\0d \80\0d~&lt;br /&gt;
&lt;br /&gt;
0170 \0e\80-&lt;br /&gt;
&lt;br /&gt;
0171 \98Pause game&lt;br /&gt;
&lt;br /&gt;
0172 \98Save game,abandon game,quit to DOS&lt;br /&gt;
&lt;br /&gt;
0173 \98Display list of company&#039;s stations&lt;br /&gt;
&lt;br /&gt;
0174 \98Display map&lt;br /&gt;
&lt;br /&gt;
0175 \98Display map,town directory&lt;br /&gt;
&lt;br /&gt;
0176 \98Display town directory&lt;br /&gt;
&lt;br /&gt;
0177 \98Display company finances information&lt;br /&gt;
&lt;br /&gt;
0178 \98Display company general information&lt;br /&gt;
&lt;br /&gt;
0179 \98Display graphs&lt;br /&gt;
&lt;br /&gt;
017A \98Display company league table&lt;br /&gt;
&lt;br /&gt;
017B \98Display list of company&#039;s trains&lt;br /&gt;
&lt;br /&gt;
017C \98Display list of company&#039;s road vehicles&lt;br /&gt;
&lt;br /&gt;
017D \98Display list of company&#039;s ships&lt;br /&gt;
&lt;br /&gt;
017E \98Display list of company&#039;s aircraft&lt;br /&gt;
&lt;br /&gt;
017F \98Zoom the view in&lt;br /&gt;
&lt;br /&gt;
0180 \98Zoom the view out&lt;br /&gt;
&lt;br /&gt;
0181 \98Build railway track&lt;br /&gt;
&lt;br /&gt;
0182 \98Build roads&lt;br /&gt;
&lt;br /&gt;
0183 \98Build ship docks&lt;br /&gt;
&lt;br /&gt;
0184 \98Build airports&lt;br /&gt;
&lt;br /&gt;
0185 \98Plant trees,place signs etc.&lt;br /&gt;
&lt;br /&gt;
0186 \98Query land block&lt;br /&gt;
&lt;br /&gt;
0187 \98Options&lt;br /&gt;
&lt;br /&gt;
0188 \98\bc&lt;br /&gt;
&lt;br /&gt;
0189 \98\bd&lt;br /&gt;
&lt;br /&gt;
018A \94Can&#039;t change servicing interval...&lt;br /&gt;
&lt;br /&gt;
018B \98Close window&lt;br /&gt;
&lt;br /&gt;
018C \98Window title - drag this to move window&lt;br /&gt;
&lt;br /&gt;
018D \98Demolish buildings etc. on a square of land&lt;br /&gt;
&lt;br /&gt;
018E \98Lower a corner of land&lt;br /&gt;
&lt;br /&gt;
018F \98Raise a corner of land&lt;br /&gt;
&lt;br /&gt;
0190 \98Scroll bar - scrolls list up/down&lt;br /&gt;
&lt;br /&gt;
0191 \98Show land contours on map&lt;br /&gt;
&lt;br /&gt;
0192 \98Show vehicles on map&lt;br /&gt;
&lt;br /&gt;
0193 \98Show industries on map&lt;br /&gt;
&lt;br /&gt;
0194 \98Show transport routes on map&lt;br /&gt;
&lt;br /&gt;
0195 \98Show vegetation on map&lt;br /&gt;
&lt;br /&gt;
0196 \98Show land owners on map&lt;br /&gt;
&lt;br /&gt;
0197 \98Toggle town names on/off on map&lt;br /&gt;
&lt;br /&gt;
0198 \0e\98Profit this year: \7f (last year: \7f)&lt;br /&gt;
&lt;br /&gt;
0199 | year (|)&lt;br /&gt;
&lt;br /&gt;
019A | years (|)&lt;br /&gt;
&lt;br /&gt;
019B \8b| years (|)&lt;br /&gt;
&lt;br /&gt;
019C Road vehicle&lt;br /&gt;
&lt;br /&gt;
019D Aircraft&lt;br /&gt;
&lt;br /&gt;
019E Ship&lt;br /&gt;
&lt;br /&gt;
019F Train&lt;br /&gt;
&lt;br /&gt;
01A0 \94\80 | is getting old&lt;br /&gt;
&lt;br /&gt;
01A1 \94\80 | is getting very old&lt;br /&gt;
&lt;br /&gt;
01A2 \94\80 | is getting very old and urgently needs replacing&lt;br /&gt;
&lt;br /&gt;
01A3 \94Land Area Information&lt;br /&gt;
&lt;br /&gt;
01A4 \98Cost to clear: \95N/A&lt;br /&gt;
&lt;br /&gt;
01A5 \98Cost to clear: \95\7f&lt;br /&gt;
&lt;br /&gt;
01A6 N/A&lt;br /&gt;
&lt;br /&gt;
01A7 \98Owner: \95\80&lt;br /&gt;
&lt;br /&gt;
01A8 \98Local authority: \95\80&lt;br /&gt;
&lt;br /&gt;
01A9 None&lt;br /&gt;
&lt;br /&gt;
01AA \98Name&lt;br /&gt;
&lt;br /&gt;
01AB \98\0e\80&lt;br /&gt;
&lt;br /&gt;
01AC 1st&lt;br /&gt;
&lt;br /&gt;
01AD 2nd&lt;br /&gt;
&lt;br /&gt;
01AE 3rd&lt;br /&gt;
&lt;br /&gt;
01AF 4th&lt;br /&gt;
&lt;br /&gt;
01B0 5th&lt;br /&gt;
&lt;br /&gt;
01B1 6th&lt;br /&gt;
&lt;br /&gt;
01B2 7th&lt;br /&gt;
&lt;br /&gt;
01B3 8th&lt;br /&gt;
&lt;br /&gt;
01B4 9th&lt;br /&gt;
&lt;br /&gt;
01B5 10th&lt;br /&gt;
&lt;br /&gt;
01B6 11th&lt;br /&gt;
&lt;br /&gt;
01B7 12th&lt;br /&gt;
&lt;br /&gt;
01B8 13th&lt;br /&gt;
&lt;br /&gt;
01B9 14th&lt;br /&gt;
&lt;br /&gt;
01BA 15th&lt;br /&gt;
&lt;br /&gt;
01BB 16th&lt;br /&gt;
&lt;br /&gt;
01BC 17th&lt;br /&gt;
&lt;br /&gt;
01BD 18th&lt;br /&gt;
&lt;br /&gt;
01BE 19th&lt;br /&gt;
&lt;br /&gt;
01BF 20th&lt;br /&gt;
&lt;br /&gt;
01C0 21st&lt;br /&gt;
&lt;br /&gt;
01C1 22nd&lt;br /&gt;
&lt;br /&gt;
01C2 23rd&lt;br /&gt;
&lt;br /&gt;
01C3 24th&lt;br /&gt;
&lt;br /&gt;
01C4 25th&lt;br /&gt;
&lt;br /&gt;
01C5 26th&lt;br /&gt;
&lt;br /&gt;
01C6 27th&lt;br /&gt;
&lt;br /&gt;
01C7 28th&lt;br /&gt;
&lt;br /&gt;
01C8 29th&lt;br /&gt;
&lt;br /&gt;
01C9 30th&lt;br /&gt;
&lt;br /&gt;
01CA 31st&lt;br /&gt;
&lt;br /&gt;
01CB \0e|&lt;br /&gt;
&lt;br /&gt;
01CC \98Toggle large/small map size&lt;br /&gt;
&lt;br /&gt;
01CD \94Select Tutorial/Demonstration&lt;br /&gt;
&lt;br /&gt;
01CE \98Cargo accepted: \95\80&lt;br /&gt;
&lt;br /&gt;
01CF \98Cargo accepted: \95\80,\80&lt;br /&gt;
&lt;br /&gt;
01D0 \98Cargo accepted: \95\80,\80,\80&lt;br /&gt;
&lt;br /&gt;
01D1 (}/8 \80)&lt;br /&gt;
&lt;br /&gt;
01D2 \94Jazz Jukebox&lt;br /&gt;
&lt;br /&gt;
01D3 Sound/music&lt;br /&gt;
&lt;br /&gt;
01D4 \98Show sound/music window&lt;br /&gt;
&lt;br /&gt;
01D5 \0eAll&lt;br /&gt;
&lt;br /&gt;
01D6 \0eOld Style&lt;br /&gt;
&lt;br /&gt;
01D7 \0eNew Style&lt;br /&gt;
&lt;br /&gt;
01D8 \0eEzy Street&lt;br /&gt;
&lt;br /&gt;
01D9 \0eCustom 1&lt;br /&gt;
&lt;br /&gt;
01DA \0eCustom 2&lt;br /&gt;
&lt;br /&gt;
01DB \98\0eMusic Volume&lt;br /&gt;
&lt;br /&gt;
01DC \98\0eEffects Volume&lt;br /&gt;
&lt;br /&gt;
01DD \98\0eMIN &#039; &#039; &#039; &#039; &#039; &#039; MAX&lt;br /&gt;
&lt;br /&gt;
01DE \98Skip to previous track in selection&lt;br /&gt;
&lt;br /&gt;
01DF \98Skip to next track in selection&lt;br /&gt;
&lt;br /&gt;
01E0 \98Stop playing music&lt;br /&gt;
&lt;br /&gt;
01E1 \98Start playing music&lt;br /&gt;
&lt;br /&gt;
01E2 \98Drag sliders to set music and sound effect volumes&lt;br /&gt;
&lt;br /&gt;
01E3 \91\0e--&lt;br /&gt;
&lt;br /&gt;
01E4 \91\0e0}&lt;br /&gt;
&lt;br /&gt;
01E5 \91\0e}&lt;br /&gt;
&lt;br /&gt;
01E6 \91\0e------&lt;br /&gt;
&lt;br /&gt;
01E7 \91\0e&amp;amp;quot;\80&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
01E8 \98\0eTrack\01XTitle&lt;br /&gt;
&lt;br /&gt;
01E9 \0eShuffle&lt;br /&gt;
&lt;br /&gt;
01EA \0e\98Program&lt;br /&gt;
&lt;br /&gt;
01EB \94Music Program Selection&lt;br /&gt;
&lt;br /&gt;
01EC \0e\950| &amp;amp;nbsp; &amp;amp;quot;\80&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
01ED \0e\95| &amp;amp;nbsp; &amp;amp;quot;\80&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
01EE \0e\98Track Index&lt;br /&gt;
&lt;br /&gt;
01EF \0e\98Program - &#039;\80&#039;&lt;br /&gt;
&lt;br /&gt;
01F0 \0e\98Clear&lt;br /&gt;
&lt;br /&gt;
01F1 \0e\98Save&lt;br /&gt;
&lt;br /&gt;
01F2 \98Current program of music tracks&lt;br /&gt;
&lt;br /&gt;
01F3 \98Select &#039;all tracks&#039; program&lt;br /&gt;
&lt;br /&gt;
01F4 \98Select &#039;old style music&#039; program&lt;br /&gt;
&lt;br /&gt;
01F5 \98Select &#039;new style music&#039; program&lt;br /&gt;
&lt;br /&gt;
01F6 \98Select &#039;Custom 1&#039; (user-defined) program&lt;br /&gt;
&lt;br /&gt;
01F7 \98Select &#039;Custom 2&#039; (user-defined) program&lt;br /&gt;
&lt;br /&gt;
01F8 \98Clear current program (Custom1 or Custom2 only)&lt;br /&gt;
&lt;br /&gt;
01F9 \98Save music settings to disk&lt;br /&gt;
&lt;br /&gt;
01FA \98Click on music track to add to current program (Custom1 or Custom2 only)&lt;br /&gt;
&lt;br /&gt;
01FB \98Toggle program shuffle on/off&lt;br /&gt;
&lt;br /&gt;
01FC \98Show music track selection window&lt;br /&gt;
&lt;br /&gt;
01FD \98Click on service to centre view on industry/town&lt;br /&gt;
&lt;br /&gt;
01FE \98Difficulty (\80)&lt;br /&gt;
&lt;br /&gt;
01FF \0e\98\82&lt;br /&gt;
&lt;br /&gt;
0200 Last message/news report&lt;br /&gt;
&lt;br /&gt;
0201 Message settings&lt;br /&gt;
&lt;br /&gt;
0202 Send message&lt;br /&gt;
&lt;br /&gt;
0203 \98Show last message/news report,show message options&lt;br /&gt;
&lt;br /&gt;
0204 \94Message Options&lt;br /&gt;
&lt;br /&gt;
0205 \98Message types:-&lt;br /&gt;
&lt;br /&gt;
0206 \90Arrival of first vehicle at player&#039;s station&lt;br /&gt;
&lt;br /&gt;
0207 \90Arrival of first vehicle at competitor&#039;s station&lt;br /&gt;
&lt;br /&gt;
0208 \90Accidents / disasters&lt;br /&gt;
&lt;br /&gt;
0209 \90Company information&lt;br /&gt;
&lt;br /&gt;
020A \90Economy changes&lt;br /&gt;
&lt;br /&gt;
020B \90Advice / information on player&#039;s vehicles&lt;br /&gt;
&lt;br /&gt;
020C \90New vehicles&lt;br /&gt;
&lt;br /&gt;
020D \90Changes of cargo acceptance&lt;br /&gt;
&lt;br /&gt;
020E \90Subsidies&lt;br /&gt;
&lt;br /&gt;
020F \90General information&lt;br /&gt;
&lt;br /&gt;
0210 \94...too far from previous destination&lt;br /&gt;
&lt;br /&gt;
0211 \0f\98Top companies who reached 2050\0d(\80 Level)&lt;br /&gt;
&lt;br /&gt;
0212 \0f|.&lt;br /&gt;
&lt;br /&gt;
0213 Businessman&lt;br /&gt;
&lt;br /&gt;
0214 Entrepreneur&lt;br /&gt;
&lt;br /&gt;
0215 Industrialist&lt;br /&gt;
&lt;br /&gt;
0216 Capitalist&lt;br /&gt;
&lt;br /&gt;
0217 Magnate&lt;br /&gt;
&lt;br /&gt;
0218 Mogul&lt;br /&gt;
&lt;br /&gt;
0219 Tycoon of the Century&lt;br /&gt;
&lt;br /&gt;
021A \0f&#039;\80&#039; (|)&lt;br /&gt;
&lt;br /&gt;
021B \0f\80\80 achieves &#039;\80&#039; status!&lt;br /&gt;
&lt;br /&gt;
021C \0f\80\80 of \80 achieves &#039;\80&#039; status!&lt;br /&gt;
&lt;br /&gt;
021D \98&lt;br /&gt;
&lt;br /&gt;
021E \94&lt;br /&gt;
&lt;br /&gt;
021F \88|&lt;br /&gt;
&lt;br /&gt;
0220 \98Create Scenario&lt;br /&gt;
&lt;br /&gt;
0221 \90Transport Tycoon&lt;br /&gt;
&lt;br /&gt;
0222 \90Scenario Editor&lt;br /&gt;
&lt;br /&gt;
0223 \94Land Generation&lt;br /&gt;
&lt;br /&gt;
0224 \98\a0&lt;br /&gt;
&lt;br /&gt;
0225 \98\aa&lt;br /&gt;
&lt;br /&gt;
0226 \98Random Land&lt;br /&gt;
&lt;br /&gt;
0227 \98Reset Land&lt;br /&gt;
&lt;br /&gt;
0228 \98Increase size of land area to lower/raise&lt;br /&gt;
&lt;br /&gt;
0229 \98Decrease size of land area to lower/raise&lt;br /&gt;
&lt;br /&gt;
022A \98Generate random land&lt;br /&gt;
&lt;br /&gt;
022B \98Reset landscape&lt;br /&gt;
&lt;br /&gt;
022C \94Reset Landscape&lt;br /&gt;
&lt;br /&gt;
022D \98Are you sure you want to reset the landscape?&lt;br /&gt;
&lt;br /&gt;
022E \98Landscape generation&lt;br /&gt;
&lt;br /&gt;
022F \98Town generation&lt;br /&gt;
&lt;br /&gt;
0230 \98Industry generation&lt;br /&gt;
&lt;br /&gt;
0231 \98Road construction&lt;br /&gt;
&lt;br /&gt;
0232 \98Vegetation and other objects&lt;br /&gt;
&lt;br /&gt;
0233 \94Town Generation&lt;br /&gt;
&lt;br /&gt;
0234 \98New Town&lt;br /&gt;
&lt;br /&gt;
0235 \98Construct new town&lt;br /&gt;
&lt;br /&gt;
0236 \94Can&#039;t build town here...&lt;br /&gt;
&lt;br /&gt;
0237 \94...too close to edge of map&lt;br /&gt;
&lt;br /&gt;
0238 \94...too close to another town&lt;br /&gt;
&lt;br /&gt;
0239 \94...site unsuitable&lt;br /&gt;
&lt;br /&gt;
023A \94...too many towns&lt;br /&gt;
&lt;br /&gt;
023B \98Increase size of town&lt;br /&gt;
&lt;br /&gt;
023C \98Expand&lt;br /&gt;
&lt;br /&gt;
023D \98Random Town&lt;br /&gt;
&lt;br /&gt;
023E \98Build town in random location&lt;br /&gt;
&lt;br /&gt;
023F \94Industry Generation&lt;br /&gt;
&lt;br /&gt;
0240 \98Coal Mine&lt;br /&gt;
&lt;br /&gt;
0241 \98Power Station&lt;br /&gt;
&lt;br /&gt;
0242 \98Sawmill&lt;br /&gt;
&lt;br /&gt;
0243 \98Forest&lt;br /&gt;
&lt;br /&gt;
0244 \98Oil Refinery&lt;br /&gt;
&lt;br /&gt;
0245 \98Oil Rig&lt;br /&gt;
&lt;br /&gt;
0246 \98Factory&lt;br /&gt;
&lt;br /&gt;
0247 \98Steel Mill&lt;br /&gt;
&lt;br /&gt;
0248 \98Farm&lt;br /&gt;
&lt;br /&gt;
0249 \98Iron Ore Mine&lt;br /&gt;
&lt;br /&gt;
024A \98Oil Wells&lt;br /&gt;
&lt;br /&gt;
024B \98Bank&lt;br /&gt;
&lt;br /&gt;
024C \98Paper Mill&lt;br /&gt;
&lt;br /&gt;
024D \98Food Processing Plant&lt;br /&gt;
&lt;br /&gt;
024E \98Printing Works&lt;br /&gt;
&lt;br /&gt;
024F \98Gold Mine&lt;br /&gt;
&lt;br /&gt;
0250 \98Lumber Mill&lt;br /&gt;
&lt;br /&gt;
0251 \98Fruit Plantation&lt;br /&gt;
&lt;br /&gt;
0252 \98Rubber Plantation&lt;br /&gt;
&lt;br /&gt;
0253 \98Water Supply&lt;br /&gt;
&lt;br /&gt;
0254 \98Water Tower&lt;br /&gt;
&lt;br /&gt;
0255 \98Diamond Mine&lt;br /&gt;
&lt;br /&gt;
0256 \98Copper Ore Mine&lt;br /&gt;
&lt;br /&gt;
0257 \98Candyfloss Forest&lt;br /&gt;
&lt;br /&gt;
0258 \98Sweet Factory&lt;br /&gt;
&lt;br /&gt;
0259 \98Battery Farm&lt;br /&gt;
&lt;br /&gt;
025A \98Cola Wells&lt;br /&gt;
&lt;br /&gt;
025B \98Toy Shop&lt;br /&gt;
&lt;br /&gt;
025C \98Toy Factory&lt;br /&gt;
&lt;br /&gt;
025D \98Plastic Fountains&lt;br /&gt;
&lt;br /&gt;
025E \98Fizzy Drink Factory&lt;br /&gt;
&lt;br /&gt;
025F \98Bubble Generator&lt;br /&gt;
&lt;br /&gt;
0260 \98Toffee Quarry&lt;br /&gt;
&lt;br /&gt;
0261 \98Sugar Mine&lt;br /&gt;
&lt;br /&gt;
0262 \98Construct Coal Mine&lt;br /&gt;
&lt;br /&gt;
0263 \98Construct Power Station&lt;br /&gt;
&lt;br /&gt;
0264 \98Construct Sawmill&lt;br /&gt;
&lt;br /&gt;
0265 \98Plant Forest&lt;br /&gt;
&lt;br /&gt;
0266 \98Construct Oil Refinery&lt;br /&gt;
&lt;br /&gt;
0267 \98Construct Oil Rig (Can only be built near the edges of the map)&lt;br /&gt;
&lt;br /&gt;
0268 \98Construct Factory&lt;br /&gt;
&lt;br /&gt;
0269 \98Construct Steel Mill&lt;br /&gt;
&lt;br /&gt;
026A \98Construct Farm&lt;br /&gt;
&lt;br /&gt;
026B \98Construct Iron Ore Mine&lt;br /&gt;
&lt;br /&gt;
026C \98Construct Oil Wells&lt;br /&gt;
&lt;br /&gt;
026D \98Construct Bank (Can only be built in towns with a population greater than 1200)&lt;br /&gt;
&lt;br /&gt;
026E \98Construct Paper Mill&lt;br /&gt;
&lt;br /&gt;
026F \98Construct Food Processing Plant&lt;br /&gt;
&lt;br /&gt;
0270 \98Construct Printing Works&lt;br /&gt;
&lt;br /&gt;
0271 \98Construct Gold Mine&lt;br /&gt;
&lt;br /&gt;
0272 \98Construct Bank (Can only be built in towns)&lt;br /&gt;
&lt;br /&gt;
0273 \98Construct Lumber Mill (to clear rainforest and produce Wood)&lt;br /&gt;
&lt;br /&gt;
0274 \98Plant Fruit Plantation&lt;br /&gt;
&lt;br /&gt;
0275 \98Plant Rubber Plantation&lt;br /&gt;
&lt;br /&gt;
0276 \98Construct Water Supply&lt;br /&gt;
&lt;br /&gt;
0277 \98Construct Water Tower (Can only be built in towns)&lt;br /&gt;
&lt;br /&gt;
0278 \98Construct Diamond Mine&lt;br /&gt;
&lt;br /&gt;
0279 \98Construct Copper Ore Mine&lt;br /&gt;
&lt;br /&gt;
027A \98Plant Candyfloss Forest&lt;br /&gt;
&lt;br /&gt;
027B \98Construct Sweet Factory&lt;br /&gt;
&lt;br /&gt;
027C \98Construct Battery Farm&lt;br /&gt;
&lt;br /&gt;
027D \98Construct Cola Wells&lt;br /&gt;
&lt;br /&gt;
027E \98Construct Toy Shop&lt;br /&gt;
&lt;br /&gt;
027F \98Construct Toy Factory&lt;br /&gt;
&lt;br /&gt;
0280 \98Construct Plastic Fountains&lt;br /&gt;
&lt;br /&gt;
0281 \98Construct Fizzy Drink Factory&lt;br /&gt;
&lt;br /&gt;
0282 \98Construct Bubble Generator&lt;br /&gt;
&lt;br /&gt;
0283 \98Construct Toffee Quarry&lt;br /&gt;
&lt;br /&gt;
0284 \98Construct Sugar Mine&lt;br /&gt;
&lt;br /&gt;
0285 \94Can&#039;t build \80 here...&lt;br /&gt;
&lt;br /&gt;
0286 \94...must build town first&lt;br /&gt;
&lt;br /&gt;
0287 \94...only one allowed per town&lt;br /&gt;
&lt;br /&gt;
0288 \98Plant trees&lt;br /&gt;
&lt;br /&gt;
0289 \98Place sign&lt;br /&gt;
&lt;br /&gt;
028A \98Random Trees&lt;br /&gt;
&lt;br /&gt;
028B \98Plant trees randomly over landscape&lt;br /&gt;
&lt;br /&gt;
028C \98Place rocky areas on landscape&lt;br /&gt;
&lt;br /&gt;
028D \98Place lighthouse&lt;br /&gt;
&lt;br /&gt;
028E \98Place transmitter&lt;br /&gt;
&lt;br /&gt;
028F \98Define desert area&lt;br /&gt;
&lt;br /&gt;
0290 \98Delete&lt;br /&gt;
&lt;br /&gt;
0291 \98Delete this town completely&lt;br /&gt;
&lt;br /&gt;
0292 Save scenario&lt;br /&gt;
&lt;br /&gt;
0293 Load scenario&lt;br /&gt;
&lt;br /&gt;
0294 Abandon editor&lt;br /&gt;
&lt;br /&gt;
0295&lt;br /&gt;
&lt;br /&gt;
0296 Quit to DOS&lt;br /&gt;
&lt;br /&gt;
0297 \98Save scenario,load scenario,abandon scenario editor,quit to DOS&lt;br /&gt;
&lt;br /&gt;
0298 \94Load Scenario&lt;br /&gt;
&lt;br /&gt;
0299 \94Save Scenario&lt;br /&gt;
&lt;br /&gt;
029A \98Play Scenario&lt;br /&gt;
&lt;br /&gt;
029B \90Are you sure you want to abandon this scenario ?&lt;br /&gt;
&lt;br /&gt;
029C \94Abandon Editor&lt;br /&gt;
&lt;br /&gt;
029D \94...can only be built in towns with a population of at least 1200&lt;br /&gt;
&lt;br /&gt;
029E \98Move the starting date backward 1 year&lt;br /&gt;
&lt;br /&gt;
029F \98Move the starting date forward 1 year&lt;br /&gt;
&lt;br /&gt;
02A0 \94...ends of bridge must both be on land&lt;br /&gt;
&lt;br /&gt;
02A1 \98Small&lt;br /&gt;
&lt;br /&gt;
02A2 \98Medium&lt;br /&gt;
&lt;br /&gt;
02A3 \98Large&lt;br /&gt;
&lt;br /&gt;
02A4 \98Select town size&lt;br /&gt;
&lt;br /&gt;
02A5 \90Town size:&lt;br /&gt;
&lt;br /&gt;
02A6 \94Message to Player 2&lt;br /&gt;
&lt;br /&gt;
02A7 \98Change Modem Initialisation String:&lt;br /&gt;
&lt;br /&gt;
02A8 \98Change Dial Number:&lt;br /&gt;
&lt;br /&gt;
02A9 \94Modem init. string:&lt;br /&gt;
&lt;br /&gt;
02AA \94Dial number:&lt;br /&gt;
&lt;br /&gt;
02AB \98Serial Port&lt;br /&gt;
&lt;br /&gt;
02AC COM1&lt;br /&gt;
&lt;br /&gt;
02AD COM2&lt;br /&gt;
&lt;br /&gt;
02AE COM3&lt;br /&gt;
&lt;br /&gt;
02AF COM4&lt;br /&gt;
&lt;br /&gt;
02B0 \98\80&lt;br /&gt;
&lt;br /&gt;
02B1 \98Baud Rate&lt;br /&gt;
&lt;br /&gt;
02B2 \98\85\80 baud&lt;br /&gt;
&lt;br /&gt;
02B3 9600&lt;br /&gt;
&lt;br /&gt;
02B4 14400&lt;br /&gt;
&lt;br /&gt;
02B5 19200&lt;br /&gt;
&lt;br /&gt;
02B6 \80 - \80&lt;br /&gt;
&lt;br /&gt;
02B7 \98Show last message or news report&lt;br /&gt;
&lt;br /&gt;
02B8 \98Summary&lt;br /&gt;
&lt;br /&gt;
02B9 \98Full&lt;br /&gt;
&lt;br /&gt;
02BA \89- - \80 - -&lt;br /&gt;
&lt;br /&gt;
02BB Town directory&lt;br /&gt;
&lt;br /&gt;
02BC \98Vehicle design names&lt;br /&gt;
&lt;br /&gt;
02BD \98\80&lt;br /&gt;
&lt;br /&gt;
02BE Default&lt;br /&gt;
&lt;br /&gt;
02BF Custom&lt;br /&gt;
&lt;br /&gt;
02C0 \98Save custom names to disk&lt;br /&gt;
&lt;br /&gt;
02C1 \98Vehicle design names selection&lt;br /&gt;
&lt;br /&gt;
02C2 \98Save customized vehicle design names to disk&lt;br /&gt;
&lt;br /&gt;
02C4 Game options&lt;br /&gt;
&lt;br /&gt;
02C6 Difficulty settings&lt;br /&gt;
&lt;br /&gt;
02C8&lt;br /&gt;
&lt;br /&gt;
02C9 \ac&lt;br /&gt;
&lt;br /&gt;
02CA \01\0cTown names displayed&lt;br /&gt;
&lt;br /&gt;
02CB \ac&lt;br /&gt;
&lt;br /&gt;
02CC \01\0cStation names displayed&lt;br /&gt;
&lt;br /&gt;
02CD \ac&lt;br /&gt;
&lt;br /&gt;
02CE \01\0cSigns displayed&lt;br /&gt;
&lt;br /&gt;
02CF \ac&lt;br /&gt;
&lt;br /&gt;
02D0 \01\0cFull animation&lt;br /&gt;
&lt;br /&gt;
02D1 \ac&lt;br /&gt;
&lt;br /&gt;
02D2 \01\0cFull detail&lt;br /&gt;
&lt;br /&gt;
02D3 \ac&lt;br /&gt;
&lt;br /&gt;
02D4 \01\0cTransparent buildings&lt;br /&gt;
&lt;br /&gt;
02D5 Query land block&lt;br /&gt;
&lt;br /&gt;
02D6&lt;br /&gt;
&lt;br /&gt;
02D7 ))ScreenShot[[]]ScreenShot[[ (Ctrl-S)&lt;br /&gt;
&lt;br /&gt;
02D8 Giant ))ScreenShot[[]]ScreenShot[[ (Ctrl-G)&lt;br /&gt;
&lt;br /&gt;
02D9 About &#039;Transport Tycoon&#039;&lt;br /&gt;
&lt;br /&gt;
02DA \98On&lt;br /&gt;
&lt;br /&gt;
02DB \98Off&lt;br /&gt;
&lt;br /&gt;
02DC \98Display subsidies&lt;br /&gt;
&lt;br /&gt;
02DD Subsidies&lt;br /&gt;
&lt;br /&gt;
02DE Map of world&lt;br /&gt;
&lt;br /&gt;
02DF Town directory&lt;br /&gt;
&lt;br /&gt;
02E0 \98Currency units&lt;br /&gt;
&lt;br /&gt;
02E1 \98\85\80&lt;br /&gt;
&lt;br /&gt;
02E2 \98Currency units selection&lt;br /&gt;
&lt;br /&gt;
02E3 \98Distance units&lt;br /&gt;
&lt;br /&gt;
02E4 \98\85\85\80&lt;br /&gt;
&lt;br /&gt;
02E5 \98Distance units selection&lt;br /&gt;
&lt;br /&gt;
02E6 \98Road vehicles&lt;br /&gt;
&lt;br /&gt;
02E7 \98\85\85\85\80&lt;br /&gt;
&lt;br /&gt;
02E8 \98Select side of road for vehicles to drive on&lt;br /&gt;
&lt;br /&gt;
02E9 Drive on left&lt;br /&gt;
&lt;br /&gt;
02EA Drive on right&lt;br /&gt;
&lt;br /&gt;
02EB \98Town names&lt;br /&gt;
&lt;br /&gt;
02EC \98\85\85\85\85\80&lt;br /&gt;
&lt;br /&gt;
02ED \98Select style of town names&lt;br /&gt;
&lt;br /&gt;
02EE English&lt;br /&gt;
&lt;br /&gt;
02EF French&lt;br /&gt;
&lt;br /&gt;
02F0 German&lt;br /&gt;
&lt;br /&gt;
02F1 American&lt;br /&gt;
&lt;br /&gt;
02F2 ))Latin-American[[]]Latin-American[[&lt;br /&gt;
&lt;br /&gt;
02F3 Silly&lt;br /&gt;
&lt;br /&gt;
02F4 \98Autosave&lt;br /&gt;
&lt;br /&gt;
02F5 \98\85\85\85\85\85\80&lt;br /&gt;
&lt;br /&gt;
02F6 \98Select interval between automatic game saves&lt;br /&gt;
&lt;br /&gt;
02F7 Off&lt;br /&gt;
&lt;br /&gt;
02F8 Every 3 months&lt;br /&gt;
&lt;br /&gt;
02F9 Every 6 months&lt;br /&gt;
&lt;br /&gt;
02FA Every 12 months&lt;br /&gt;
&lt;br /&gt;
02FB \98Start a new game&lt;br /&gt;
&lt;br /&gt;
02FC \98Load a saved game from disk&lt;br /&gt;
&lt;br /&gt;
02FD \98View demonstrations/tutorials&lt;br /&gt;
&lt;br /&gt;
02FE \98Create a customized game world/scenario&lt;br /&gt;
&lt;br /&gt;
02FF \98Select single-player game&lt;br /&gt;
&lt;br /&gt;
0300 \98Select two-player game&lt;br /&gt;
&lt;br /&gt;
0301 \98Display game options&lt;br /&gt;
&lt;br /&gt;
0302 \98Display difficulty options&lt;br /&gt;
&lt;br /&gt;
0303 \98Start a new game,using a customized scenario&lt;br /&gt;
&lt;br /&gt;
0304 \98Quit to DOS&lt;br /&gt;
&lt;br /&gt;
0305 \98Leave &#039;Transport Tycoon&#039;,and quit to DOS&lt;br /&gt;
&lt;br /&gt;
0306 \98View demonstration/tutorial&lt;br /&gt;
&lt;br /&gt;
0307 \94Transport Tycoon (Deluxe)&lt;br /&gt;
&lt;br /&gt;
0308 \98Select serial port to be used for direct or modem connection&lt;br /&gt;
&lt;br /&gt;
0309 \98Select serial port speed for direct or modem connection&lt;br /&gt;
&lt;br /&gt;
030A \98Attempt to connect to second computer for 2 player game&lt;br /&gt;
&lt;br /&gt;
030B \98Change the modem initialisation string&lt;br /&gt;
&lt;br /&gt;
030C \98Set the number to be dialled by the modem&lt;br /&gt;
&lt;br /&gt;
030D \94...can only be built in towns&lt;br /&gt;
&lt;br /&gt;
030E \98Select &#039;temperate&#039; landscape style&lt;br /&gt;
&lt;br /&gt;
030F \98Select &#039;sub-arctic&#039; landscape style&lt;br /&gt;
&lt;br /&gt;
0310 \98Select &#039;sub-tropical&#039; landscape style&lt;br /&gt;
&lt;br /&gt;
0311 \98Select &#039;toyland&#039; landscape style&lt;br /&gt;
&lt;br /&gt;
0312 \98Fund construction of new industry&lt;br /&gt;
&lt;br /&gt;
0313 Fund new industry&lt;br /&gt;
&lt;br /&gt;
0314 \94Fund new industry&lt;br /&gt;
&lt;br /&gt;
0315 \80&lt;br /&gt;
&lt;br /&gt;
0316 \94...can only be built in towns&lt;br /&gt;
&lt;br /&gt;
0317 \94...can only be built in rainforest areas&lt;br /&gt;
&lt;br /&gt;
0318 \94...can only be built in desert areas&lt;br /&gt;
&lt;br /&gt;
0319 \90* * PAUSED * *&lt;br /&gt;
&lt;br /&gt;
031A SCR|.PCX&lt;br /&gt;
&lt;br /&gt;
031B \94Screenshot successfully saved to disk as &#039;\80&#039;&lt;br /&gt;
&lt;br /&gt;
031C \94Screenshot failed!&lt;br /&gt;
&lt;br /&gt;
031D \98Link method&lt;br /&gt;
&lt;br /&gt;
031E \98\85\85\80&lt;br /&gt;
&lt;br /&gt;
031F \98Select communications link method for 2-player game&lt;br /&gt;
&lt;br /&gt;
0320 Serial cable (sender)&lt;br /&gt;
&lt;br /&gt;
0321 Serial cable (receiver)&lt;br /&gt;
&lt;br /&gt;
0322 Modem (send/dial)&lt;br /&gt;
&lt;br /&gt;
0323 Modem (receive)&lt;br /&gt;
&lt;br /&gt;
0324 Network - IPX protocol (sender)&lt;br /&gt;
&lt;br /&gt;
0325 Network - IPX protocol (receiver)&lt;br /&gt;
&lt;br /&gt;
0329 \98Purchase land for future use&lt;br /&gt;
&lt;br /&gt;
032A \981: Road vehicle service&lt;br /&gt;
&lt;br /&gt;
032B \982: Railway service&lt;br /&gt;
&lt;br /&gt;
032C \983: Air service&lt;br /&gt;
&lt;br /&gt;
032D \984: Ship service&lt;br /&gt;
&lt;br /&gt;
032E \985: Railway service (advanced)&lt;br /&gt;
&lt;br /&gt;
032F \8bAUTOSAVE&lt;br /&gt;
&lt;br /&gt;
0330 \98Select &#039;Ezy Street style music&#039; program&lt;br /&gt;
&lt;br /&gt;
0331 \94...IPX driver not found&lt;br /&gt;
&lt;br /&gt;
0332 \94...not enough free base memory for network buffers&lt;br /&gt;
&lt;br /&gt;
0333 \94...unable to open an IPX socket&lt;br /&gt;
&lt;br /&gt;
0334 \94Connection successful!\0d\0dGames now linked!&lt;br /&gt;
&lt;br /&gt;
=0800 Basic land strings=&lt;br /&gt;
&lt;br /&gt;
0800 \0e&lt;br /&gt;
&lt;br /&gt;
0801 \8bCost: \7f&lt;br /&gt;
&lt;br /&gt;
0802 \0e&lt;br /&gt;
&lt;br /&gt;
0803 \8fIncome: \7f&lt;br /&gt;
&lt;br /&gt;
0804 \0e&lt;br /&gt;
&lt;br /&gt;
0805 \94Estimated Cost: \7f&lt;br /&gt;
&lt;br /&gt;
0806 \0e&lt;br /&gt;
&lt;br /&gt;
0807 \94Estimated Income: \7f&lt;br /&gt;
&lt;br /&gt;
0808 \94Can&#039;t raise land here...&lt;br /&gt;
&lt;br /&gt;
0809 \94Can&#039;t lower land here...&lt;br /&gt;
&lt;br /&gt;
080A Rocks&lt;br /&gt;
&lt;br /&gt;
080B Rough land&lt;br /&gt;
&lt;br /&gt;
080C Bare land&lt;br /&gt;
&lt;br /&gt;
080D Grass&lt;br /&gt;
&lt;br /&gt;
080E Fields&lt;br /&gt;
&lt;br /&gt;
080F Snow-covered land&lt;br /&gt;
&lt;br /&gt;
0810 Desert&lt;br /&gt;
&lt;br /&gt;
=1000 Railroad strings=&lt;br /&gt;
&lt;br /&gt;
1000 \94Land sloped in wrong direction&lt;br /&gt;
&lt;br /&gt;
1001 \94Impossible track combination&lt;br /&gt;
&lt;br /&gt;
1002 \94Excavation would damage tunnel&lt;br /&gt;
&lt;br /&gt;
1003 \94Already at sea-level&lt;br /&gt;
&lt;br /&gt;
1004 \94Too high&lt;br /&gt;
&lt;br /&gt;
1005 \94No suitable railway track&lt;br /&gt;
&lt;br /&gt;
1006 \94Train inside depot&lt;br /&gt;
&lt;br /&gt;
1007 \94...already built&lt;br /&gt;
&lt;br /&gt;
1008 \94Must remove railway track first&lt;br /&gt;
&lt;br /&gt;
1009 \94Too many depots&lt;br /&gt;
&lt;br /&gt;
100A \94Railway Construction&lt;br /&gt;
&lt;br /&gt;
100B \94Monorail Construction&lt;br /&gt;
&lt;br /&gt;
100C \94MagLev Construction&lt;br /&gt;
&lt;br /&gt;
100D \94Select Rail Bridge&lt;br /&gt;
&lt;br /&gt;
100E \94Can&#039;t build train depot here...&lt;br /&gt;
&lt;br /&gt;
100F \94Can&#039;t build railway station here...&lt;br /&gt;
&lt;br /&gt;
1010 \94Can&#039;t build signals here...&lt;br /&gt;
&lt;br /&gt;
1011 \94Can&#039;t build railway track here...&lt;br /&gt;
&lt;br /&gt;
1012 \94Can&#039;t remove railway track from here...&lt;br /&gt;
&lt;br /&gt;
1013 \94Can&#039;t remove signals from here...&lt;br /&gt;
&lt;br /&gt;
1014 \94Train Depot Orientation&lt;br /&gt;
&lt;br /&gt;
1015 Railway construction&lt;br /&gt;
&lt;br /&gt;
1016 Monorail construction&lt;br /&gt;
&lt;br /&gt;
1017 ))MagLev[[]]MagLev[[ construction&lt;br /&gt;
&lt;br /&gt;
1018 \98Build railway track&lt;br /&gt;
&lt;br /&gt;
1019 \98Build train depot (for building and servicing trains)&lt;br /&gt;
&lt;br /&gt;
101A \98Build railway station&lt;br /&gt;
&lt;br /&gt;
101B \98Build railway signals&lt;br /&gt;
&lt;br /&gt;
101C \98Build railway bridge&lt;br /&gt;
&lt;br /&gt;
101D \98Build railway tunnel&lt;br /&gt;
&lt;br /&gt;
101E \98Toggle build/remove for railway track and signals&lt;br /&gt;
&lt;br /&gt;
101F \98Bridge selection - click on selected bridge to build it&lt;br /&gt;
&lt;br /&gt;
1020 \98Select rail depot orientation&lt;br /&gt;
&lt;br /&gt;
1021 Railway track&lt;br /&gt;
&lt;br /&gt;
1022 Railway track with signals&lt;br /&gt;
&lt;br /&gt;
1023 Railway train depot&lt;br /&gt;
&lt;br /&gt;
1024 \94...area is owned by another company&lt;br /&gt;
&lt;br /&gt;
=1800 Road strings=&lt;br /&gt;
&lt;br /&gt;
1800 \94Land sloped in wrong direction for road&lt;br /&gt;
&lt;br /&gt;
1801 \94Must remove road first&lt;br /&gt;
&lt;br /&gt;
1802 \94Road Construction&lt;br /&gt;
&lt;br /&gt;
1803 \94Select Road Bridge&lt;br /&gt;
&lt;br /&gt;
1804 \94Can&#039;t build road here...&lt;br /&gt;
&lt;br /&gt;
1805 \94Can&#039;t remove road from here...&lt;br /&gt;
&lt;br /&gt;
1806 \94Road Depot Orientation&lt;br /&gt;
&lt;br /&gt;
1807 \94Can&#039;t build road vehicle depot here...&lt;br /&gt;
&lt;br /&gt;
1808 \94Can&#039;t build bus station...&lt;br /&gt;
&lt;br /&gt;
1809 \94Can&#039;t build lorry station...&lt;br /&gt;
&lt;br /&gt;
180A Road construction&lt;br /&gt;
&lt;br /&gt;
180B \98Build road section&lt;br /&gt;
&lt;br /&gt;
180C \98Build road vehicle depot (for building and servicing vehicles)&lt;br /&gt;
&lt;br /&gt;
180D \98Build bus station&lt;br /&gt;
&lt;br /&gt;
180E \98Build lorry loading bay&lt;br /&gt;
&lt;br /&gt;
180F \98Build road bridge&lt;br /&gt;
&lt;br /&gt;
1810 \98Build road tunnel&lt;br /&gt;
&lt;br /&gt;
1811 \98Toggle build/remove for road construction&lt;br /&gt;
&lt;br /&gt;
1812 \98Bridge selection - click on selected bridge to build it&lt;br /&gt;
&lt;br /&gt;
1813 \98Select road vehicle depot orientation&lt;br /&gt;
&lt;br /&gt;
1814 Road&lt;br /&gt;
&lt;br /&gt;
1815 Road with streetlights&lt;br /&gt;
&lt;br /&gt;
1816 Tree-lined road&lt;br /&gt;
&lt;br /&gt;
1817 Road vehicle depot&lt;br /&gt;
&lt;br /&gt;
1818 Road/rail level crossing&lt;br /&gt;
&lt;br /&gt;
=2000 Town strings=&lt;br /&gt;
&lt;br /&gt;
2000 \94Towns&lt;br /&gt;
&lt;br /&gt;
2001 \94\80&lt;br /&gt;
&lt;br /&gt;
2002 \0e\98\80&lt;br /&gt;
&lt;br /&gt;
2003 \0e\94\80&lt;br /&gt;
&lt;br /&gt;
2004 \94Building must be demolished first&lt;br /&gt;
&lt;br /&gt;
2005 \94\80&lt;br /&gt;
&lt;br /&gt;
2006 \98Population: \8e{&lt;br /&gt;
&lt;br /&gt;
2007 Rename Town&lt;br /&gt;
&lt;br /&gt;
2008 \94Can&#039;t rename town...&lt;br /&gt;
&lt;br /&gt;
2009 \94\80 local authority refuses to allow this&lt;br /&gt;
&lt;br /&gt;
200A \98Town names - click on name to centre main view on town&lt;br /&gt;
&lt;br /&gt;
200B \98Centre the main view on town location&lt;br /&gt;
&lt;br /&gt;
200C \98Change town name&lt;br /&gt;
&lt;br /&gt;
200D \98Passengers last month: \8e|\98 max: \8e|&lt;br /&gt;
&lt;br /&gt;
200E \98Mail last month: \8e|\98 max: \8e|&lt;br /&gt;
&lt;br /&gt;
200F Tall office block&lt;br /&gt;
&lt;br /&gt;
2010 Office block&lt;br /&gt;
&lt;br /&gt;
2011 Small block of flats&lt;br /&gt;
&lt;br /&gt;
2012 Church&lt;br /&gt;
&lt;br /&gt;
2013 Large office block&lt;br /&gt;
&lt;br /&gt;
2014 Town houses&lt;br /&gt;
&lt;br /&gt;
2015 Hotel&lt;br /&gt;
&lt;br /&gt;
2016 Statue&lt;br /&gt;
&lt;br /&gt;
2017 Fountain&lt;br /&gt;
&lt;br /&gt;
2018 Park&lt;br /&gt;
&lt;br /&gt;
2019 Office block&lt;br /&gt;
&lt;br /&gt;
201A Shops and offices&lt;br /&gt;
&lt;br /&gt;
201B Modern office building&lt;br /&gt;
&lt;br /&gt;
201C Warehouse&lt;br /&gt;
&lt;br /&gt;
201D Office block&lt;br /&gt;
&lt;br /&gt;
201E Stadium&lt;br /&gt;
&lt;br /&gt;
201F Old houses&lt;br /&gt;
&lt;br /&gt;
2020 \98Local authority&lt;br /&gt;
&lt;br /&gt;
2021 \98Show information on local authority&lt;br /&gt;
&lt;br /&gt;
2022 \94\80 local authority&lt;br /&gt;
&lt;br /&gt;
2023 \98Transport company ratings:&lt;br /&gt;
&lt;br /&gt;
2024 \90\80\80: \8e\80&lt;br /&gt;
&lt;br /&gt;
2025 \94Subsidies&lt;br /&gt;
&lt;br /&gt;
2026 \98Subsidies on offer for services taking:-&lt;br /&gt;
&lt;br /&gt;
2027 \8e\80 from \80 to \80&lt;br /&gt;
&lt;br /&gt;
2028 \90 (by \83)&lt;br /&gt;
&lt;br /&gt;
2029 \80 \80&lt;br /&gt;
&lt;br /&gt;
202A \8eNone&lt;br /&gt;
&lt;br /&gt;
202B \98Services already subsidised:-&lt;br /&gt;
&lt;br /&gt;
202C \8e\80 from \80 to \80\90 (\80&lt;br /&gt;
&lt;br /&gt;
202D \90,until \83)&lt;br /&gt;
&lt;br /&gt;
202E \98\0fOffer of subsidy expired:\0d\0d\80 from \80 to \80 will now not attract a subsidy.&lt;br /&gt;
&lt;br /&gt;
202F \98\0fSubsidy withdrawn:\0d\0d\80 service from \80 to \80 is no longer subsidised.&lt;br /&gt;
&lt;br /&gt;
2030 \98\0fService subsidy offered:\0d\0dFirst \80 service from \80 to \80 will attract a year&#039;s subsidy from the local authority!&lt;br /&gt;
&lt;br /&gt;
2031 \98\0fService subsidy awarded to \80!\0d\0d\80 service from \80 to \80 will pay 50% extra for the next year!&lt;br /&gt;
&lt;br /&gt;
2032 \98\0fService subsidy awarded to \80!\0d\0d\80 service from \80 to \80 will pay double rates for the next year!&lt;br /&gt;
&lt;br /&gt;
2033 \98\0fService subsidy awarded to \80!\0d\0d\80 service from \80 to \80 will pay triple rates for the next year!&lt;br /&gt;
&lt;br /&gt;
2034 \98\0fService subsidy awarded to \80!\0d\0d\80 service from \80 to \80 will pay quadruple rates for the next year!&lt;br /&gt;
&lt;br /&gt;
2035 \94\80 local authority refuses to allow another airport to be built in this town&lt;br /&gt;
&lt;br /&gt;
2036 Cottages&lt;br /&gt;
&lt;br /&gt;
2037 Houses&lt;br /&gt;
&lt;br /&gt;
2038 Flats&lt;br /&gt;
&lt;br /&gt;
2039 Tall office block&lt;br /&gt;
&lt;br /&gt;
203A Shops and offices&lt;br /&gt;
&lt;br /&gt;
203B Shops and offices&lt;br /&gt;
&lt;br /&gt;
203C Theatre&lt;br /&gt;
&lt;br /&gt;
203D Stadium&lt;br /&gt;
&lt;br /&gt;
203E Offices&lt;br /&gt;
&lt;br /&gt;
203F Houses&lt;br /&gt;
&lt;br /&gt;
2040 Cinema&lt;br /&gt;
&lt;br /&gt;
2041 Shopping mall&lt;br /&gt;
&lt;br /&gt;
2042 \98Do it&lt;br /&gt;
&lt;br /&gt;
2043 \98List of things to do at this town - click on item for more details&lt;br /&gt;
&lt;br /&gt;
2044 \98Carry out the highlighted action in the list above&lt;br /&gt;
&lt;br /&gt;
2045 \98Actions available:&lt;br /&gt;
&lt;br /&gt;
2046 Small advertising campaign&lt;br /&gt;
&lt;br /&gt;
2047 Medium advertising campaign&lt;br /&gt;
&lt;br /&gt;
2048 Large advertising campaign&lt;br /&gt;
&lt;br /&gt;
2049 Fund local road reconstruction&lt;br /&gt;
&lt;br /&gt;
204A Build statue of company owner&lt;br /&gt;
&lt;br /&gt;
204B Fund new buildings&lt;br /&gt;
&lt;br /&gt;
204C Buy exclusive transport rights&lt;br /&gt;
&lt;br /&gt;
204D \94\80\0d\90 Initiate a small local advertising campaign,to attract more passengers and cargo to your transport services.\0d Cost: \7f&lt;br /&gt;
&lt;br /&gt;
204E \94\80\0d\90 Initiate a medium local advertising campaign,to attract more passengers and cargo to your transport services.\0d Cost: \7f&lt;br /&gt;
&lt;br /&gt;
204F \94\80\0d\90 Initiate a large local advertising campaign,to attract more passengers and cargo to your transport services.\0d Cost: \7f&lt;br /&gt;
&lt;br /&gt;
2050 \94\80\0d\90 Fund the reconstruction of the urban road network. Causes considerable disruption to road traffic for up to 6 months.\0d Cost: \7f&lt;br /&gt;
&lt;br /&gt;
2051 \94\80\0d\90 Build a statue in honour of your company.\0d Cost: \7f&lt;br /&gt;
&lt;br /&gt;
2052 \94\80\0d\90 Fund the construction of new commercial buildings in the town.\0d Cost: \7f&lt;br /&gt;
&lt;br /&gt;
2053 \94\80\0d\90 Buy 1 year&#039;s exclusive transport rights in town. Town authority will only allow passengers and cargo to use your company&#039;s stations.\0d Cost: \7f&lt;br /&gt;
&lt;br /&gt;
2054 \94Can&#039;t do this...&lt;br /&gt;
&lt;br /&gt;
2055 \0f\98Traffic chaos in \80!\0d\0dRoad rebuilding programme funded by \80 brings 6 months of misery to motorists!&lt;br /&gt;
&lt;br /&gt;
2056 \0e\94\80&lt;br /&gt;
&lt;br /&gt;
2057 \8e\80\98 &amp;amp;nbsp;({)&lt;br /&gt;
&lt;br /&gt;
2058 \80 (under construction)&lt;br /&gt;
&lt;br /&gt;
2059 Igloo&lt;br /&gt;
&lt;br /&gt;
205A Tepees&lt;br /&gt;
&lt;br /&gt;
205B ))Teapot-House[[]]Teapot-House[[&lt;br /&gt;
&lt;br /&gt;
205C ))Piggy-Bank[[]]Piggy-Bank[[&lt;br /&gt;
&lt;br /&gt;
=2800 Tree strings=&lt;br /&gt;
&lt;br /&gt;
2800 Plant trees&lt;br /&gt;
&lt;br /&gt;
2801 Place sign&lt;br /&gt;
&lt;br /&gt;
2802 \94Trees&lt;br /&gt;
&lt;br /&gt;
2803 \94...tree already here&lt;br /&gt;
&lt;br /&gt;
2804 \94...site unsuitable&lt;br /&gt;
&lt;br /&gt;
2805 \94Can&#039;t plant tree here...&lt;br /&gt;
&lt;br /&gt;
2806 \94\80&lt;br /&gt;
&lt;br /&gt;
2807 \0e\94\80&lt;br /&gt;
&lt;br /&gt;
2808 \94...too many signs&lt;br /&gt;
&lt;br /&gt;
2809 \94Can&#039;t place sign here...&lt;br /&gt;
&lt;br /&gt;
280A Sign&lt;br /&gt;
&lt;br /&gt;
280B \94Edit sign text&lt;br /&gt;
&lt;br /&gt;
280C \94Can&#039;t change sign name...&lt;br /&gt;
&lt;br /&gt;
280D \98Select tree type to plant&lt;br /&gt;
&lt;br /&gt;
280E Trees&lt;br /&gt;
&lt;br /&gt;
280F Rainforest&lt;br /&gt;
&lt;br /&gt;
2810 Cactus Plants&lt;br /&gt;
&lt;br /&gt;
=3000 Station strings=&lt;br /&gt;
&lt;br /&gt;
3000 \94Rail Station Selection&lt;br /&gt;
&lt;br /&gt;
3001 \94Airport Selection&lt;br /&gt;
&lt;br /&gt;
3002 \98Orientation&lt;br /&gt;
&lt;br /&gt;
3003 \98Number of tracks&lt;br /&gt;
&lt;br /&gt;
3004 \98Platform length&lt;br /&gt;
&lt;br /&gt;
3005 \94Too close to another railway station&lt;br /&gt;
&lt;br /&gt;
3006 \94Adjoins more than one existing station/loading area&lt;br /&gt;
&lt;br /&gt;
3007 \94Too many stations/loading areas in this town&lt;br /&gt;
&lt;br /&gt;
3008 \94Too many stations/loading areas&lt;br /&gt;
&lt;br /&gt;
3009 \94Too close to another station/loading area&lt;br /&gt;
&lt;br /&gt;
300A \94\80 \81\d10&lt;br /&gt;
&lt;br /&gt;
300B \94Must demolish railway station first&lt;br /&gt;
&lt;br /&gt;
300C&lt;br /&gt;
&lt;br /&gt;
300D \94Too close to another airport&lt;br /&gt;
&lt;br /&gt;
300E \94Must demolish airport first&lt;br /&gt;
&lt;br /&gt;
300F \80&lt;br /&gt;
&lt;br /&gt;
3010 \80 North&lt;br /&gt;
&lt;br /&gt;
3011 \80 South&lt;br /&gt;
&lt;br /&gt;
3012 \80 East&lt;br /&gt;
&lt;br /&gt;
3013 \80 West&lt;br /&gt;
&lt;br /&gt;
3014 \80 Central&lt;br /&gt;
&lt;br /&gt;
3015 \80 Transfer&lt;br /&gt;
&lt;br /&gt;
3016 \80 Halt&lt;br /&gt;
&lt;br /&gt;
3017 \80 Valley&lt;br /&gt;
&lt;br /&gt;
3018 \80 Heights&lt;br /&gt;
&lt;br /&gt;
3019 \80 Woods&lt;br /&gt;
&lt;br /&gt;
301A \80 Lakeside&lt;br /&gt;
&lt;br /&gt;
301B \80 Exchange&lt;br /&gt;
&lt;br /&gt;
301C \80 Airport&lt;br /&gt;
&lt;br /&gt;
301D \80 Oilfield&lt;br /&gt;
&lt;br /&gt;
301E \80 Mines&lt;br /&gt;
&lt;br /&gt;
301F \80 Docks&lt;br /&gt;
&lt;br /&gt;
3020 \80 Buoy 1&lt;br /&gt;
&lt;br /&gt;
3021 \80 Buoy 2&lt;br /&gt;
&lt;br /&gt;
3022 \80 Buoy 3&lt;br /&gt;
&lt;br /&gt;
3023 \80 Buoy 4&lt;br /&gt;
&lt;br /&gt;
3024 \80 Buoy 5&lt;br /&gt;
&lt;br /&gt;
3025 \80 Buoy 6&lt;br /&gt;
&lt;br /&gt;
3026 \80 Buoy 7&lt;br /&gt;
&lt;br /&gt;
3027 \80 Buoy 8&lt;br /&gt;
&lt;br /&gt;
3028 \80 Buoy 9&lt;br /&gt;
&lt;br /&gt;
3029 \80 Annexe&lt;br /&gt;
&lt;br /&gt;
302A \80 Sidings&lt;br /&gt;
&lt;br /&gt;
302B \80 Branch&lt;br /&gt;
&lt;br /&gt;
302C Upper \80&lt;br /&gt;
&lt;br /&gt;
302D Lower \80&lt;br /&gt;
&lt;br /&gt;
302E \80 Heliport&lt;br /&gt;
&lt;br /&gt;
302F \80 Forest&lt;br /&gt;
&lt;br /&gt;
3030 Rename station/loading area&lt;br /&gt;
&lt;br /&gt;
3031 \94Can&#039;t rename station...&lt;br /&gt;
&lt;br /&gt;
3032 \98Ratings&lt;br /&gt;
&lt;br /&gt;
3033 \98Accepts&lt;br /&gt;
&lt;br /&gt;
3034 \98Local rating of transport service:&lt;br /&gt;
&lt;br /&gt;
3035 Appalling&lt;br /&gt;
&lt;br /&gt;
3036 Very Poor&lt;br /&gt;
&lt;br /&gt;
3037 Poor&lt;br /&gt;
&lt;br /&gt;
3038 Mediocre&lt;br /&gt;
&lt;br /&gt;
3039 Good&lt;br /&gt;
&lt;br /&gt;
303A Very Good&lt;br /&gt;
&lt;br /&gt;
303B Excellent&lt;br /&gt;
&lt;br /&gt;
303C Outstanding&lt;br /&gt;
&lt;br /&gt;
303D \94\80: \90\80 (}%)&lt;br /&gt;
&lt;br /&gt;
303E \94\80 no longer accepts \80&lt;br /&gt;
&lt;br /&gt;
303F \94\80 no longer accepts \80 or \80&lt;br /&gt;
&lt;br /&gt;
3040 \94\80 now accepts \80&lt;br /&gt;
&lt;br /&gt;
3041 \94\80 now accepts \80 and \80&lt;br /&gt;
&lt;br /&gt;
3042 \94Bus Station Orientation&lt;br /&gt;
&lt;br /&gt;
3043 \94Lorry Station Orient.&lt;br /&gt;
&lt;br /&gt;
3044 \94Too close to another bus station&lt;br /&gt;
&lt;br /&gt;
3045 \94Too close to another lorry station&lt;br /&gt;
&lt;br /&gt;
3046 \94Must demolish bus station first&lt;br /&gt;
&lt;br /&gt;
3047 \94Must demolish lorry station first&lt;br /&gt;
&lt;br /&gt;
3048 \94\80 - Stations&lt;br /&gt;
&lt;br /&gt;
3049 \90\80 \81\d10&lt;br /&gt;
&lt;br /&gt;
304A \90- None -&lt;br /&gt;
&lt;br /&gt;
304B \94...site unsuitable&lt;br /&gt;
&lt;br /&gt;
304C \94Too close to another dock&lt;br /&gt;
&lt;br /&gt;
304D \94Must demolish dock first&lt;br /&gt;
&lt;br /&gt;
304E \98Select railway station orientation&lt;br /&gt;
&lt;br /&gt;
304F \98Select number of platforms for railway station&lt;br /&gt;
&lt;br /&gt;
3050 \98Select length of railway station&lt;br /&gt;
&lt;br /&gt;
3051 \98Select bus station orientation&lt;br /&gt;
&lt;br /&gt;
3052 \98Select lorry loading bay orientation&lt;br /&gt;
&lt;br /&gt;
3053 \98Centre main view on station location&lt;br /&gt;
&lt;br /&gt;
3054 \98Show station ratings&lt;br /&gt;
&lt;br /&gt;
3055 \98Change name of station&lt;br /&gt;
&lt;br /&gt;
3056 \98Show list of accepted cargo&lt;br /&gt;
&lt;br /&gt;
3057 \98Station names - click on name to centre main view on station&lt;br /&gt;
&lt;br /&gt;
3058 \98Select size/type of airport&lt;br /&gt;
&lt;br /&gt;
3059 \98Small&lt;br /&gt;
&lt;br /&gt;
305A \98Large&lt;br /&gt;
&lt;br /&gt;
305B \98Size&lt;br /&gt;
&lt;br /&gt;
305C \98\80 \81\d10&lt;br /&gt;
&lt;br /&gt;
305D \0e\98\80 \81\d10&lt;br /&gt;
&lt;br /&gt;
305E Railway station&lt;br /&gt;
&lt;br /&gt;
305F Aircraft hangar&lt;br /&gt;
&lt;br /&gt;
3060 Airport&lt;br /&gt;
&lt;br /&gt;
3061 Lorry loading area&lt;br /&gt;
&lt;br /&gt;
3062 Bus station&lt;br /&gt;
&lt;br /&gt;
3063 Ship dock&lt;br /&gt;
&lt;br /&gt;
3064 \98Highlight catchment area of proposed site&lt;br /&gt;
&lt;br /&gt;
3065 \98Don&#039;t highlight catchment area of proposed site&lt;br /&gt;
&lt;br /&gt;
3066 \98Catchment area highlight&lt;br /&gt;
&lt;br /&gt;
3067 \94Monorail Station Select.&lt;br /&gt;
&lt;br /&gt;
3068 \94Dock&lt;br /&gt;
&lt;br /&gt;
3069 Buoy&lt;br /&gt;
&lt;br /&gt;
306A \94...buoy in the way&lt;br /&gt;
&lt;br /&gt;
306B \98Heliport&lt;br /&gt;
&lt;br /&gt;
306C \94...station too spread out&lt;br /&gt;
&lt;br /&gt;
=3800 Water strings=&lt;br /&gt;
&lt;br /&gt;
3800 \94Ship Depot Orientation&lt;br /&gt;
&lt;br /&gt;
3801 \94...must be built on water&lt;br /&gt;
&lt;br /&gt;
3802 \94Can&#039;t build ship depot here...&lt;br /&gt;
&lt;br /&gt;
3803 \98Select ship depot orientation&lt;br /&gt;
&lt;br /&gt;
3804 Water&lt;br /&gt;
&lt;br /&gt;
3805 Coast or riverbank&lt;br /&gt;
&lt;br /&gt;
3806 Ship depot&lt;br /&gt;
&lt;br /&gt;
3807 \94...Can&#039;t build on water&lt;br /&gt;
&lt;br /&gt;
=4000 Load/save strings=&lt;br /&gt;
&lt;br /&gt;
4000 \94Save Game&lt;br /&gt;
&lt;br /&gt;
4001 \94Load Game&lt;br /&gt;
&lt;br /&gt;
4002 \98Save&lt;br /&gt;
&lt;br /&gt;
4003 \98Delete&lt;br /&gt;
&lt;br /&gt;
4004 \80, \82&lt;br /&gt;
&lt;br /&gt;
4005 \98{ bytes free&lt;br /&gt;
&lt;br /&gt;
4006 \98Unable to read drive&lt;br /&gt;
&lt;br /&gt;
4007 \94Game Save Failed&lt;br /&gt;
&lt;br /&gt;
4008 \94Unable to delete file&lt;br /&gt;
&lt;br /&gt;
4009 \94Game Load Failed&lt;br /&gt;
&lt;br /&gt;
400A \98List of drives,directories and saved-game files&lt;br /&gt;
&lt;br /&gt;
400B \98Currently selected name for saved-game&lt;br /&gt;
&lt;br /&gt;
400C \98Delete the currently selected saved-game&lt;br /&gt;
&lt;br /&gt;
400D \98Save the current game,using the selected name&lt;br /&gt;
&lt;br /&gt;
400E \94Select New Game Type&lt;br /&gt;
&lt;br /&gt;
400F \98Select scenario (green),pre-set game (blue),or random new game&lt;br /&gt;
&lt;br /&gt;
4010 Generate random new game&lt;br /&gt;
&lt;br /&gt;
=4800 Industry strings=&lt;br /&gt;
&lt;br /&gt;
4800 \94\80 in the way&lt;br /&gt;
&lt;br /&gt;
4801 \94\80 \80&lt;br /&gt;
&lt;br /&gt;
4802 Coal Mine&lt;br /&gt;
&lt;br /&gt;
4803 Power Station&lt;br /&gt;
&lt;br /&gt;
4804 Sawmill&lt;br /&gt;
&lt;br /&gt;
4805 Forest&lt;br /&gt;
&lt;br /&gt;
4806 Oil Refinery&lt;br /&gt;
&lt;br /&gt;
4807 Oil Rig&lt;br /&gt;
&lt;br /&gt;
4808 Factory&lt;br /&gt;
&lt;br /&gt;
4809 Printing Works&lt;br /&gt;
&lt;br /&gt;
480A Steel Mill&lt;br /&gt;
&lt;br /&gt;
480B Farm&lt;br /&gt;
&lt;br /&gt;
480C Copper Ore Mine&lt;br /&gt;
&lt;br /&gt;
480D Oil Wells&lt;br /&gt;
&lt;br /&gt;
480E Bank&lt;br /&gt;
&lt;br /&gt;
480F Food Processing Plant&lt;br /&gt;
&lt;br /&gt;
4810 Paper Mill&lt;br /&gt;
&lt;br /&gt;
4811 Gold Mine&lt;br /&gt;
&lt;br /&gt;
4812 Bank&lt;br /&gt;
&lt;br /&gt;
4813 Diamond Mine&lt;br /&gt;
&lt;br /&gt;
4814 Iron Ore Mine&lt;br /&gt;
&lt;br /&gt;
4815 Fruit Plantation&lt;br /&gt;
&lt;br /&gt;
4816 Rubber Plantation&lt;br /&gt;
&lt;br /&gt;
4817 Water Supply&lt;br /&gt;
&lt;br /&gt;
4818 Water Tower&lt;br /&gt;
&lt;br /&gt;
4819 Factory&lt;br /&gt;
&lt;br /&gt;
481A Farm&lt;br /&gt;
&lt;br /&gt;
481B Lumber Mill&lt;br /&gt;
&lt;br /&gt;
481C Candyfloss Forest&lt;br /&gt;
&lt;br /&gt;
481D Sweet Factory&lt;br /&gt;
&lt;br /&gt;
481E Battery Farm&lt;br /&gt;
&lt;br /&gt;
481F Cola Wells&lt;br /&gt;
&lt;br /&gt;
4820 Toy Shop&lt;br /&gt;
&lt;br /&gt;
4821 Toy Factory&lt;br /&gt;
&lt;br /&gt;
4822 Plastic Fountains&lt;br /&gt;
&lt;br /&gt;
4823 Fizzy Drink Factory&lt;br /&gt;
&lt;br /&gt;
4824 Bubble Generator&lt;br /&gt;
&lt;br /&gt;
4825 Toffee Quarry&lt;br /&gt;
&lt;br /&gt;
4826 Sugar Mine&lt;br /&gt;
&lt;br /&gt;
4827 \98Requires: \90\80&lt;br /&gt;
&lt;br /&gt;
4828 \98Requires: \90\80,\80&lt;br /&gt;
&lt;br /&gt;
4829 \98Requires: \90\80,\80,\80&lt;br /&gt;
&lt;br /&gt;
482A \98Production last month:&lt;br /&gt;
&lt;br /&gt;
482B \90\80\98 (|% transported)&lt;br /&gt;
&lt;br /&gt;
482C \98Centre the main view on industry location&lt;br /&gt;
&lt;br /&gt;
482D \98\0fNew \80 under construction near \80!&lt;br /&gt;
&lt;br /&gt;
482E \98\0fNew \80 being planted near \80!&lt;br /&gt;
&lt;br /&gt;
482F \98Cost: \90\7f&lt;br /&gt;
&lt;br /&gt;
4830 \94Can&#039;t construct this industry type here...&lt;br /&gt;
&lt;br /&gt;
4831 \94...forest can only be planted above snow-line&lt;br /&gt;
&lt;br /&gt;
4832 \98\0f\80 \80 announces imminent closure!&lt;br /&gt;
&lt;br /&gt;
4833 \98\0fSupply problems cause \80 \80 to announce imminent closure!&lt;br /&gt;
&lt;br /&gt;
4834 \98\0fLack of nearby trees causes \80 \80 to announce imminent closure!&lt;br /&gt;
&lt;br /&gt;
4835 \98\0f\80 \80 increases production!&lt;br /&gt;
&lt;br /&gt;
4836 \98\0fNew coal seam found at \80 \80!\0dProduction is expected to double!&lt;br /&gt;
&lt;br /&gt;
4837 \98\0fNew oil reserves found at \80 \80!\0dProduction is expected to double!&lt;br /&gt;
&lt;br /&gt;
4838 \98\0fImproved farming methods at \80 \80 are expected to double production!&lt;br /&gt;
&lt;br /&gt;
4839 \98\0f\80 \80 production down by 50%&lt;br /&gt;
&lt;br /&gt;
483A \98\0fInsect infestation causes havoc at \80 \80!\0dProduction down by 50%&lt;br /&gt;
&lt;br /&gt;
483B \94...can only be positioned near edges of map&lt;br /&gt;
&lt;br /&gt;
=5000 Tunnel and bridge strings=&lt;br /&gt;
&lt;br /&gt;
5000 \94Train in tunnel&lt;br /&gt;
&lt;br /&gt;
5001 \94Road vehicle in tunnel&lt;br /&gt;
&lt;br /&gt;
5002&lt;br /&gt;
&lt;br /&gt;
5003 \94Another tunnel in the way&lt;br /&gt;
&lt;br /&gt;
5004&lt;br /&gt;
&lt;br /&gt;
5005 \94Unable to excavate land for other end of tunnel&lt;br /&gt;
&lt;br /&gt;
5006 \94Must demolish tunnel first&lt;br /&gt;
&lt;br /&gt;
5007 \94Must demolish bridge first&lt;br /&gt;
&lt;br /&gt;
5008 \94Cannot start and end on same position&lt;br /&gt;
&lt;br /&gt;
5009 \94Level land or water required under bridge&lt;br /&gt;
&lt;br /&gt;
500A \94Start and end must be in line&lt;br /&gt;
&lt;br /&gt;
500B \94Site unsuitable for tunnel entrance&lt;br /&gt;
&lt;br /&gt;
500C&lt;br /&gt;
&lt;br /&gt;
500D \8a\80,\0d \84 &amp;amp;nbsp; \94\7f&lt;br /&gt;
&lt;br /&gt;
500E Suspension,Steel&lt;br /&gt;
&lt;br /&gt;
500F Girder,Steel&lt;br /&gt;
&lt;br /&gt;
5010 Cantilever,Steel&lt;br /&gt;
&lt;br /&gt;
5011 Suspension,Concrete&lt;br /&gt;
&lt;br /&gt;
5012 Wooden&lt;br /&gt;
&lt;br /&gt;
5013 Concrete&lt;br /&gt;
&lt;br /&gt;
5014 Tubular,Steel&lt;br /&gt;
&lt;br /&gt;
5015 \94Can&#039;t build bridge here...&lt;br /&gt;
&lt;br /&gt;
5016 \94Can&#039;t build tunnel here...&lt;br /&gt;
&lt;br /&gt;
5017 Railway tunnel&lt;br /&gt;
&lt;br /&gt;
5018 Road tunnel&lt;br /&gt;
&lt;br /&gt;
5019&lt;br /&gt;
&lt;br /&gt;
501A&lt;br /&gt;
&lt;br /&gt;
501B Steel suspension rail bridge&lt;br /&gt;
&lt;br /&gt;
501C Steel girder rail bridge&lt;br /&gt;
&lt;br /&gt;
501D Steel cantilever rail bridge&lt;br /&gt;
&lt;br /&gt;
501E Reinforced concrete suspension rail bridge&lt;br /&gt;
&lt;br /&gt;
501F Wooden rail bridge&lt;br /&gt;
&lt;br /&gt;
5020 Concrete rail bridge&lt;br /&gt;
&lt;br /&gt;
5021 Steel suspension road bridge&lt;br /&gt;
&lt;br /&gt;
5022 Steel girder road bridge&lt;br /&gt;
&lt;br /&gt;
5023 Steel cantilever road bridge&lt;br /&gt;
&lt;br /&gt;
5024 Reinforced concrete suspension road bridge&lt;br /&gt;
&lt;br /&gt;
5025 Wooden road bridge&lt;br /&gt;
&lt;br /&gt;
5026 Concrete road bridge&lt;br /&gt;
&lt;br /&gt;
5027 Tubular rail bridge&lt;br /&gt;
&lt;br /&gt;
5028 Tubular road bridge&lt;br /&gt;
&lt;br /&gt;
5029 Steel&lt;br /&gt;
&lt;br /&gt;
=5800 Object strings=&lt;br /&gt;
&lt;br /&gt;
5800 \94Object in the way&lt;br /&gt;
&lt;br /&gt;
5801 Transmitter&lt;br /&gt;
&lt;br /&gt;
5802 Lighthouse&lt;br /&gt;
&lt;br /&gt;
5803 Company Headquarters&lt;br /&gt;
&lt;br /&gt;
5804 \94...company headquarters in the way&lt;br /&gt;
&lt;br /&gt;
5805 Company-owned land&lt;br /&gt;
&lt;br /&gt;
5806 \94Can&#039;t purchase this land area...&lt;br /&gt;
&lt;br /&gt;
5807 \94...you already own it!&lt;br /&gt;
&lt;br /&gt;
=6000 Debugger strings=&lt;br /&gt;
&lt;br /&gt;
6000 \94Debugger&lt;br /&gt;
&lt;br /&gt;
6001 \8bAnimation blocks: |/|&lt;br /&gt;
&lt;br /&gt;
6002 \98+Cash&lt;br /&gt;
&lt;br /&gt;
6003 \98+Towns&lt;br /&gt;
&lt;br /&gt;
6004 \98{&lt;br /&gt;
&lt;br /&gt;
6005 \98+&lt;br /&gt;
&lt;br /&gt;
6006 \98-&lt;br /&gt;
&lt;br /&gt;
6007 \8bNon-Effect Objects: |/|&lt;br /&gt;
&lt;br /&gt;
6008 \8bEffect Objects: |/|&lt;br /&gt;
&lt;br /&gt;
6009 \8bText Effects: |/|&lt;br /&gt;
&lt;br /&gt;
600A \98Land Code: |&lt;br /&gt;
&lt;br /&gt;
600B \8bOrders: |/|&lt;br /&gt;
&lt;br /&gt;
600C \8bNames: |/|&lt;br /&gt;
&lt;br /&gt;
600D \98AllVeh&lt;br /&gt;
&lt;br /&gt;
600E \98+Cmpny&lt;br /&gt;
&lt;br /&gt;
600F \98Interrupts: |&lt;br /&gt;
&lt;br /&gt;
6010 \98ID: |&lt;br /&gt;
&lt;br /&gt;
6011 \98Serial resends: |&lt;br /&gt;
&lt;br /&gt;
6012 \8eRand.Seed: \90|&lt;br /&gt;
&lt;br /&gt;
6013 \8bGr.Cache Used: {/{&lt;br /&gt;
&lt;br /&gt;
6014 \98Fingerprint: --------&lt;br /&gt;
&lt;br /&gt;
6015 \8bStations: |/|&lt;br /&gt;
&lt;br /&gt;
6016 \98Random seed: \8e{&lt;br /&gt;
&lt;br /&gt;
6017 \98NPC PZ&lt;br /&gt;
&lt;br /&gt;
6018 \94GAMES OUT OF SYNC!&lt;br /&gt;
&lt;br /&gt;
=6800 Difficulty strings=&lt;br /&gt;
&lt;br /&gt;
6800 \94Difficulty Level&lt;br /&gt;
&lt;br /&gt;
6801 \98Easy&lt;br /&gt;
&lt;br /&gt;
6802 \98Medium&lt;br /&gt;
&lt;br /&gt;
6803 \98Hard&lt;br /&gt;
&lt;br /&gt;
6804 \98Custom&lt;br /&gt;
&lt;br /&gt;
6805 \95Maximum no. competitors: \8e|&lt;br /&gt;
&lt;br /&gt;
6806 \95Competitor start time: \8e\80&lt;br /&gt;
&lt;br /&gt;
6807 \95No. of towns: \8e\80&lt;br /&gt;
&lt;br /&gt;
6808 \95No. of industries: \8e\80&lt;br /&gt;
&lt;br /&gt;
6809 \95Maximum initial loan: \8e\7f&lt;br /&gt;
&lt;br /&gt;
680A \95Initial interest rate: \8e|%&lt;br /&gt;
&lt;br /&gt;
680B \95Vehicle running costs: \8e\80&lt;br /&gt;
&lt;br /&gt;
680C \95Construction speed of competitors: \8e\80&lt;br /&gt;
&lt;br /&gt;
680D \95Intelligence of competitors: \8e\80&lt;br /&gt;
&lt;br /&gt;
680E \95Vehicle breakdowns: \8e\80&lt;br /&gt;
&lt;br /&gt;
680F \95Subsidy multiplier: \8e\80&lt;br /&gt;
&lt;br /&gt;
6810 \95Cost of construction: \8e\80&lt;br /&gt;
&lt;br /&gt;
6811 \95Terrain type: \8e\80&lt;br /&gt;
&lt;br /&gt;
6812 \95Quantity of sea/lakes: \8e\80&lt;br /&gt;
&lt;br /&gt;
6813 \95Economy: \8e\80&lt;br /&gt;
&lt;br /&gt;
6814 \95Train reversing: \8e\80&lt;br /&gt;
&lt;br /&gt;
6815 \95Disasters: \8e\80&lt;br /&gt;
&lt;br /&gt;
6816 Low&lt;br /&gt;
&lt;br /&gt;
6817 Normal&lt;br /&gt;
&lt;br /&gt;
6818 High&lt;br /&gt;
&lt;br /&gt;
6819 \98&amp;amp;amp;lt;&lt;br /&gt;
&lt;br /&gt;
681A \98&amp;amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
681B Very Slow&lt;br /&gt;
&lt;br /&gt;
681C Slow&lt;br /&gt;
&lt;br /&gt;
681D Medium&lt;br /&gt;
&lt;br /&gt;
681E Fast&lt;br /&gt;
&lt;br /&gt;
681F Very Fast&lt;br /&gt;
&lt;br /&gt;
6820 Low&lt;br /&gt;
&lt;br /&gt;
6821 Medium&lt;br /&gt;
&lt;br /&gt;
6822 High&lt;br /&gt;
&lt;br /&gt;
6823 None&lt;br /&gt;
&lt;br /&gt;
6824 Reduced&lt;br /&gt;
&lt;br /&gt;
6825 Normal&lt;br /&gt;
&lt;br /&gt;
6826 x1.5&lt;br /&gt;
&lt;br /&gt;
6827 x2&lt;br /&gt;
&lt;br /&gt;
6828 x3&lt;br /&gt;
&lt;br /&gt;
6829 x4&lt;br /&gt;
&lt;br /&gt;
682A Very Flat&lt;br /&gt;
&lt;br /&gt;
682B Flat&lt;br /&gt;
&lt;br /&gt;
682C Hilly&lt;br /&gt;
&lt;br /&gt;
682D Mountainous&lt;br /&gt;
&lt;br /&gt;
682E Steady&lt;br /&gt;
&lt;br /&gt;
682F Fluctuating&lt;br /&gt;
&lt;br /&gt;
6830 Immediate&lt;br /&gt;
&lt;br /&gt;
6831 3 months after player&lt;br /&gt;
&lt;br /&gt;
6832 6 months after player&lt;br /&gt;
&lt;br /&gt;
6833 9 months after player&lt;br /&gt;
&lt;br /&gt;
6834 At end of line,and at stations&lt;br /&gt;
&lt;br /&gt;
6835 At end of line only&lt;br /&gt;
&lt;br /&gt;
6836 Off&lt;br /&gt;
&lt;br /&gt;
6837 On&lt;br /&gt;
&lt;br /&gt;
6838 \98Show hi-score chart&lt;br /&gt;
&lt;br /&gt;
=7000 Company strings=&lt;br /&gt;
&lt;br /&gt;
7000 Unnamed\85\85&lt;br /&gt;
&lt;br /&gt;
7001 \94\80\98\80&lt;br /&gt;
&lt;br /&gt;
7002 &amp;amp;nbsp;(Player 1)&lt;br /&gt;
&lt;br /&gt;
7003 &amp;amp;nbsp;(Player 2)&lt;br /&gt;
&lt;br /&gt;
7004 \98New Face&lt;br /&gt;
&lt;br /&gt;
7005 \98Colour Scheme&lt;br /&gt;
&lt;br /&gt;
7006 \8aColour Scheme:&lt;br /&gt;
&lt;br /&gt;
7007 \94New Colour Scheme&lt;br /&gt;
&lt;br /&gt;
7008 \98Company Name&lt;br /&gt;
&lt;br /&gt;
7009 \98Manager Name&lt;br /&gt;
&lt;br /&gt;
700A Company Name&lt;br /&gt;
&lt;br /&gt;
700B Manager&#039;s Name&lt;br /&gt;
&lt;br /&gt;
700C \94Can&#039;t change company name...&lt;br /&gt;
&lt;br /&gt;
700D \94Can&#039;t change manager&#039;s name...&lt;br /&gt;
&lt;br /&gt;
700E \94\80 Finances\98\80&lt;br /&gt;
&lt;br /&gt;
700F \94Expenditure/Income&lt;br /&gt;
&lt;br /&gt;
7010 \94~&lt;br /&gt;
&lt;br /&gt;
7011 \8aConstruction&lt;br /&gt;
&lt;br /&gt;
7012 \8aNew Vehicles&lt;br /&gt;
&lt;br /&gt;
7013 \8aTrain Running Costs&lt;br /&gt;
&lt;br /&gt;
7014 \8aRoad Veh. Running Costs&lt;br /&gt;
&lt;br /&gt;
7015 \8aAircraft Running Costs&lt;br /&gt;
&lt;br /&gt;
7016 \8aShip Running Costs&lt;br /&gt;
&lt;br /&gt;
7017 \8aProperty Maintenance&lt;br /&gt;
&lt;br /&gt;
7018 \8aTrain Income&lt;br /&gt;
&lt;br /&gt;
7019 \8aRoad Vehicles Income&lt;br /&gt;
&lt;br /&gt;
701A \8aAircraft Income&lt;br /&gt;
&lt;br /&gt;
701B \8aShip Income&lt;br /&gt;
&lt;br /&gt;
701C \8aLoan Interest&lt;br /&gt;
&lt;br /&gt;
701D \8aOther&lt;br /&gt;
&lt;br /&gt;
701E \98-\7f&lt;br /&gt;
&lt;br /&gt;
701F \98+\7f&lt;br /&gt;
&lt;br /&gt;
7020 \94Total:&lt;br /&gt;
&lt;br /&gt;
7021 \80\80&lt;br /&gt;
&lt;br /&gt;
7022 \94Income Graph&lt;br /&gt;
&lt;br /&gt;
7023 \7f&lt;br /&gt;
&lt;br /&gt;
7024 {&lt;br /&gt;
&lt;br /&gt;
7025 \94Operating Profit Graph&lt;br /&gt;
&lt;br /&gt;
7026 \94Bank Balance&lt;br /&gt;
&lt;br /&gt;
7027 \94Loan&lt;br /&gt;
&lt;br /&gt;
7028 \98\7f&lt;br /&gt;
&lt;br /&gt;
7029 \98Borrow \85\85\85\85\7f&lt;br /&gt;
&lt;br /&gt;
702A \98Repay \85\85\85\85\7f&lt;br /&gt;
&lt;br /&gt;
702B \94...maximum permitted loan size is \7f&lt;br /&gt;
&lt;br /&gt;
702C \94Can&#039;t borrow any more money...&lt;br /&gt;
&lt;br /&gt;
702D \94...loan already repayed&lt;br /&gt;
&lt;br /&gt;
702E \94...\7f required&lt;br /&gt;
&lt;br /&gt;
702F \94Can&#039;t repay loan...&lt;br /&gt;
&lt;br /&gt;
7030 \98Select new face for manager&lt;br /&gt;
&lt;br /&gt;
7031 \98Change the company vehicle livery&lt;br /&gt;
&lt;br /&gt;
7032 \98Change the manager&#039;s name&lt;br /&gt;
&lt;br /&gt;
7033 \98Change the company name&lt;br /&gt;
&lt;br /&gt;
7034 \98Click on selected new colour scheme&lt;br /&gt;
&lt;br /&gt;
7035 \98Increase size of loan&lt;br /&gt;
&lt;br /&gt;
7036 \98Repay part of loan&lt;br /&gt;
&lt;br /&gt;
7037 \94\80\0d\8a(Manager)&lt;br /&gt;
&lt;br /&gt;
7038 \8aInaugurated: \94~&lt;br /&gt;
&lt;br /&gt;
7039 \8aVehicles:&lt;br /&gt;
&lt;br /&gt;
703A \94| train&lt;br /&gt;
&lt;br /&gt;
703B \94| trains&lt;br /&gt;
&lt;br /&gt;
703C \94| road vehicle&lt;br /&gt;
&lt;br /&gt;
703D \94| road vehicles&lt;br /&gt;
&lt;br /&gt;
703E \94| aircraft&lt;br /&gt;
&lt;br /&gt;
703F \94| aircraft&lt;br /&gt;
&lt;br /&gt;
7040 \94| ship&lt;br /&gt;
&lt;br /&gt;
7041 \94| ships&lt;br /&gt;
&lt;br /&gt;
7042 \94None&lt;br /&gt;
&lt;br /&gt;
7043 \94Face Selection&lt;br /&gt;
&lt;br /&gt;
7044 \98Male&lt;br /&gt;
&lt;br /&gt;
7045 \98Female&lt;br /&gt;
&lt;br /&gt;
7046 \98New Face&lt;br /&gt;
&lt;br /&gt;
7047 \98Cancel new face selection&lt;br /&gt;
&lt;br /&gt;
7048 \98Accept new face selection&lt;br /&gt;
&lt;br /&gt;
7049 \98Select male faces&lt;br /&gt;
&lt;br /&gt;
704A \98Select female faces&lt;br /&gt;
&lt;br /&gt;
704B \98Generate random new face&lt;br /&gt;
&lt;br /&gt;
704C \98Key&lt;br /&gt;
&lt;br /&gt;
704D \98Show key to graphs&lt;br /&gt;
&lt;br /&gt;
704E \94Key to company graphs&lt;br /&gt;
&lt;br /&gt;
704F \98Click here to toggle company&#039;s entry on graph on/off&lt;br /&gt;
&lt;br /&gt;
7050 \94Units of cargo delivered&lt;br /&gt;
&lt;br /&gt;
7051 \94Company performance ratings (maximum rating=1000)&lt;br /&gt;
&lt;br /&gt;
7052 \94Company values&lt;br /&gt;
&lt;br /&gt;
7053 \94Company League Table&lt;br /&gt;
&lt;br /&gt;
7054 \94\80\01-\8e\80 \98\80 &amp;amp;nbsp; &#039;\80&#039;&lt;br /&gt;
&lt;br /&gt;
7055 \90\80\01-\8e\80 \98\80 &amp;amp;nbsp; &#039;\80&#039;&lt;br /&gt;
&lt;br /&gt;
7056 \98\0fTransport company in trouble!&lt;br /&gt;
&lt;br /&gt;
7057 \98\0f\80 will be sold off or declared bankrupt unless performance increases soon!&lt;br /&gt;
&lt;br /&gt;
7058 \98\80\0d(Manager)&lt;br /&gt;
&lt;br /&gt;
7059 \98\0fTransport company merger!&lt;br /&gt;
&lt;br /&gt;
705A \98\0f\80 has been sold to \80 for \7f!&lt;br /&gt;
&lt;br /&gt;
705B \94We are looking for a transport company to take-over our company\0d\0dDo you want to purchase \80 for \7f?&lt;br /&gt;
&lt;br /&gt;
705C \98\0fBankrupt!&lt;br /&gt;
&lt;br /&gt;
705D \98\0f\80 has been closed down by creditors and all assets sold off!&lt;br /&gt;
&lt;br /&gt;
705E \98\0fNew transport company launched!&lt;br /&gt;
&lt;br /&gt;
705F \98\0f\80 starts construction near \80!&lt;br /&gt;
&lt;br /&gt;
7060 \94Can&#039;t buy company...&lt;br /&gt;
&lt;br /&gt;
7061 \94Cargo Payment Rates&lt;br /&gt;
&lt;br /&gt;
7062 \98\0eDays in transit&lt;br /&gt;
&lt;br /&gt;
7063 \98\0ePayment for delivering 10 units (or 1,000 litres) of cargo a distance of 20 squares&lt;br /&gt;
&lt;br /&gt;
7064 \98Toggle graph for cargo type on/off&lt;br /&gt;
&lt;br /&gt;
7065 \98\0e\80&lt;br /&gt;
&lt;br /&gt;
7066 Engineer&lt;br /&gt;
&lt;br /&gt;
7067 Traffic Manager&lt;br /&gt;
&lt;br /&gt;
7068 Transport Coordinator&lt;br /&gt;
&lt;br /&gt;
7069 Route Supervisor&lt;br /&gt;
&lt;br /&gt;
706A Director&lt;br /&gt;
&lt;br /&gt;
706B Chief Executive&lt;br /&gt;
&lt;br /&gt;
706C Chairman&lt;br /&gt;
&lt;br /&gt;
706D President&lt;br /&gt;
&lt;br /&gt;
706E Tycoon&lt;br /&gt;
&lt;br /&gt;
706F \98Build HQ&lt;br /&gt;
&lt;br /&gt;
7070 \98Build company headquarters / view company headquarters&lt;br /&gt;
&lt;br /&gt;
7071 \94Can&#039;t build company headquarters...&lt;br /&gt;
&lt;br /&gt;
7072 \98View HQ&lt;br /&gt;
&lt;br /&gt;
7073 \0f\98World Recession!\0d\0dFinancial experts fear worst as economy slumps!&lt;br /&gt;
&lt;br /&gt;
7074 \0f\98Recession Over!\0d\0dUpturn in trade gives confidence to industries as economy strengthens!&lt;br /&gt;
&lt;br /&gt;
7075 \98Toggle large/small window size&lt;br /&gt;
&lt;br /&gt;
7076 \8aCompany value: \94\7f&lt;br /&gt;
&lt;br /&gt;
7077 \98Buy 25% share in company&lt;br /&gt;
&lt;br /&gt;
7078 \98Sell 25% share in company&lt;br /&gt;
&lt;br /&gt;
7079 \98Buy 25% share in this company&lt;br /&gt;
&lt;br /&gt;
707A \98Sell 25% share in this company&lt;br /&gt;
&lt;br /&gt;
707B \94Can&#039;t buy 25% share in this company...&lt;br /&gt;
&lt;br /&gt;
707C \94Can&#039;t sell 25% share in this company...&lt;br /&gt;
&lt;br /&gt;
707D \94(|% owned by \80)&lt;br /&gt;
&lt;br /&gt;
707E \94(|% owned by \80\0d |% owned by \80)&lt;br /&gt;
&lt;br /&gt;
707F \98\0f\80 has been taken over by \80!&lt;br /&gt;
&lt;br /&gt;
=7800 Custom strings=&lt;br /&gt;
&lt;br /&gt;
These cannot be set directly; an entry is generated every time the player enters a custom name for example for signs, stations or vehicles.&lt;br /&gt;
&lt;br /&gt;
=8000 Vehicle type names=&lt;br /&gt;
&lt;br /&gt;
Note, IDs 8000..80FF will be changed by using a regular action 4 to name new vehicles, but not by using &amp;amp;quot;custom vehicle names&amp;amp;quot; from vehicle.dat which use custom strings instead.&lt;br /&gt;
&lt;br /&gt;
8000 Kirby Paul Tank (Steam)&lt;br /&gt;
&lt;br /&gt;
8001 MJS 250 (Diesel)&lt;br /&gt;
&lt;br /&gt;
8002 Ploddyphut ))Choo-Choo[[]]Choo-Choo[[&lt;br /&gt;
&lt;br /&gt;
8003 Powernaut ))Choo-Choo[[]]Choo-Choo[[&lt;br /&gt;
&lt;br /&gt;
8004 Mightymover ))Choo-Choo[[]]Choo-Choo[[&lt;br /&gt;
&lt;br /&gt;
8005 Ploddyphut Diesel&lt;br /&gt;
&lt;br /&gt;
8006 Powernaut Diesel&lt;br /&gt;
&lt;br /&gt;
8007 Wills 2-8-0 (Steam)&lt;br /&gt;
&lt;br /&gt;
8008 Chaney &#039;Jubilee&#039; (Steam)&lt;br /&gt;
&lt;br /&gt;
8009 Ginzu &#039;A4&#039; (Steam)&lt;br /&gt;
&lt;br /&gt;
800A SH &#039;8P&#039; (Steam)&lt;br /&gt;
&lt;br /&gt;
800B ))Manley-Morel[[]]Manley-Morel[[ DMU (Diesel)&lt;br /&gt;
&lt;br /&gt;
800C &#039;Dash&#039; (Diesel)&lt;br /&gt;
&lt;br /&gt;
800D SH/Hendry &#039;25&#039; (Diesel)&lt;br /&gt;
&lt;br /&gt;
800E UU &#039;37&#039; (Diesel)&lt;br /&gt;
&lt;br /&gt;
800F Floss &#039;47&#039; (Diesel)&lt;br /&gt;
&lt;br /&gt;
8010 CS 4000 (Diesel)&lt;br /&gt;
&lt;br /&gt;
8011 CS 2400 (Diesel)&lt;br /&gt;
&lt;br /&gt;
8012 Centennial (Diesel)&lt;br /&gt;
&lt;br /&gt;
8013 Kelling 3100 (Diesel)&lt;br /&gt;
&lt;br /&gt;
8014 Turner Turbo (Diesel)&lt;br /&gt;
&lt;br /&gt;
8015 MJS 1000 (Diesel)&lt;br /&gt;
&lt;br /&gt;
8016 SH &#039;125&#039; (Diesel)&lt;br /&gt;
&lt;br /&gt;
8017 SH &#039;30&#039; (Electric)&lt;br /&gt;
&lt;br /&gt;
8018 SH &#039;40&#039; (Electric)&lt;br /&gt;
&lt;br /&gt;
8019 &#039;T.I.M.&#039; (Electric)&lt;br /&gt;
&lt;br /&gt;
801A &#039;AsiaStar&#039; (Electric)&lt;br /&gt;
&lt;br /&gt;
801B Passenger Carriage&lt;br /&gt;
&lt;br /&gt;
801C Mail Van&lt;br /&gt;
&lt;br /&gt;
801D Coal Truck&lt;br /&gt;
&lt;br /&gt;
801E Oil Tanker&lt;br /&gt;
&lt;br /&gt;
801F Livestock Van&lt;br /&gt;
&lt;br /&gt;
8020 Goods Van&lt;br /&gt;
&lt;br /&gt;
8021 Grain Hopper&lt;br /&gt;
&lt;br /&gt;
8022 Wood Truck&lt;br /&gt;
&lt;br /&gt;
8023 Iron Ore Hopper&lt;br /&gt;
&lt;br /&gt;
8024 Steel Truck&lt;br /&gt;
&lt;br /&gt;
8025 Armoured Van&lt;br /&gt;
&lt;br /&gt;
8026 Food Van&lt;br /&gt;
&lt;br /&gt;
8027 Paper Truck&lt;br /&gt;
&lt;br /&gt;
8028 Copper Ore Hopper&lt;br /&gt;
&lt;br /&gt;
8029 Water Tanker&lt;br /&gt;
&lt;br /&gt;
802A Fruit Truck&lt;br /&gt;
&lt;br /&gt;
802B Rubber Truck&lt;br /&gt;
&lt;br /&gt;
802C Sugar Truck&lt;br /&gt;
&lt;br /&gt;
802D Candyfloss Hopper&lt;br /&gt;
&lt;br /&gt;
802E Toffee Hopper&lt;br /&gt;
&lt;br /&gt;
802F Bubble Van&lt;br /&gt;
&lt;br /&gt;
8030 Cola Tanker&lt;br /&gt;
&lt;br /&gt;
8031 Sweet Van&lt;br /&gt;
&lt;br /&gt;
8032 Toy Van&lt;br /&gt;
&lt;br /&gt;
8033 Battery Truck&lt;br /&gt;
&lt;br /&gt;
8034 Fizzy Drink Truck&lt;br /&gt;
&lt;br /&gt;
8035 Plastic Truck&lt;br /&gt;
&lt;br /&gt;
8036 &#039;X2001&#039; (Electric)&lt;br /&gt;
&lt;br /&gt;
8037 &#039;Millennium Z1&#039; (Electric)&lt;br /&gt;
&lt;br /&gt;
8038 Wizzowow Z99&lt;br /&gt;
&lt;br /&gt;
8039 Passenger Carriage&lt;br /&gt;
&lt;br /&gt;
803A Mail Van&lt;br /&gt;
&lt;br /&gt;
803B Coal Truck&lt;br /&gt;
&lt;br /&gt;
803C Oil Tanker&lt;br /&gt;
&lt;br /&gt;
803D Livestock Van&lt;br /&gt;
&lt;br /&gt;
803E Goods Van&lt;br /&gt;
&lt;br /&gt;
803F Grain Hopper&lt;br /&gt;
&lt;br /&gt;
8040 Wood Truck&lt;br /&gt;
&lt;br /&gt;
8041 Iron Ore Hopper&lt;br /&gt;
&lt;br /&gt;
8042 Steel Truck&lt;br /&gt;
&lt;br /&gt;
8043 Armoured Van&lt;br /&gt;
&lt;br /&gt;
8044 Food Van&lt;br /&gt;
&lt;br /&gt;
8045 Paper Truck&lt;br /&gt;
&lt;br /&gt;
8046 Copper Ore Hopper&lt;br /&gt;
&lt;br /&gt;
8047 Water Tanker&lt;br /&gt;
&lt;br /&gt;
8048 Fruit Truck&lt;br /&gt;
&lt;br /&gt;
8049 Rubber Truck&lt;br /&gt;
&lt;br /&gt;
804A Sugar Truck&lt;br /&gt;
&lt;br /&gt;
804B Candyfloss Hopper&lt;br /&gt;
&lt;br /&gt;
804C Toffee Hopper&lt;br /&gt;
&lt;br /&gt;
804D Bubble Van&lt;br /&gt;
&lt;br /&gt;
804E Cola Tanker&lt;br /&gt;
&lt;br /&gt;
804F Sweet Van&lt;br /&gt;
&lt;br /&gt;
8050 Toy Van&lt;br /&gt;
&lt;br /&gt;
8051 Battery Truck&lt;br /&gt;
&lt;br /&gt;
8052 Fizzy Drink Truck&lt;br /&gt;
&lt;br /&gt;
8053 Plastic Truck&lt;br /&gt;
&lt;br /&gt;
8054 Lev1 &#039;Leviathan&#039; (Electric)&lt;br /&gt;
&lt;br /&gt;
8055 Lev2 &#039;Cyclops&#039; (Electric)&lt;br /&gt;
&lt;br /&gt;
8056 Lev3 &#039;Pegasus&#039; (Electric)&lt;br /&gt;
&lt;br /&gt;
8057 Lev4 &#039;Chimaera&#039; (Electric)&lt;br /&gt;
&lt;br /&gt;
8058 Wizzowow Rocketeer&lt;br /&gt;
&lt;br /&gt;
8059 Passenger Carriage&lt;br /&gt;
&lt;br /&gt;
805A Mail Van&lt;br /&gt;
&lt;br /&gt;
805B Coal Truck&lt;br /&gt;
&lt;br /&gt;
805C Oil Tanker&lt;br /&gt;
&lt;br /&gt;
805D Livestock Van&lt;br /&gt;
&lt;br /&gt;
805E Goods Van&lt;br /&gt;
&lt;br /&gt;
805F Grain Hopper&lt;br /&gt;
&lt;br /&gt;
8060 Wood Truck&lt;br /&gt;
&lt;br /&gt;
8061 Iron Ore Hopper&lt;br /&gt;
&lt;br /&gt;
8062 Steel Truck&lt;br /&gt;
&lt;br /&gt;
8063 Armoured Van&lt;br /&gt;
&lt;br /&gt;
8064 Food Van&lt;br /&gt;
&lt;br /&gt;
8065 Paper Truck&lt;br /&gt;
&lt;br /&gt;
8066 Copper Ore Hopper&lt;br /&gt;
&lt;br /&gt;
8067 Water Tanker&lt;br /&gt;
&lt;br /&gt;
8068 Fruit Truck&lt;br /&gt;
&lt;br /&gt;
8069 Rubber Truck&lt;br /&gt;
&lt;br /&gt;
806A Sugar Truck&lt;br /&gt;
&lt;br /&gt;
806B Candyfloss Hopper&lt;br /&gt;
&lt;br /&gt;
806C Toffee Hopper&lt;br /&gt;
&lt;br /&gt;
806D Bubble Van&lt;br /&gt;
&lt;br /&gt;
806E Cola Tanker&lt;br /&gt;
&lt;br /&gt;
806F Sweet Van&lt;br /&gt;
&lt;br /&gt;
8070 Toy Van&lt;br /&gt;
&lt;br /&gt;
8071 Battery Truck&lt;br /&gt;
&lt;br /&gt;
8072 Fizzy Drink Truck&lt;br /&gt;
&lt;br /&gt;
8073 Plastic Truck&lt;br /&gt;
&lt;br /&gt;
8074 MPS Regal Bus&lt;br /&gt;
&lt;br /&gt;
8075 Hereford Leopard Bus&lt;br /&gt;
&lt;br /&gt;
8076 Foster Bus&lt;br /&gt;
&lt;br /&gt;
8077 Foster MkII Superbus&lt;br /&gt;
&lt;br /&gt;
8078 Ploddyphut MkI Bus&lt;br /&gt;
&lt;br /&gt;
8079 Ploddyphut MkII Bus&lt;br /&gt;
&lt;br /&gt;
807A Ploddyphut MkIII Bus&lt;br /&gt;
&lt;br /&gt;
807B Balogh Coal Truck&lt;br /&gt;
&lt;br /&gt;
807C Uhl Coal Truck&lt;br /&gt;
&lt;br /&gt;
807D DW Coal Truck&lt;br /&gt;
&lt;br /&gt;
807E MPS Mail Truck&lt;br /&gt;
&lt;br /&gt;
807F Reynard Mail Truck&lt;br /&gt;
&lt;br /&gt;
8080 Perry Mail Truck&lt;br /&gt;
&lt;br /&gt;
8081 ))MightyMover[[]]MightyMover[[ Mail Truck&lt;br /&gt;
&lt;br /&gt;
8082 Powernaught Mail Truck&lt;br /&gt;
&lt;br /&gt;
8083 Wizzowow Mail Truck&lt;br /&gt;
&lt;br /&gt;
8084 Witcombe Oil Tanker&lt;br /&gt;
&lt;br /&gt;
8085 Foster Oil Tanker&lt;br /&gt;
&lt;br /&gt;
8086 Perry Oil Tanker&lt;br /&gt;
&lt;br /&gt;
8087 Talbott Livestock Van&lt;br /&gt;
&lt;br /&gt;
8088 Uhl Livestock Van&lt;br /&gt;
&lt;br /&gt;
8089 Foster Livestock Van&lt;br /&gt;
&lt;br /&gt;
808A Balogh Goods Truck&lt;br /&gt;
&lt;br /&gt;
808B Craighead Goods Truck&lt;br /&gt;
&lt;br /&gt;
808C Goss Goods Truck&lt;br /&gt;
&lt;br /&gt;
808D Hereford Grain Truck&lt;br /&gt;
&lt;br /&gt;
808E Thomas Grain Truck&lt;br /&gt;
&lt;br /&gt;
808F Goss Grain Truck&lt;br /&gt;
&lt;br /&gt;
8090 Witcombe Wood Truck&lt;br /&gt;
&lt;br /&gt;
8091 Foster Wood Truck&lt;br /&gt;
&lt;br /&gt;
8092 Moreland Wood Truck&lt;br /&gt;
&lt;br /&gt;
8093 MPS Iron Ore Truck&lt;br /&gt;
&lt;br /&gt;
8094 Uhl Iron Ore Truck&lt;br /&gt;
&lt;br /&gt;
8095 Chippy Iron Ore Truck&lt;br /&gt;
&lt;br /&gt;
8096 Balogh Steel Truck&lt;br /&gt;
&lt;br /&gt;
8097 Uhl Steel Truck&lt;br /&gt;
&lt;br /&gt;
8098 Kelling Steel Truck&lt;br /&gt;
&lt;br /&gt;
8099 Balogh Armoured Truck&lt;br /&gt;
&lt;br /&gt;
809A Uhl Armoured Truck&lt;br /&gt;
&lt;br /&gt;
809B Foster Armoured Truck&lt;br /&gt;
&lt;br /&gt;
809C Foster Food Van&lt;br /&gt;
&lt;br /&gt;
809D Perry Food Van&lt;br /&gt;
&lt;br /&gt;
809E Chippy Food Van&lt;br /&gt;
&lt;br /&gt;
809F Uhl Paper Truck&lt;br /&gt;
&lt;br /&gt;
80A0 Balogh Paper Truck&lt;br /&gt;
&lt;br /&gt;
80A1 MPS Paper Truck&lt;br /&gt;
&lt;br /&gt;
80A2 MPS Copper Ore Truck&lt;br /&gt;
&lt;br /&gt;
80A3 Uhl Copper Ore Truck&lt;br /&gt;
&lt;br /&gt;
80A4 Goss Copper Ore Truck&lt;br /&gt;
&lt;br /&gt;
80A5 Uhl Water Tanker&lt;br /&gt;
&lt;br /&gt;
80A6 Balogh Water Tanker&lt;br /&gt;
&lt;br /&gt;
80A7 MPS Water Tanker&lt;br /&gt;
&lt;br /&gt;
80A8 Balogh Fruit Truck&lt;br /&gt;
&lt;br /&gt;
80A9 Uhl Fruit Truck&lt;br /&gt;
&lt;br /&gt;
80AA Kelling Fruit Truck&lt;br /&gt;
&lt;br /&gt;
80AB Balogh Rubber Truck&lt;br /&gt;
&lt;br /&gt;
80AC Uhl Rubber Truck&lt;br /&gt;
&lt;br /&gt;
80AD RMT Rubber Truck&lt;br /&gt;
&lt;br /&gt;
80AE ))MightyMover[[]]MightyMover[[ Sugar Truck&lt;br /&gt;
&lt;br /&gt;
80AF Powernaught Sugar Truck&lt;br /&gt;
&lt;br /&gt;
80B0 Wizzowow Sugar Truck&lt;br /&gt;
&lt;br /&gt;
80B1 ))MightyMover[[]]MightyMover[[ Cola Truck&lt;br /&gt;
&lt;br /&gt;
80B2 Powernaught Cola Truck&lt;br /&gt;
&lt;br /&gt;
80B3 Wizzowow Cola Truck&lt;br /&gt;
&lt;br /&gt;
80B4 ))MightyMover[[]]MightyMover[[ Candyfloss Truck&lt;br /&gt;
&lt;br /&gt;
80B5 Powernaught Candyfloss Truck&lt;br /&gt;
&lt;br /&gt;
80B6 Wizzowow Candyfloss Truck&lt;br /&gt;
&lt;br /&gt;
80B7 ))MightyMover[[]]MightyMover[[ Toffee Truck&lt;br /&gt;
&lt;br /&gt;
80B8 Powernaught Toffee Truck&lt;br /&gt;
&lt;br /&gt;
80B9 Wizzowow Toffee Truck&lt;br /&gt;
&lt;br /&gt;
80BA ))MightyMover[[]]MightyMover[[ Toy Van&lt;br /&gt;
&lt;br /&gt;
80BB Powernaught Toy Van&lt;br /&gt;
&lt;br /&gt;
80BC Wizzowow Toy Van&lt;br /&gt;
&lt;br /&gt;
80BD ))MightyMover[[]]MightyMover[[ Sweet Lorry&lt;br /&gt;
&lt;br /&gt;
80BE Powernaught Sweet Lorry&lt;br /&gt;
&lt;br /&gt;
80BF Wizzowow Sweet Lorry&lt;br /&gt;
&lt;br /&gt;
80C0 ))MightyMover[[]]MightyMover[[ Battery Truck&lt;br /&gt;
&lt;br /&gt;
80C1 Powernaught Battery Truck&lt;br /&gt;
&lt;br /&gt;
80C2 Wizzowow Battery Truck&lt;br /&gt;
&lt;br /&gt;
80C3 ))MightyMover[[]]MightyMover[[ Fizzy Drink Truck&lt;br /&gt;
&lt;br /&gt;
80C4 Powernaught Fizzy Drink Truck&lt;br /&gt;
&lt;br /&gt;
80C5 Wizzowow Fizzy Drink Truck&lt;br /&gt;
&lt;br /&gt;
80C6 ))MightyMover[[]]MightyMover[[ Plastic Truck&lt;br /&gt;
&lt;br /&gt;
80C7 Powernaught Plastic Truck&lt;br /&gt;
&lt;br /&gt;
80C8 Wizzowow Plastic Truck&lt;br /&gt;
&lt;br /&gt;
80C9 ))MightyMover[[]]MightyMover[[ Bubble Truck&lt;br /&gt;
&lt;br /&gt;
80CA Powernaught Bubble Truck&lt;br /&gt;
&lt;br /&gt;
80CB Wizzowow Bubble Truck&lt;br /&gt;
&lt;br /&gt;
80CC MPS Oil Tanker&lt;br /&gt;
&lt;br /&gt;
80CD CS-Inc. Oil Tanker&lt;br /&gt;
&lt;br /&gt;
80CE MPS Passenger Ferry&lt;br /&gt;
&lt;br /&gt;
80CF FFP Passenger Ferry&lt;br /&gt;
&lt;br /&gt;
80D0 Bakewell 300 Hovercraft&lt;br /&gt;
&lt;br /&gt;
80D1 ))Chugger-Chug[[]]Chugger-Chug[[ Passenger Ferry&lt;br /&gt;
&lt;br /&gt;
80D2 Shivershake Passenger Ferry&lt;br /&gt;
&lt;br /&gt;
80D3 Yate Cargo ship&lt;br /&gt;
&lt;br /&gt;
80D4 Bakewell Cargo ship&lt;br /&gt;
&lt;br /&gt;
80D5 Mightymover Cargo ship&lt;br /&gt;
&lt;br /&gt;
80D6 Powernaut Cargo ship&lt;br /&gt;
&lt;br /&gt;
80D7 Sampson U52&lt;br /&gt;
&lt;br /&gt;
80D8 Coleman Count&lt;br /&gt;
&lt;br /&gt;
80D9 FFP Dart&lt;br /&gt;
&lt;br /&gt;
80DA Yate Haugan&lt;br /&gt;
&lt;br /&gt;
80DB Bakewell Cotswald LB-3&lt;br /&gt;
&lt;br /&gt;
80DC Bakewell Luckett LB-8&lt;br /&gt;
&lt;br /&gt;
80DD Bakewell Luckett LB-9&lt;br /&gt;
&lt;br /&gt;
80DE Bakewell Luckett LB80&lt;br /&gt;
&lt;br /&gt;
80DF Bakewell Luckett LB-10&lt;br /&gt;
&lt;br /&gt;
80E0 Bakewell Luckett LB-11&lt;br /&gt;
&lt;br /&gt;
80E1 Yate Aerospace YAC 1-11&lt;br /&gt;
&lt;br /&gt;
80E2 Darwin 100&lt;br /&gt;
&lt;br /&gt;
80E3 Darwin 200&lt;br /&gt;
&lt;br /&gt;
80E4 Darwin 300&lt;br /&gt;
&lt;br /&gt;
80E5 Darwin 400&lt;br /&gt;
&lt;br /&gt;
80E6 Darwin 500&lt;br /&gt;
&lt;br /&gt;
80E7 Darwin 600&lt;br /&gt;
&lt;br /&gt;
80E8 Guru Galaxy&lt;br /&gt;
&lt;br /&gt;
80E9 Airtaxi A21&lt;br /&gt;
&lt;br /&gt;
80EA Airtaxi A31&lt;br /&gt;
&lt;br /&gt;
80EB Airtaxi A32&lt;br /&gt;
&lt;br /&gt;
80EC Airtaxi A33&lt;br /&gt;
&lt;br /&gt;
80ED Yate Aerospace YAe46&lt;br /&gt;
&lt;br /&gt;
80EE Dinger 100&lt;br /&gt;
&lt;br /&gt;
80EF ))AirTaxi[[]]AirTaxi[[ A34-1000&lt;br /&gt;
&lt;br /&gt;
80F0 Yate ))Z-Shuttle[[]]Z-Shuttle[[&lt;br /&gt;
&lt;br /&gt;
80F1 Kelling K1&lt;br /&gt;
&lt;br /&gt;
80F2 Kelling K6&lt;br /&gt;
&lt;br /&gt;
80F3 Kelling K7&lt;br /&gt;
&lt;br /&gt;
80F4 Darwin 700&lt;br /&gt;
&lt;br /&gt;
80F5 FFP Hyperdart 2&lt;br /&gt;
&lt;br /&gt;
80F6 Dinger 200&lt;br /&gt;
&lt;br /&gt;
80F7 Dinger 1000&lt;br /&gt;
&lt;br /&gt;
80F8 Ploddyphut 100&lt;br /&gt;
&lt;br /&gt;
80F9 Ploddyphut 500&lt;br /&gt;
&lt;br /&gt;
80FA Flashbang X1&lt;br /&gt;
&lt;br /&gt;
80FB Juggerplane M1&lt;br /&gt;
&lt;br /&gt;
80FC Flashbang Wizzer&lt;br /&gt;
&lt;br /&gt;
80FD Tricario Helicopter&lt;br /&gt;
&lt;br /&gt;
80FE Guru X2 Helicopter&lt;br /&gt;
&lt;br /&gt;
80FF Powernaut Helicopter&lt;br /&gt;
&lt;br /&gt;
8100 \94Message from vehicle manufacturer&lt;br /&gt;
&lt;br /&gt;
8101 \8aWe have just designed a new \80 - would you be interested in a year&#039;s exclusive use of this vehicle,so we can see how it performs before making it universally available ?&lt;br /&gt;
&lt;br /&gt;
8102 railway locomotive&lt;br /&gt;
&lt;br /&gt;
8103 road vehicle&lt;br /&gt;
&lt;br /&gt;
8104 aircraft&lt;br /&gt;
&lt;br /&gt;
8105 ship&lt;br /&gt;
&lt;br /&gt;
8106 monorail locomotive&lt;br /&gt;
&lt;br /&gt;
8107 maglev locomotive&lt;br /&gt;
&lt;br /&gt;
=8800 Train strings=&lt;br /&gt;
&lt;br /&gt;
8800 \94\80 Train Depot&lt;br /&gt;
&lt;br /&gt;
8801 \98\0fCitizens celebrate . . .\0dFirst train arrives at \80!&lt;br /&gt;
&lt;br /&gt;
8802 \94\80 (Details)&lt;br /&gt;
&lt;br /&gt;
8803 \94Train in the way&lt;br /&gt;
&lt;br /&gt;
8806 Go to \80&lt;br /&gt;
&lt;br /&gt;
8807 Go to \80 (Unload)&lt;br /&gt;
&lt;br /&gt;
8808 Go to \80 (Load)&lt;br /&gt;
&lt;br /&gt;
8809&lt;br /&gt;
&lt;br /&gt;
880A Go non-stop to \80&lt;br /&gt;
&lt;br /&gt;
880B Go non-stop to \80 (Unload)&lt;br /&gt;
&lt;br /&gt;
880C Go non-stop to \80 (Load)&lt;br /&gt;
&lt;br /&gt;
880D&lt;br /&gt;
&lt;br /&gt;
880E Go to \80 Train Depot&lt;br /&gt;
&lt;br /&gt;
880F Go non-stop to \80 Train Depot&lt;br /&gt;
&lt;br /&gt;
8810 \95Heading for \80&lt;br /&gt;
&lt;br /&gt;
8811 \95Heading for \80 Train Depot&lt;br /&gt;
&lt;br /&gt;
8812 \95Empty&lt;br /&gt;
&lt;br /&gt;
8813 \95\80 from \80&lt;br /&gt;
&lt;br /&gt;
8814 \94Train | is waiting in depot&lt;br /&gt;
&lt;br /&gt;
8815 \98New Vehicles&lt;br /&gt;
&lt;br /&gt;
8816 \98-&lt;br /&gt;
&lt;br /&gt;
8817 \98Cost: \8a\7f\98 Weight: \8a|t\0d\98Speed: \8a\84\98 Power: \8a|hp\0d\98Running Cost: \8a\7f/yr\0d\98Capacity: \8a\80\0d\98Designed: \8a~\98 Life: \8a| years\0d\98Max. Reliability: \8a}%&lt;br /&gt;
&lt;br /&gt;
8818 \98Information&lt;br /&gt;
&lt;br /&gt;
8819 \94Train too long&lt;br /&gt;
&lt;br /&gt;
881A \94Trains can only be altered when stopped inside a depot&lt;br /&gt;
&lt;br /&gt;
881B \94\80 - Trains&lt;br /&gt;
&lt;br /&gt;
881C \94New Rail Vehicles&lt;br /&gt;
&lt;br /&gt;
881D \94New Monorail Vehicles&lt;br /&gt;
&lt;br /&gt;
881E \94New Maglev Vehicles&lt;br /&gt;
&lt;br /&gt;
881F \98Build Vehicle&lt;br /&gt;
&lt;br /&gt;
8820 \98Rename&lt;br /&gt;
&lt;br /&gt;
8821 \98Cost: \8a\7f\0d\98Weight: \8a|t (|t)\0d\98Capacity: \8a\80&lt;br /&gt;
&lt;br /&gt;
8822 \95No orders&lt;br /&gt;
&lt;br /&gt;
8823 \98Skip&lt;br /&gt;
&lt;br /&gt;
8824 \98Delete&lt;br /&gt;
&lt;br /&gt;
8825 \98Non-Stop&lt;br /&gt;
&lt;br /&gt;
8826 \98Go To&lt;br /&gt;
&lt;br /&gt;
8827 \98Full Load&lt;br /&gt;
&lt;br /&gt;
8828 \98Unload&lt;br /&gt;
&lt;br /&gt;
8829 \94\80 (Orders)&lt;br /&gt;
&lt;br /&gt;
882A \01\0a- - End of Orders - -&lt;br /&gt;
&lt;br /&gt;
882B \94Can&#039;t build rail vehicle...&lt;br /&gt;
&lt;br /&gt;
882C \95\80\98 Built: \95~\98 Value: \95\7f&lt;br /&gt;
&lt;br /&gt;
882D \95\80\98 Value: \95\7f&lt;br /&gt;
&lt;br /&gt;
882E \94\80&lt;br /&gt;
&lt;br /&gt;
882F \95Loading / Unloading&lt;br /&gt;
&lt;br /&gt;
8830 \94Can&#039;t send train to depot...&lt;br /&gt;
&lt;br /&gt;
8831 \94No more space for orders&lt;br /&gt;
&lt;br /&gt;
8832 \94Too many orders&lt;br /&gt;
&lt;br /&gt;
8833 \94Can&#039;t insert new order...&lt;br /&gt;
&lt;br /&gt;
8834 \94Can&#039;t delete this order...&lt;br /&gt;
&lt;br /&gt;
8835 \94Can&#039;t modify this order...&lt;br /&gt;
&lt;br /&gt;
8836 \94Must build train depot first&lt;br /&gt;
&lt;br /&gt;
8837 \94Can&#039;t move vehicle...&lt;br /&gt;
&lt;br /&gt;
8838 N/A\85&lt;br /&gt;
&lt;br /&gt;
8839 \94Can&#039;t sell rail vehicle...&lt;br /&gt;
&lt;br /&gt;
883A \94Unable to find route to local depot&lt;br /&gt;
&lt;br /&gt;
883B \94Can&#039;t stop/start train...&lt;br /&gt;
&lt;br /&gt;
883C \98Servicing interval: \95|days\98 Last service: \95\82&lt;br /&gt;
&lt;br /&gt;
883D \98Trains - click on train for information&lt;br /&gt;
&lt;br /&gt;
883E \98Build new trains (requires train depot)&lt;br /&gt;
&lt;br /&gt;
883F \98Trains - click on train for info.,drag vehicle to add/remove from train&lt;br /&gt;
&lt;br /&gt;
8840 \98Build new train vehicle&lt;br /&gt;
&lt;br /&gt;
8841 \98Drag train vehicle to here to sell it&lt;br /&gt;
&lt;br /&gt;
8842 \98Centre main view on train depot location&lt;br /&gt;
&lt;br /&gt;
8843 \98Train vehicle selection list - click on vehicle for information&lt;br /&gt;
&lt;br /&gt;
8844 \98Build the highlighted train vehicle&lt;br /&gt;
&lt;br /&gt;
8845 \98Rename train vehicle type&lt;br /&gt;
&lt;br /&gt;
8846 \98Current train action - click here to stop/start train&lt;br /&gt;
&lt;br /&gt;
8847 \98Show train&#039;s orders&lt;br /&gt;
&lt;br /&gt;
8848 \98Centre main view on train&#039;s location&lt;br /&gt;
&lt;br /&gt;
8849 \98Send train to depot&lt;br /&gt;
&lt;br /&gt;
884A \98Force train to proceed without waiting for signal to clear&lt;br /&gt;
&lt;br /&gt;
884B \98Reverse direction of train&lt;br /&gt;
&lt;br /&gt;
884C \98Show train details&lt;br /&gt;
&lt;br /&gt;
884D \98Increase servicing interval&lt;br /&gt;
&lt;br /&gt;
884E \98Decrease servicing interval&lt;br /&gt;
&lt;br /&gt;
884F \98Show details of cargo carried&lt;br /&gt;
&lt;br /&gt;
8850 \98Show details of train vehicles&lt;br /&gt;
&lt;br /&gt;
8851 \98Show capacities of each vehicle&lt;br /&gt;
&lt;br /&gt;
8852 \98Orders list - click on order to highlight it&lt;br /&gt;
&lt;br /&gt;
8853 \98Skip the current order,and start the next&lt;br /&gt;
&lt;br /&gt;
8854 \98Delete the highlighted order&lt;br /&gt;
&lt;br /&gt;
8855 \98Make the highlighted order non-stop&lt;br /&gt;
&lt;br /&gt;
8856 \98Insert a new order before the highlighted order,or add to end of list&lt;br /&gt;
&lt;br /&gt;
8857 \98Make the highlighted order force the vehicle to wait for a full load&lt;br /&gt;
&lt;br /&gt;
8858 \98Make the highlighted order force the vehicle to unload&lt;br /&gt;
&lt;br /&gt;
8859 \98\0fNew \80 now available!&lt;br /&gt;
&lt;br /&gt;
885A \98\0f\80&lt;br /&gt;
&lt;br /&gt;
885B \98Cost: \7f Weight: |t\0dSpeed: \84 Power: |hp\0dRunning Cost: \7f/yr\0dCapacity: \80&lt;br /&gt;
&lt;br /&gt;
885C \8bBroken down&lt;br /&gt;
&lt;br /&gt;
885D \98Age: \95\80\98 Running Cost: \95\7f/yr&lt;br /&gt;
&lt;br /&gt;
885E \98Weight: \95|t \98Power: \95|hp\98 Max. speed: \95\84&lt;br /&gt;
&lt;br /&gt;
885F \98Profit this year: \95\7f (last year: \7f)&lt;br /&gt;
&lt;br /&gt;
8860 \98Reliability: \95}% \98Breakdowns since last service: \95|&lt;br /&gt;
&lt;br /&gt;
8861 \8bStopped&lt;br /&gt;
&lt;br /&gt;
8862 \94Can&#039;t make train pass signal at danger...&lt;br /&gt;
&lt;br /&gt;
8863 \8bCrashed!&lt;br /&gt;
&lt;br /&gt;
8864 Train |&lt;br /&gt;
&lt;br /&gt;
8865 \94Name train&lt;br /&gt;
&lt;br /&gt;
8866 \94Can&#039;t name train...&lt;br /&gt;
&lt;br /&gt;
8867 \98Name train&lt;br /&gt;
&lt;br /&gt;
8868 \98\0fTrain Crash!\0d| die in fireball after collision&lt;br /&gt;
&lt;br /&gt;
8869 \94Can&#039;t reverse direction of train...&lt;br /&gt;
&lt;br /&gt;
886A \94Rename train vehicle type&lt;br /&gt;
&lt;br /&gt;
886B \94Can&#039;t rename train vehicle type...&lt;br /&gt;
&lt;br /&gt;
=9000 Road vehicle strings=&lt;br /&gt;
&lt;br /&gt;
9000 \94Road vehicle in the way&lt;br /&gt;
&lt;br /&gt;
9001 \94\80 - Road Vehicles&lt;br /&gt;
&lt;br /&gt;
9002 \94\80&lt;br /&gt;
&lt;br /&gt;
9003 \94\80 Road Vehicle Depot&lt;br /&gt;
&lt;br /&gt;
9004 \98New Vehicles&lt;br /&gt;
&lt;br /&gt;
9005 \98Information&lt;br /&gt;
&lt;br /&gt;
9006 \94New Road Vehicles&lt;br /&gt;
&lt;br /&gt;
9007 \98Build Vehicle&lt;br /&gt;
&lt;br /&gt;
9008 \98Cost: \8a\7f\98 Speed: \8a\84\0d\98Running Cost: \8a\7f/yr\0d\98Capacity: \8a\80\0d\98Designed: \8a~\98 Life: \8a| years\0d\98Max. Reliability: \8a}%&lt;br /&gt;
&lt;br /&gt;
9009 \94Can&#039;t build road vehicle...&lt;br /&gt;
&lt;br /&gt;
900A \94Must build road vehicle depot first&lt;br /&gt;
&lt;br /&gt;
900B \94\80 (Orders)&lt;br /&gt;
&lt;br /&gt;
900C \94\80 (Details)&lt;br /&gt;
&lt;br /&gt;
900D \98Age: \95\80\98 Running Cost: \95\7f/yr&lt;br /&gt;
&lt;br /&gt;
900E \98Max. speed: \95\84&lt;br /&gt;
&lt;br /&gt;
900F \98Profit this year: \95\7f (last year: \7f)&lt;br /&gt;
&lt;br /&gt;
9010 \98Reliability: \95}% \98Breakdowns since last service: \95|&lt;br /&gt;
&lt;br /&gt;
9011 \95\80\98 Built: \95~\98 Value: \95\7f&lt;br /&gt;
&lt;br /&gt;
9012 \98Capacity: \95\80&lt;br /&gt;
&lt;br /&gt;
9013 \94...must be stopped inside a road vehicle depot&lt;br /&gt;
&lt;br /&gt;
9014 \94Can&#039;t sell road vehicle...&lt;br /&gt;
&lt;br /&gt;
9015 \94Can&#039;t stop/start road vehicle...&lt;br /&gt;
&lt;br /&gt;
9016 \94Road Vehicle | is waiting in depot&lt;br /&gt;
&lt;br /&gt;
9017 \95Heading for \80 Road Depot&lt;br /&gt;
&lt;br /&gt;
9018 \94Can&#039;t send vehicle to depot...&lt;br /&gt;
&lt;br /&gt;
9019 \94Unable to find local depot&lt;br /&gt;
&lt;br /&gt;
901A \98Road vehicles - click on vehicle for information&lt;br /&gt;
&lt;br /&gt;
901B \98Build new road vehicles (requires road vehicle depot)&lt;br /&gt;
&lt;br /&gt;
901C \98Current vehicle action - click here to stop/start vehicle&lt;br /&gt;
&lt;br /&gt;
901D \98Show vehicle&#039;s orders&lt;br /&gt;
&lt;br /&gt;
901E \98Centre main view on vehicle&#039;s location&lt;br /&gt;
&lt;br /&gt;
901F \98Send vehicle to depot&lt;br /&gt;
&lt;br /&gt;
9020 \98Force vehicle to turn around&lt;br /&gt;
&lt;br /&gt;
9021 \98Show road vehicle details&lt;br /&gt;
&lt;br /&gt;
9022 \98Vehicles - click on vehicle for information&lt;br /&gt;
&lt;br /&gt;
9023 \98Build new road vehicle&lt;br /&gt;
&lt;br /&gt;
9024 \98Drag road vehicle to here to sell it&lt;br /&gt;
&lt;br /&gt;
9025 \98Centre main view on road vehicle depot location&lt;br /&gt;
&lt;br /&gt;
9026 \98Road vehicle selection list - click on vehicle for information&lt;br /&gt;
&lt;br /&gt;
9027 \98Build the highlighted road vehicle&lt;br /&gt;
&lt;br /&gt;
9028 \98\0fNew road vehicle now available!&lt;br /&gt;
&lt;br /&gt;
9029 \98\0f\80&lt;br /&gt;
&lt;br /&gt;
902A \98Cost: \7f\0dSpeed: \84\0dRunning Cost: \7f/yr\0dCapacity: \80&lt;br /&gt;
&lt;br /&gt;
902B Road Vehicle |&lt;br /&gt;
&lt;br /&gt;
902C \94Name road vehicle&lt;br /&gt;
&lt;br /&gt;
902D \94Can&#039;t name road vehicle...&lt;br /&gt;
&lt;br /&gt;
902E \98Name road vehicle&lt;br /&gt;
&lt;br /&gt;
902F \98\0fCitizens celebrate . . .\0dFirst bus arrives at \80!&lt;br /&gt;
&lt;br /&gt;
9030 \98\0fCitizens celebrate . . .\0dFirst lorry arrives at \80!&lt;br /&gt;
&lt;br /&gt;
9031 \98\0fRoad Vehicle Crash!\0dDriver dies in fireball after collision with train&lt;br /&gt;
&lt;br /&gt;
9032 \98\0fRoad Vehicle Crash!\0d| die in fireball after collision with train&lt;br /&gt;
&lt;br /&gt;
9033 \94Can&#039;t make vehicle turn around...&lt;br /&gt;
&lt;br /&gt;
9034 \98Rename&lt;br /&gt;
&lt;br /&gt;
9035 \98Rename road vehicle type&lt;br /&gt;
&lt;br /&gt;
9036 \94Rename road vehicle type&lt;br /&gt;
&lt;br /&gt;
9037 \94Can&#039;t rename road vehicle type...&lt;br /&gt;
&lt;br /&gt;
=9800 Ship strings=&lt;br /&gt;
&lt;br /&gt;
9800 Dock construction&lt;br /&gt;
&lt;br /&gt;
9801 \94Dock construction&lt;br /&gt;
&lt;br /&gt;
9802 \94Can&#039;t build dock here...&lt;br /&gt;
&lt;br /&gt;
9803 \94\80 Ship Depot&lt;br /&gt;
&lt;br /&gt;
9804 \98New Ships&lt;br /&gt;
&lt;br /&gt;
9805 \94\80 - Ships&lt;br /&gt;
&lt;br /&gt;
9806 \94Can&#039;t build ships...&lt;br /&gt;
&lt;br /&gt;
9807 \94Must build ship depot first&lt;br /&gt;
&lt;br /&gt;
9808 \94New Ships&lt;br /&gt;
&lt;br /&gt;
9809 \98Build Ship&lt;br /&gt;
&lt;br /&gt;
980A \98Cost: \8a\7f\98 Speed: \8a\84\0d\98Capacity: \8a\80 \80\0d\98Running Cost: \8a\7f/yr\0d\98Designed: \8a~\98 Life: \8a| years\0d\98Max. Reliability: \8a}%&lt;br /&gt;
&lt;br /&gt;
980B \94Ship must be stopped in depot&lt;br /&gt;
&lt;br /&gt;
980C \94Can&#039;t sell ship...&lt;br /&gt;
&lt;br /&gt;
980D \94Can&#039;t build ship...&lt;br /&gt;
&lt;br /&gt;
980E \94Ship in the way&lt;br /&gt;
&lt;br /&gt;
980F \94\80&lt;br /&gt;
&lt;br /&gt;
9810 \94\80 (Orders)&lt;br /&gt;
&lt;br /&gt;
9811 \94\80 (Details)&lt;br /&gt;
&lt;br /&gt;
9812 \98Age: \95\80\98 Running Cost: \95\7f/yr&lt;br /&gt;
&lt;br /&gt;
9813 \98Max. speed: \95\84&lt;br /&gt;
&lt;br /&gt;
9814 \98Profit this year: \95\7f (last year: \7f)&lt;br /&gt;
&lt;br /&gt;
9815 \98Reliability: \95}% \98Breakdowns since last service: \95|&lt;br /&gt;
&lt;br /&gt;
9816 \95\80\98 Built: \95~\98 Value: \95\7f&lt;br /&gt;
&lt;br /&gt;
9817 \98Capacity: \95\80&lt;br /&gt;
&lt;br /&gt;
9818 \94Can&#039;t stop/start ship...&lt;br /&gt;
&lt;br /&gt;
9819 \94Can&#039;t send ship to depot...&lt;br /&gt;
&lt;br /&gt;
981A \94Unable to find local depot&lt;br /&gt;
&lt;br /&gt;
981B \95Heading for \80 Ship Depot&lt;br /&gt;
&lt;br /&gt;
981C \94Ship | is waiting in depot&lt;br /&gt;
&lt;br /&gt;
981D \98Build ship dock&lt;br /&gt;
&lt;br /&gt;
981E \98Build ship depot (for building and servicing ships)&lt;br /&gt;
&lt;br /&gt;
981F \98Ships - click on ship for information&lt;br /&gt;
&lt;br /&gt;
9820 \98Build new ship&lt;br /&gt;
&lt;br /&gt;
9821 \98Drag ship to here to sell it&lt;br /&gt;
&lt;br /&gt;
9822 \98Centre main view on ship depot location&lt;br /&gt;
&lt;br /&gt;
9823 \98Ships - click on ship for information&lt;br /&gt;
&lt;br /&gt;
9824 \98Build new ships (requires ship depot)&lt;br /&gt;
&lt;br /&gt;
9825 \98Ship selection list - click on ship for information&lt;br /&gt;
&lt;br /&gt;
9826 \98Build the highlighted ship&lt;br /&gt;
&lt;br /&gt;
9827 \98Current ship action - click here to stop/start ship&lt;br /&gt;
&lt;br /&gt;
9828 \98Show ship&#039;s orders&lt;br /&gt;
&lt;br /&gt;
9829 \98Centre main view on ship&#039;s location&lt;br /&gt;
&lt;br /&gt;
982A \98Send ship to depot&lt;br /&gt;
&lt;br /&gt;
982B \98Show ship details&lt;br /&gt;
&lt;br /&gt;
982C \98\0fNew ship now available!&lt;br /&gt;
&lt;br /&gt;
982D \98\0f\80&lt;br /&gt;
&lt;br /&gt;
982E \98Cost: \7f Max. Speed: \84\0dCapacity: \80\0dRunning Cost: \7f/yr&lt;br /&gt;
&lt;br /&gt;
982F \98Name ship&lt;br /&gt;
&lt;br /&gt;
9830 Ship |&lt;br /&gt;
&lt;br /&gt;
9831 \94Name ship&lt;br /&gt;
&lt;br /&gt;
9832 \94Can&#039;t name ship...&lt;br /&gt;
&lt;br /&gt;
9833 \98\0fCitizens celebrate . . .\0dFirst ship arrives at \80!&lt;br /&gt;
&lt;br /&gt;
9834 \98Position buoy,which can be used for additional way points&lt;br /&gt;
&lt;br /&gt;
9835 \94Can&#039;t position buoy here...&lt;br /&gt;
&lt;br /&gt;
9836 \98Rename&lt;br /&gt;
&lt;br /&gt;
9837 \98Rename ship type&lt;br /&gt;
&lt;br /&gt;
9838 \94Rename ship type&lt;br /&gt;
&lt;br /&gt;
9839 \94Can&#039;t rename ship type...&lt;br /&gt;
&lt;br /&gt;
983A \98Refit cargo ship to carry a different cargo type&lt;br /&gt;
&lt;br /&gt;
983B \94\80 (Refit)&lt;br /&gt;
&lt;br /&gt;
983C \98Refit ship&lt;br /&gt;
&lt;br /&gt;
983D \98Select type of cargo for ship to carry&lt;br /&gt;
&lt;br /&gt;
983E \98Refit ship to carry highlighted cargo type&lt;br /&gt;
&lt;br /&gt;
983F \8aSelect cargo type to carry:-&lt;br /&gt;
&lt;br /&gt;
9840 \98New capacity: \8a\80\0d\98Cost of refit: \8a\7f&lt;br /&gt;
&lt;br /&gt;
9841 \94Can&#039;t refit ship...&lt;br /&gt;
&lt;br /&gt;
9842 (refittable)&lt;br /&gt;
&lt;br /&gt;
=A000 Aircraft strings=&lt;br /&gt;
&lt;br /&gt;
A000 \94Airport Construct.&lt;br /&gt;
&lt;br /&gt;
A001 \94Can&#039;t build airport here...&lt;br /&gt;
&lt;br /&gt;
A002 \94\80 Aircraft Hangar&lt;br /&gt;
&lt;br /&gt;
A003 \98New Aircraft&lt;br /&gt;
&lt;br /&gt;
A004 \98Information&lt;br /&gt;
&lt;br /&gt;
A005 \94New Aircraft&lt;br /&gt;
&lt;br /&gt;
A006 \98Build Aircraft&lt;br /&gt;
&lt;br /&gt;
A007 \98Cost: \8a\7f\98 Speed: \8a\84\0d\98Capacity: \8a| passengers,| bags of mail\0d\98Running Cost: \8a\7f/yr\0d\98Designed: \8a~\98 Life: \8a| years\0d\98Max. Reliability: \8a}%&lt;br /&gt;
&lt;br /&gt;
A008 \94Can&#039;t build aircraft...&lt;br /&gt;
&lt;br /&gt;
A009 \94\80 - Aircraft&lt;br /&gt;
&lt;br /&gt;
A00A \94\80&lt;br /&gt;
&lt;br /&gt;
A00B \94\80 (Orders)&lt;br /&gt;
&lt;br /&gt;
A00C \94\80 (Details)&lt;br /&gt;
&lt;br /&gt;
A00D \98Age: \95\80\98 Running Cost: \95\7f/yr&lt;br /&gt;
&lt;br /&gt;
A00E \98Max. speed: \95\84&lt;br /&gt;
&lt;br /&gt;
A00F \98Profit this year: \95\7f (last year: \7f)&lt;br /&gt;
&lt;br /&gt;
A010 \98Reliability: \95}% \98Breakdowns since last service: \95|&lt;br /&gt;
&lt;br /&gt;
A011 \95\80\98 Built: \95~\98 Value: \95\7f&lt;br /&gt;
&lt;br /&gt;
A012 \94Can&#039;t send aircraft to hangar...&lt;br /&gt;
&lt;br /&gt;
A013 \95Heading for \80 Hangar&lt;br /&gt;
&lt;br /&gt;
A014 \94Aircraft | is waiting in the aircraft hangar&lt;br /&gt;
&lt;br /&gt;
A015 \94Aircraft in the way&lt;br /&gt;
&lt;br /&gt;
A016 \94Can&#039;t stop/start aircraft...&lt;br /&gt;
&lt;br /&gt;
A017 \94Aircraft is in flight&lt;br /&gt;
&lt;br /&gt;
A018 \94Must build airport first&lt;br /&gt;
&lt;br /&gt;
A019 \98Capacity: \95\80,\80&lt;br /&gt;
&lt;br /&gt;
A01A \98Capacity: \95\80&lt;br /&gt;
&lt;br /&gt;
A01B \94Aircraft must be stopped in hangar&lt;br /&gt;
&lt;br /&gt;
A01C \94Can&#039;t sell aircraft...&lt;br /&gt;
&lt;br /&gt;
A01D Airport construction&lt;br /&gt;
&lt;br /&gt;
A01E \98Build airport&lt;br /&gt;
&lt;br /&gt;
A01F \98Aircraft - click on aircraft for information&lt;br /&gt;
&lt;br /&gt;
A020 \98Build new aircraft (requires airport with hangar)&lt;br /&gt;
&lt;br /&gt;
A021 \98Aircraft - click on aircraft for information&lt;br /&gt;
&lt;br /&gt;
A022 \98Build new aircraft&lt;br /&gt;
&lt;br /&gt;
A023 \98Drag aircraft to here to sell it&lt;br /&gt;
&lt;br /&gt;
A024 \98Centre main view on hangar location&lt;br /&gt;
&lt;br /&gt;
A025 \98Aircraft selection list - click on aircraft for information&lt;br /&gt;
&lt;br /&gt;
A026 \98Build the highlighted aircraft&lt;br /&gt;
&lt;br /&gt;
A027 \98Current aircraft action - click here to stop/start aircraft&lt;br /&gt;
&lt;br /&gt;
A028 \98Show aircraft&#039;s orders&lt;br /&gt;
&lt;br /&gt;
A029 \98Centre main view on aircraft&#039;s location&lt;br /&gt;
&lt;br /&gt;
A02A \98Send aircraft to hangar&lt;br /&gt;
&lt;br /&gt;
A02B \98Show aircraft details&lt;br /&gt;
&lt;br /&gt;
A02C \98\0fNew aircraft now available!&lt;br /&gt;
&lt;br /&gt;
A02D \98\0f\80&lt;br /&gt;
&lt;br /&gt;
A02E \98Cost: \7f Max. Speed: \84\0dCapacity: | passengers,| bags of mail\0dRunning Cost: \7f/yr&lt;br /&gt;
&lt;br /&gt;
A02F Aircraft |&lt;br /&gt;
&lt;br /&gt;
A030 \94Name aircraft&lt;br /&gt;
&lt;br /&gt;
A031 \94Can&#039;t name aircraft...&lt;br /&gt;
&lt;br /&gt;
A032 \98Name aircraft&lt;br /&gt;
&lt;br /&gt;
A033 \98\0fCitizens celebrate . . .\0dFirst aircraft arrives at \80!&lt;br /&gt;
&lt;br /&gt;
A034 \98\0fPlane Crash!\0d| die in fireball at \80&lt;br /&gt;
&lt;br /&gt;
A035 \0e\98Destinations:&lt;br /&gt;
&lt;br /&gt;
A036 \0e\98\80&lt;br /&gt;
&lt;br /&gt;
A037 \98Rename&lt;br /&gt;
&lt;br /&gt;
A038 \98Rename aircraft type&lt;br /&gt;
&lt;br /&gt;
A039 \94Rename aircraft type&lt;br /&gt;
&lt;br /&gt;
A03A \94Can&#039;t rename aircraft type...&lt;br /&gt;
&lt;br /&gt;
A03B \98Refit aircraft to carry a different cargo type&lt;br /&gt;
&lt;br /&gt;
A03C \94\80 (Refit)&lt;br /&gt;
&lt;br /&gt;
A03D \98Refit aircraft&lt;br /&gt;
&lt;br /&gt;
A03E \98Select type of cargo for aircraft to carry&lt;br /&gt;
&lt;br /&gt;
A03F \98Refit aircraft to carry highlighted cargo type&lt;br /&gt;
&lt;br /&gt;
A040 \8aSelect cargo type to carry:-&lt;br /&gt;
&lt;br /&gt;
A041 \98New capacity: \8a\80\0d\98Cost of refit: \8a\7f&lt;br /&gt;
&lt;br /&gt;
A042 \94Can&#039;t refit aircraft...&lt;br /&gt;
&lt;br /&gt;
A043 (refittable)&lt;br /&gt;
&lt;br /&gt;
=A800 Pseudo-vehicle strings=&lt;br /&gt;
&lt;br /&gt;
(None defined)&lt;br /&gt;
&lt;br /&gt;
=B000 Disaster strings=&lt;br /&gt;
&lt;br /&gt;
B000 \98\0fZeppelin disaster at \80!&lt;br /&gt;
&lt;br /&gt;
B001 \98\0fRoad vehicle destroyed in &#039;UFO&#039; collision!&lt;br /&gt;
&lt;br /&gt;
B002 \98\0fOil refinery explosion near \80!&lt;br /&gt;
&lt;br /&gt;
B003 \98\0fFactory destroyed in suspicious circumstances near \80!&lt;br /&gt;
&lt;br /&gt;
B004 \98\0f&#039;UFO&#039; lands near \80!&lt;br /&gt;
&lt;br /&gt;
B005 \98\0fCoal mine subsidence leaves trail of destruction near \80!&lt;br /&gt;
&lt;br /&gt;
=B800 unused=&lt;br /&gt;
&lt;br /&gt;
=C000 New station names=&lt;br /&gt;
&lt;br /&gt;
This is used for TTDPatch newgrf station and class names. See action 4 for more details.&lt;br /&gt;
&lt;br /&gt;
=C800 New house names=&lt;br /&gt;
&lt;br /&gt;
This is used for TTDPatch newgrf town building names. See action 4 for more details.&lt;br /&gt;
&lt;br /&gt;
=D000 Miscellaneous GRF texts=&lt;br /&gt;
&lt;br /&gt;
This is used for TTDPatch newgrf miscellaneous texts, mostly for callbacks. See action 4 for more details.&lt;br /&gt;
&lt;br /&gt;
The table has up to 1024 entries. To use entry X in an include text (code 81), use ID D400+X. Note that if you want to include ID D000/D400, the 00 byte will be considered the end of string in action 4, this will therefore break if additional texts are supposed to follow in the action 4.&lt;br /&gt;
&lt;br /&gt;
=D800 Persistent GRF texts=&lt;br /&gt;
&lt;br /&gt;
This is used for TTDPatch newgrf persistent texts (the ID mappings are preserved through saving and loading even if the GRF file is unavailable). See action 4 for more details.&lt;br /&gt;
&lt;br /&gt;
D800 class IDs should not be used as include texts.&lt;br /&gt;
&lt;br /&gt;
=E000 Hard-coded game texts=&lt;br /&gt;
&lt;br /&gt;
This text class exists only in TTDPatch 2.0.1 alpha 59 and later. It contains language-dependent texts that didn&#039;t have textIDs originally. This class allows translating TTD entirely by using action 4s, since now every language-dependent text can be accessed.&lt;br /&gt;
&lt;br /&gt;
This list contains interspersed comments in parentheses.&lt;br /&gt;
&lt;br /&gt;
(The first 12 elements are the full month names used for dates)&lt;br /&gt;
&lt;br /&gt;
E000 January&lt;br /&gt;
&lt;br /&gt;
E001 February&lt;br /&gt;
&lt;br /&gt;
E002 March&lt;br /&gt;
&lt;br /&gt;
E003 April&lt;br /&gt;
&lt;br /&gt;
E004 May&lt;br /&gt;
&lt;br /&gt;
E005 June&lt;br /&gt;
&lt;br /&gt;
E006 July&lt;br /&gt;
&lt;br /&gt;
E007 August&lt;br /&gt;
&lt;br /&gt;
E008 September&lt;br /&gt;
&lt;br /&gt;
E009 October&lt;br /&gt;
&lt;br /&gt;
E00A November&lt;br /&gt;
&lt;br /&gt;
E00B December&lt;br /&gt;
&lt;br /&gt;
(The following 13 names are used for companies that aren&#039;t manually named and can&#039;t use &amp;amp;quot;xxx Transport&amp;amp;quot; for some reason)&lt;br /&gt;
&lt;br /&gt;
E00C Bloggs Brothers&lt;br /&gt;
&lt;br /&gt;
E00D Tiny Transport Ltd.&lt;br /&gt;
&lt;br /&gt;
E00E Express Travel&lt;br /&gt;
&lt;br /&gt;
E00F ))Comfy-Coach[[]]Comfy-Coach[[ &amp;amp; Co.&lt;br /&gt;
&lt;br /&gt;
E010 Crush &amp;amp; Bump Ltd.&lt;br /&gt;
&lt;br /&gt;
E011 Broken &amp;amp; Late Ltd.&lt;br /&gt;
&lt;br /&gt;
E012 Sam Speedy &amp;amp; Son&lt;br /&gt;
&lt;br /&gt;
E013 Supersonic Travel&lt;br /&gt;
&lt;br /&gt;
E014 Mike&#039;s Motors&lt;br /&gt;
&lt;br /&gt;
E015 Lightning International&lt;br /&gt;
&lt;br /&gt;
E016 Pannik &amp;amp; Loozit Ltd.&lt;br /&gt;
&lt;br /&gt;
E017 ))Inter-City[[]]Inter-City[[ Transport&lt;br /&gt;
&lt;br /&gt;
E018 Getout &amp;amp; Pushit Ltd.&lt;br /&gt;
&lt;br /&gt;
(The following 41 texts are last names to be used for managers of AI companies)&lt;br /&gt;
&lt;br /&gt;
E019 Adams&lt;br /&gt;
&lt;br /&gt;
E01A Allan&lt;br /&gt;
&lt;br /&gt;
E01B Baker&lt;br /&gt;
&lt;br /&gt;
E01C Bigwig&lt;br /&gt;
&lt;br /&gt;
E01D Black&lt;br /&gt;
&lt;br /&gt;
E01E Bloggs&lt;br /&gt;
&lt;br /&gt;
E01F Brown&lt;br /&gt;
&lt;br /&gt;
E020 Campbell&lt;br /&gt;
&lt;br /&gt;
E021 Gordon&lt;br /&gt;
&lt;br /&gt;
E022 Hamilton&lt;br /&gt;
&lt;br /&gt;
E023 Hawthorn&lt;br /&gt;
&lt;br /&gt;
E024 Higgins&lt;br /&gt;
&lt;br /&gt;
E025 Green&lt;br /&gt;
&lt;br /&gt;
E026 Gribble&lt;br /&gt;
&lt;br /&gt;
E027 Jones&lt;br /&gt;
&lt;br /&gt;
E028 ))McAlpine[[]]McAlpine[[&lt;br /&gt;
&lt;br /&gt;
E029 ))MacDonald[[]]MacDonald[[&lt;br /&gt;
&lt;br /&gt;
E02A ))McIntosh[[]]McIntosh[[&lt;br /&gt;
&lt;br /&gt;
E02B Muir&lt;br /&gt;
&lt;br /&gt;
E02C Murphy&lt;br /&gt;
&lt;br /&gt;
E02D Nelson&lt;br /&gt;
&lt;br /&gt;
E02E O&#039;Donnell&lt;br /&gt;
&lt;br /&gt;
E02F Parker&lt;br /&gt;
&lt;br /&gt;
E030 Phillips&lt;br /&gt;
&lt;br /&gt;
E031 Pilkington&lt;br /&gt;
&lt;br /&gt;
E032 Quigley&lt;br /&gt;
&lt;br /&gt;
E033 Sharkey&lt;br /&gt;
&lt;br /&gt;
E034 Thomson&lt;br /&gt;
&lt;br /&gt;
E035 Watkins&lt;br /&gt;
&lt;br /&gt;
(Names above this are used for the first three climates, the following ones are used in toyland only)&lt;br /&gt;
&lt;br /&gt;
E036 Grumpy&lt;br /&gt;
&lt;br /&gt;
E037 Dozy&lt;br /&gt;
&lt;br /&gt;
E038 Speedy&lt;br /&gt;
&lt;br /&gt;
E039 Nosey&lt;br /&gt;
&lt;br /&gt;
E03A Dribble&lt;br /&gt;
&lt;br /&gt;
E03B Mushroom&lt;br /&gt;
&lt;br /&gt;
E03C Cabbage&lt;br /&gt;
&lt;br /&gt;
E03D Sniffle&lt;br /&gt;
&lt;br /&gt;
E03E Fishy&lt;br /&gt;
&lt;br /&gt;
E03F Swindle&lt;br /&gt;
&lt;br /&gt;
E040 Sneaky&lt;br /&gt;
&lt;br /&gt;
E041 Nutkins&lt;br /&gt;
&lt;br /&gt;
(The following two texts must be exactly 19 characters long, and must contain letters that are available as shortened first names of AI company managers like &amp;amp;quot;C. F. Watkins&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The first ID is used for first names, the second is for middle names, but having a middle name has a small chance.)&lt;br /&gt;
&lt;br /&gt;
E042 ABCDEFGHIJKLMNPRSTW&lt;br /&gt;
&lt;br /&gt;
E043 ABCDEFGHIJKLMNPRSTW&lt;br /&gt;
&lt;br /&gt;
(The following two are suffixes shown in the load/save dialog)&lt;br /&gt;
&lt;br /&gt;
E044 .. (Parent Directory)&lt;br /&gt;
&lt;br /&gt;
E045 &amp;amp;nbsp;(Directory)&lt;br /&gt;
&lt;br /&gt;
(Suffix to be used after the manager name to create a company name)&lt;br /&gt;
&lt;br /&gt;
E046 &amp;amp;nbsp;Transport&lt;br /&gt;
&lt;br /&gt;
(Suffix to be used after an English or German town name to create a company name)&lt;br /&gt;
&lt;br /&gt;
E047 &amp;amp;nbsp;Transport&lt;br /&gt;
&lt;br /&gt;
(Suffix to be used after a French, Spanish or silly town name to create a company name)&lt;br /&gt;
&lt;br /&gt;
E048 &amp;amp;nbsp;Transport&lt;br /&gt;
&lt;br /&gt;
(The following three are used for printing liquid amounts and speeds)&lt;br /&gt;
&lt;br /&gt;
E049 &amp;amp;nbsp;litres&lt;br /&gt;
&lt;br /&gt;
E04A kmh-1&lt;br /&gt;
&lt;br /&gt;
E04B mph&lt;br /&gt;
&lt;br /&gt;
(The following suffix is used to make a company name from an AI last name. (e.g. Watkins &amp;amp; Co.))&lt;br /&gt;
&lt;br /&gt;
E04C &amp;amp;nbsp;&amp;amp; Co.&lt;br /&gt;
&lt;br /&gt;
=E800 News texts=&lt;br /&gt;
&lt;br /&gt;
This is used internally by TTDPatch for its additional news messages.&lt;br /&gt;
&lt;br /&gt;
=F000 unused=&lt;br /&gt;
&lt;br /&gt;
(Unused, but TTD&#039;s critical error messages internally have a number in this region, even though they aren&#039;t text IDs as such.)&lt;br /&gt;
&lt;br /&gt;
=F800 Internal TTDPatch texts=&lt;br /&gt;
&lt;br /&gt;
This is used internally by TTDPatch for its additional regular strings, i.e. those from ttdpttxt.txt. Since 2.0.1 alpha 59 you may use the following text IDs to change the respective patch strings (before alpha 59, the text IDs changed regularly). For default values, please see ttdpttxt.txt produced by mkpttxt.exe.&lt;br /&gt;
&lt;br /&gt;
In case this list is outdated, you can also see their definitions (including the default strings in all 5 standard languages) by running -+mkpttxt -l &amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;[langnum]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;+-.&lt;br /&gt;
&lt;br /&gt;
F800 bribetext&lt;br /&gt;
&lt;br /&gt;
F801 bribedesc&lt;br /&gt;
&lt;br /&gt;
F802 bribefailed&lt;br /&gt;
&lt;br /&gt;
F803 headingfor&lt;br /&gt;
&lt;br /&gt;
F804 headingfordepot1&lt;br /&gt;
&lt;br /&gt;
F805 headingfordepot2&lt;br /&gt;
&lt;br /&gt;
F806 headingfordepot3&lt;br /&gt;
&lt;br /&gt;
F807 headingfordepot4&lt;br /&gt;
&lt;br /&gt;
F808 withsignals&lt;br /&gt;
&lt;br /&gt;
F809 wplainsignals&lt;br /&gt;
&lt;br /&gt;
F80A wpresignals&lt;br /&gt;
&lt;br /&gt;
F80B wpresigexits&lt;br /&gt;
&lt;br /&gt;
F80C wprecombined&lt;br /&gt;
&lt;br /&gt;
F80D presigautomatic&lt;br /&gt;
&lt;br /&gt;
F80E presigmanual&lt;br /&gt;
&lt;br /&gt;
F80F pathbasedauto&lt;br /&gt;
&lt;br /&gt;
F810 pathbasedmanual&lt;br /&gt;
&lt;br /&gt;
F811 vehmulttoolow&lt;br /&gt;
&lt;br /&gt;
F812 rchunknotloaded&lt;br /&gt;
&lt;br /&gt;
F813 loadgame&lt;br /&gt;
&lt;br /&gt;
F814 gotodepot&lt;br /&gt;
&lt;br /&gt;
F815 gotodepotonly&lt;br /&gt;
&lt;br /&gt;
F816 gototraindepot&lt;br /&gt;
&lt;br /&gt;
F817 gotoroaddepot&lt;br /&gt;
&lt;br /&gt;
F818 gotoshipdepot&lt;br /&gt;
&lt;br /&gt;
F819 gotoairdepot&lt;br /&gt;
&lt;br /&gt;
F81A routethrough&lt;br /&gt;
&lt;br /&gt;
F81B routenonstopthrough&lt;br /&gt;
&lt;br /&gt;
F81C vehobsolete&lt;br /&gt;
&lt;br /&gt;
F81D cannotcheat&lt;br /&gt;
&lt;br /&gt;
F81E cheatinvalidparm&lt;br /&gt;
&lt;br /&gt;
F81F cheatunknown&lt;br /&gt;
&lt;br /&gt;
F820 cheatobsolete1&lt;br /&gt;
&lt;br /&gt;
F821 cheatobsolete2&lt;br /&gt;
&lt;br /&gt;
F822 nostationhere&lt;br /&gt;
&lt;br /&gt;
F823 managedby1&lt;br /&gt;
&lt;br /&gt;
F824 managedby2&lt;br /&gt;
&lt;br /&gt;
F825 manage&lt;br /&gt;
&lt;br /&gt;
F826 engineinfo1&lt;br /&gt;
&lt;br /&gt;
F827 wagonpower&lt;br /&gt;
&lt;br /&gt;
F828 engineinfo2&lt;br /&gt;
&lt;br /&gt;
F829 wagoninfo&lt;br /&gt;
&lt;br /&gt;
F82A newwagoninfo&lt;br /&gt;
&lt;br /&gt;
F82B wagonspeedlimit&lt;br /&gt;
&lt;br /&gt;
F82C refittableto&lt;br /&gt;
&lt;br /&gt;
F82D refittabletoallbut&lt;br /&gt;
&lt;br /&gt;
F82E refittabletoall&lt;br /&gt;
&lt;br /&gt;
F82F railwaywagon&lt;br /&gt;
&lt;br /&gt;
F830 monorailwagon&lt;br /&gt;
&lt;br /&gt;
F831 maglevwagon&lt;br /&gt;
&lt;br /&gt;
F832 ufodestroyed&lt;br /&gt;
&lt;br /&gt;
F833 rvweightinfo&lt;br /&gt;
&lt;br /&gt;
F834 rvweightpurchasewindow&lt;br /&gt;
&lt;br /&gt;
F835 grfloaderror&lt;br /&gt;
&lt;br /&gt;
F836 toomanysprites&lt;br /&gt;
&lt;br /&gt;
F837 outofmemory&lt;br /&gt;
&lt;br /&gt;
F838 wronggrfversion&lt;br /&gt;
&lt;br /&gt;
F839 toomanyspritestotal&lt;br /&gt;
&lt;br /&gt;
F83A filenotfound&lt;br /&gt;
&lt;br /&gt;
F83B invalidsprite&lt;br /&gt;
&lt;br /&gt;
F83C notttdpatchgrf&lt;br /&gt;
&lt;br /&gt;
F83D grferror&lt;br /&gt;
&lt;br /&gt;
F83E grfwarning&lt;br /&gt;
&lt;br /&gt;
F83F grfneedspatchversion&lt;br /&gt;
&lt;br /&gt;
F840 grfneedsdoswin&lt;br /&gt;
&lt;br /&gt;
F841 grfwantsswitch&lt;br /&gt;
&lt;br /&gt;
F842 grfinvalidparam&lt;br /&gt;
&lt;br /&gt;
F843 grfconflict&lt;br /&gt;
&lt;br /&gt;
F844 grfstatcaption&lt;br /&gt;
&lt;br /&gt;
F845 grfstatapply&lt;br /&gt;
&lt;br /&gt;
F846 grfstatreset&lt;br /&gt;
&lt;br /&gt;
F847 grfinfotext&lt;br /&gt;
&lt;br /&gt;
F848 grflisthint&lt;br /&gt;
&lt;br /&gt;
F849 grfapplyhint&lt;br /&gt;
&lt;br /&gt;
F84A grfresethint&lt;br /&gt;
&lt;br /&gt;
F84B grfstatusmenu&lt;br /&gt;
&lt;br /&gt;
F84C initialgrfsettings&lt;br /&gt;
&lt;br /&gt;
F84D initialgrfsettingshint&lt;br /&gt;
&lt;br /&gt;
F84E grfstatgeninfo1&lt;br /&gt;
&lt;br /&gt;
F84F grfstatgeninfo2&lt;br /&gt;
&lt;br /&gt;
F850 grfstatgeninfo3&lt;br /&gt;
&lt;br /&gt;
F851 grfstatgeninfo4&lt;br /&gt;
&lt;br /&gt;
F852 grfstatmax&lt;br /&gt;
&lt;br /&gt;
F853 elecrailconstitle&lt;br /&gt;
&lt;br /&gt;
F854 elecrailconsmenu&lt;br /&gt;
&lt;br /&gt;
F855 lmilloutoftrees&lt;br /&gt;
&lt;br /&gt;
F856 eurointroduced&lt;br /&gt;
&lt;br /&gt;
These next thirteen text IDs, and the six at F8DD..F8E2 are difficult, if not impossible, to set correctly using action 4. Use [[Action0GeneralVariables|action 0]] instead.&lt;br /&gt;
&lt;br /&gt;
F857 curr_HUF&lt;br /&gt;
&lt;br /&gt;
F858 curr_PLN&lt;br /&gt;
&lt;br /&gt;
F859 curr_ATS&lt;br /&gt;
&lt;br /&gt;
F85A curr_BEF&lt;br /&gt;
&lt;br /&gt;
F85B curr_DKK&lt;br /&gt;
&lt;br /&gt;
F85C curr_FIM&lt;br /&gt;
&lt;br /&gt;
F85D curr_GRD&lt;br /&gt;
&lt;br /&gt;
F85E curr_CHF&lt;br /&gt;
&lt;br /&gt;
F85F curr_NLG&lt;br /&gt;
&lt;br /&gt;
F860 curr_ITL&lt;br /&gt;
&lt;br /&gt;
F861 curr_SEK&lt;br /&gt;
&lt;br /&gt;
F862 curr_RUB&lt;br /&gt;
&lt;br /&gt;
F863 curr_EUR&lt;br /&gt;
&lt;br /&gt;
F864 townlastmonthaccepted&lt;br /&gt;
&lt;br /&gt;
F865 aircraftcleared&lt;br /&gt;
&lt;br /&gt;
F866 zeppelincleared&lt;br /&gt;
&lt;br /&gt;
F867 traincleared&lt;br /&gt;
&lt;br /&gt;
F868 endofsharedorders&lt;br /&gt;
&lt;br /&gt;
F869 resetorders&lt;br /&gt;
&lt;br /&gt;
F86A toggleservice&lt;br /&gt;
&lt;br /&gt;
F86B resethint&lt;br /&gt;
&lt;br /&gt;
F86C servicehint&lt;br /&gt;
&lt;br /&gt;
F86D nosort&lt;br /&gt;
&lt;br /&gt;
F86E sortconsistnum&lt;br /&gt;
&lt;br /&gt;
F86F sortprofit&lt;br /&gt;
&lt;br /&gt;
F870 sortlastprofit&lt;br /&gt;
&lt;br /&gt;
F871 sortage&lt;br /&gt;
&lt;br /&gt;
F872 sortmaxspeed&lt;br /&gt;
&lt;br /&gt;
F873 sortreliability&lt;br /&gt;
&lt;br /&gt;
F874 sortcargo&lt;br /&gt;
&lt;br /&gt;
F875 sortdestination&lt;br /&gt;
&lt;br /&gt;
F876 sorthint&lt;br /&gt;
&lt;br /&gt;
F877 performance&lt;br /&gt;
&lt;br /&gt;
F878 vehiclelost&lt;br /&gt;
&lt;br /&gt;
F879 wrongrailtype&lt;br /&gt;
&lt;br /&gt;
F87A neterror1&lt;br /&gt;
&lt;br /&gt;
F87B neterror2&lt;br /&gt;
&lt;br /&gt;
F87C desynch1&lt;br /&gt;
&lt;br /&gt;
F87D desynch2&lt;br /&gt;
&lt;br /&gt;
F87E refitvehicle&lt;br /&gt;
&lt;br /&gt;
F87F refitcargohint&lt;br /&gt;
&lt;br /&gt;
F880 refitbuttonhint&lt;br /&gt;
&lt;br /&gt;
F881 cantbuildcanalhere&lt;br /&gt;
&lt;br /&gt;
F882 fundprospecting&lt;br /&gt;
&lt;br /&gt;
F883 buildindustry&lt;br /&gt;
&lt;br /&gt;
F884 fundingfailed&lt;br /&gt;
&lt;br /&gt;
F885 cannotfundprospecting&lt;br /&gt;
&lt;br /&gt;
The following 9 TextIDs are used if vehicle message are set to use the vehicle name, not the vehicle number (i.e. if miscmods.usevehnumbernotname is off). They behave in the following manner: If set to an empty string (a single 00 - the default value), the Patch tries to automatically generate each them from one or two original TTD TextIDs. If it is unable to match and replace the string (which is likely to happen with translated strings), it simply displays a string with format &amp;amp;quot;name??&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
F886 newtrainindepot - Looks for TextID 8864 in TextID 8814. Equivalent string is &amp;amp;quot;\94\80 is waiting in depot&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
F887 newrvindepot - Looks for TextID 902B in TextID 9016. Equivalent string is &amp;amp;quot;\94\80 is waiting in depot&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
F888 newshipindepot - Looks for TextID 9830 in TextID 981C. Equivalent string is &amp;amp;quot;\94\80 is waiting in depot&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
F889 newaircraftinhangar - Looks for TextID A02F in TextID A014. Equivalent string is &amp;amp;quot;\94\80 is waiting in the aircraft hangar&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
F88A newvehold - Generated from TextID 01A0. Equivalent string is &amp;amp;quot;\94\80 is getting old&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
F88B newvehveryold - Generated from TextID 01A1. Equivalent string is &amp;amp;quot;\94\80 is getting very old&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
F88C newvehveryveryold - Generated from TextID 01A2. Equivalent string is &amp;amp;quot;\94\80 is getting very old and urgently needs replacing&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
F88D newvehiclelost - Generated from TextID F878 (vehiclelost). Equivalent string is &amp;amp;quot;\94\80 seems to be lost&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
F88E newcantreverse - Generated from TextID F8AE (cantreverse). Equivalent string is &amp;amp;quot;\94\80 needs to reverse but cannot do so safely.&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
F88F txtetoolboxmenu&lt;br /&gt;
&lt;br /&gt;
F890 txtetoolbox&lt;br /&gt;
&lt;br /&gt;
F891 txtetoolbox_tsigns&lt;br /&gt;
&lt;br /&gt;
F892 txtetoolbox_tsignstrans&lt;br /&gt;
&lt;br /&gt;
F893 txtetoolbox_tsignsold&lt;br /&gt;
&lt;br /&gt;
F894 txtetoolbox_dsize&lt;br /&gt;
&lt;br /&gt;
F895 txtetoolbox_d8&lt;br /&gt;
&lt;br /&gt;
F896 txtetoolbox_d10&lt;br /&gt;
&lt;br /&gt;
F897 txtetoolbox_d12&lt;br /&gt;
&lt;br /&gt;
F898 txtetoolbox_d14&lt;br /&gt;
&lt;br /&gt;
F899 txtetoolbox_d16&lt;br /&gt;
&lt;br /&gt;
F89A txtetoolbox_d18&lt;br /&gt;
&lt;br /&gt;
F89B txtetoolbox_d20&lt;br /&gt;
&lt;br /&gt;
F89C txtetoolbox_depotalltrash&lt;br /&gt;
&lt;br /&gt;
F89D txtetoolbox_on&lt;br /&gt;
&lt;br /&gt;
F89E txtetoolbox_off&lt;br /&gt;
&lt;br /&gt;
F89F txtetoolbox_saveinsavegame&lt;br /&gt;
&lt;br /&gt;
))F8A0[[]]F8A0[[ txtetoolbox_usedefaultinsave&lt;br /&gt;
&lt;br /&gt;
))F8A1[[]]F8A1[[ txtetoolbox_saveasdefault&lt;br /&gt;
&lt;br /&gt;
))F8A2[[]]F8A2[[ txtetoolbox_resetdefaultsizes&lt;br /&gt;
&lt;br /&gt;
))F8A3[[]]F8A3[[ none&lt;br /&gt;
&lt;br /&gt;
))F8A4[[]]F8A4[[ low&lt;br /&gt;
&lt;br /&gt;
))F8A5[[]]F8A5[[ normal&lt;br /&gt;
&lt;br /&gt;
))F8A6[[]]F8A6[[ high&lt;br /&gt;
&lt;br /&gt;
))F8A7[[]]F8A7[[ defaultstation&lt;br /&gt;
&lt;br /&gt;
))F8A8[[]]F8A8[[ stationnumdefault&lt;br /&gt;
&lt;br /&gt;
))F8A9[[]]F8A9[[ stationclassdefault&lt;br /&gt;
&lt;br /&gt;
F8AA unnamedtownnamestyle&lt;br /&gt;
&lt;br /&gt;
F8AB newshistory&lt;br /&gt;
&lt;br /&gt;
F8AC messagesettings&lt;br /&gt;
&lt;br /&gt;
F8AD messages&lt;br /&gt;
&lt;br /&gt;
F8AE cantreverse&lt;br /&gt;
&lt;br /&gt;
F8AF grflanguage&lt;br /&gt;
&lt;br /&gt;
))F8B0[[]]F8B0[[ sizertooltip&lt;br /&gt;
&lt;br /&gt;
))F8B1[[]]F8B1[[ stickytooltip&lt;br /&gt;
&lt;br /&gt;
))F8B2[[]]F8B2[[ rcw_railway&lt;br /&gt;
&lt;br /&gt;
))F8B3[[]]F8B3[[ rcw_signaltype&lt;br /&gt;
&lt;br /&gt;
))F8B4[[]]F8B4[[ rcw_semaphores&lt;br /&gt;
&lt;br /&gt;
))F8B5[[]]F8B5[[ rcw_lights&lt;br /&gt;
&lt;br /&gt;
))F8B6[[]]F8B6[[ rcw_automatic&lt;br /&gt;
&lt;br /&gt;
))F8B7[[]]F8B7[[ rcw_normal&lt;br /&gt;
&lt;br /&gt;
))F8B8[[]]F8B8[[ rcw_entry&lt;br /&gt;
&lt;br /&gt;
))F8B9[[]]F8B9[[ rcw_exit&lt;br /&gt;
&lt;br /&gt;
F8BA rcw_combo&lt;br /&gt;
&lt;br /&gt;
F8BB rcw_nopbs&lt;br /&gt;
&lt;br /&gt;
F8BC rcw_pbs&lt;br /&gt;
&lt;br /&gt;
F8BD rcw_tracks&lt;br /&gt;
&lt;br /&gt;
F8BE rcw_length&lt;br /&gt;
&lt;br /&gt;
F8BF rcw_drag&lt;br /&gt;
&lt;br /&gt;
))F8C0[[]]F8C0[[ rcw_class&lt;br /&gt;
&lt;br /&gt;
))F8C1[[]]F8C1[[ rcw_type&lt;br /&gt;
&lt;br /&gt;
))F8C2[[]]F8C2[[ rcw_accepts&lt;br /&gt;
&lt;br /&gt;
))F8C3[[]]F8C3[[ outofdynmem&lt;br /&gt;
&lt;br /&gt;
))F8C4[[]]F8C4[[ cantresize&lt;br /&gt;
&lt;br /&gt;
))F8C5[[]]F8C5[[ grftextnotfound&lt;br /&gt;
&lt;br /&gt;
))F8C6[[]]F8C6[[ newindubuildindustry&lt;br /&gt;
&lt;br /&gt;
))F8C7[[]]F8C7[[ newindufundprospecting&lt;br /&gt;
&lt;br /&gt;
))F8C8[[]]F8C8[[ newinduproduces&lt;br /&gt;
&lt;br /&gt;
))F8C9[[]]F8C9[[ toomanyindustries&lt;br /&gt;
&lt;br /&gt;
F8CA newindulist_tooltip&lt;br /&gt;
&lt;br /&gt;
F8CB newinduinfo_tooltip&lt;br /&gt;
&lt;br /&gt;
F8CC newindubuild_tooltip&lt;br /&gt;
&lt;br /&gt;
F8CD newinduprospect_tooltip&lt;br /&gt;
&lt;br /&gt;
F8CE newindu_cargowaiting&lt;br /&gt;
&lt;br /&gt;
F8CF warning_notowns&lt;br /&gt;
&lt;br /&gt;
))F8D0[[]]F8D0[[ localplayer&lt;br /&gt;
&lt;br /&gt;
))F8D1[[]]F8D1[[ remoteplayer&lt;br /&gt;
&lt;br /&gt;
))F8D2[[]]F8D2[[ multiplayer&lt;br /&gt;
&lt;br /&gt;
))F8D3[[]]F8D3[[ multiplayer_tooltip&lt;br /&gt;
&lt;br /&gt;
))F8D4[[]]F8D4[[ patchsnd_dll_notfound&lt;br /&gt;
&lt;br /&gt;
))F8D5[[]]F8D5[[ statistics&lt;br /&gt;
&lt;br /&gt;
))F8D6[[]]F8D6[[ statistics_white&lt;br /&gt;
&lt;br /&gt;
))F8D7[[]]F8D7[[ totalcargo&lt;br /&gt;
&lt;br /&gt;
))F8D8[[]]F8D8[[ landareainfoheight&lt;br /&gt;
&lt;br /&gt;
))F8D9[[]]F8D9[[ txteroadmenu&lt;br /&gt;
&lt;br /&gt;
F8DA txtetramwindowheader&lt;br /&gt;
&lt;br /&gt;
F8DB hotkeylistdos&lt;br /&gt;
&lt;br /&gt;
F8DC hotkeylistwin&lt;br /&gt;
&lt;br /&gt;
These next six text IDs, and the thirteen at F857..F863 are difficult, if not impossible, to set correctly using action 4. Use [[Action0GeneralVariables|action 0]] instead.&lt;br /&gt;
&lt;br /&gt;
F8DD curr_pound&lt;br /&gt;
&lt;br /&gt;
F8DE curr_dollar&lt;br /&gt;
&lt;br /&gt;
F8DF curr_franc&lt;br /&gt;
&lt;br /&gt;
))F8E0[[]]F8E0[[ curr_deutschmark&lt;br /&gt;
&lt;br /&gt;
))F8E1[[]]F8E1[[ curr_yen&lt;br /&gt;
&lt;br /&gt;
))F8E2[[]]F8E2[[ curr_peseta&lt;br /&gt;
&lt;br /&gt;
))F8E3[[]]F8E3[[ shortdateformat&lt;br /&gt;
&lt;br /&gt;
))F8E4[[]]F8E4[[ longdateformat&lt;br /&gt;
&lt;br /&gt;
))F8E5[[]]F8E5[[ txtltwocc&lt;br /&gt;
&lt;br /&gt;
))F8E6[[]]F8E6[[ txtltwoccglb&lt;br /&gt;
&lt;br /&gt;
))F8E7[[]]F8E7[[ txtltwoccstm&lt;br /&gt;
&lt;br /&gt;
))F8E8[[]]F8E8[[ txtltwoccdsl&lt;br /&gt;
&lt;br /&gt;
))F8E9[[]]F8E9[[ txtltwoccelc&lt;br /&gt;
&lt;br /&gt;
F8EA txtltwoccmor&lt;br /&gt;
&lt;br /&gt;
F8EB txtltwoccmgv&lt;br /&gt;
&lt;br /&gt;
F8EC txtltwoccdmu&lt;br /&gt;
&lt;br /&gt;
F8ED txtltwoccemu&lt;br /&gt;
&lt;br /&gt;
F8EE txtltwoccpaw&lt;br /&gt;
&lt;br /&gt;
F8EF txtltwoccfrw&lt;br /&gt;
&lt;br /&gt;
))F8F0[[]]F8F0[[ txtltwoccbus&lt;br /&gt;
&lt;br /&gt;
))F8F1[[]]F8F1[[ txtltwocctrm&lt;br /&gt;
&lt;br /&gt;
))F8F2[[]]F8F2[[ txtltwocctrk&lt;br /&gt;
&lt;br /&gt;
))F8F3[[]]F8F3[[ txtltwoccpsh&lt;br /&gt;
&lt;br /&gt;
))F8F4[[]]F8F4[[ txtltwoccfsh&lt;br /&gt;
&lt;br /&gt;
))F8F5[[]]F8F5[[ txtltwoccsap&lt;br /&gt;
&lt;br /&gt;
))F8F6[[]]F8F6[[ txtltwocclap&lt;br /&gt;
&lt;br /&gt;
))F8F7[[]]F8F7[[ txtltwoccfrp&lt;br /&gt;
&lt;br /&gt;
))F8F8[[]]F8F8[[ txtltwocchel&lt;br /&gt;
&lt;br /&gt;
))F8F9[[]]F8F9[[ txtltwocclr1&lt;br /&gt;
&lt;br /&gt;
F8FA txtltwocclr2&lt;br /&gt;
&lt;br /&gt;
F8FB steepslopes&lt;br /&gt;
&lt;br /&gt;
F8FC landhigherbridgehead&lt;br /&gt;
&lt;br /&gt;
F8FD grfhelpercaption&lt;br /&gt;
&lt;br /&gt;
F8FE grfhelper_displxrelyrel&lt;br /&gt;
&lt;br /&gt;
F8FF textsprite&lt;br /&gt;
&lt;br /&gt;
F900 txtetramstationheader&lt;br /&gt;
&lt;br /&gt;
F901 txtetramdepotheader&lt;br /&gt;
&lt;br /&gt;
F902 statistics_tooltip&lt;br /&gt;
&lt;br /&gt;
F903 conflict_itself&lt;br /&gt;
&lt;br /&gt;
F904 conflict_preexist&lt;br /&gt;
&lt;br /&gt;
F905 grfstatdebug&lt;br /&gt;
&lt;br /&gt;
F906 grfdebughint&lt;br /&gt;
&lt;br /&gt;
F907 grfdebugmsg&lt;br /&gt;
&lt;br /&gt;
F908 firstpasstramarrives&lt;br /&gt;
&lt;br /&gt;
F909 firstfreighttramarrives&lt;br /&gt;
&lt;br /&gt;
The following strings/textIDs are for TTDPatch 2.5 and are different in 2.6:&lt;br /&gt;
&lt;br /&gt;
F90A newgame &amp;amp;quot;New game\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F90B newgamewindow &amp;amp;quot;\90Are you sure you want to abandon this game and start a new game?\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
The following strings/textIDs are &#039;&#039;&#039;only&#039;&#039;&#039; in TTDPatch 2.6:&lt;br /&gt;
&lt;br /&gt;
F90A airporttype &amp;amp;quot;\98Airport Type\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F90B unnamedairporttype &amp;amp;quot;(Unnamed type)\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F90C txtclonedepotbutton &amp;amp;quot;\98Clone Train\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F90D txtclonetooltip &amp;amp;quot;\98Allows you to clone a train\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F90E txtcloneerrortop &amp;amp;quot;\94Cannot clone train consist\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F90F txtclonebadcash &amp;amp;quot;\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F910 txtcloneerror_company &amp;amp;quot;\94Not a company train\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F911 txtcloneerror_unavail &amp;amp;quot;\94Vehicle in consist is not available anymore\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F912 txtcloneerror_nothead &amp;amp;quot;\94No engine head at the start of the consist\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F913 txtcloneerror_notrail &amp;amp;quot;\94Not a rail vehicle\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F914 txtcloneerror_unknown &amp;amp;quot;\94Unknown reason\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F915 grfbefore &amp;amp;quot;\94File \&amp;amp;quot;\80\&amp;amp;quot; must be loaded before \80.\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F916 grfafter &amp;amp;quot;\94File \&amp;amp;quot;\80\&amp;amp;quot; must be loaded after \80.\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F917 tr_trainlen &amp;amp;quot;Number of Train Carriages\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F918 tr_maxspeed_kph &amp;amp;quot;Maximum Speed in km/h\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F919 tr_curorder &amp;amp;quot;Station of Current Order\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F91A tr_curdeporder &amp;amp;quot;Depot of Current Order\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F91B tr_totalpower &amp;amp;quot;Total Train Horsepower\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F91C tr_totalweight &amp;amp;quot;Total Train Weight\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F91D tr_restricttitle &amp;amp;quot;\98Routefinding Restriction\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F91E tr_valuebtn &amp;amp;quot;Value\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F91F tr_andbtn &amp;amp;quot;And\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F920 tr_orbtn &amp;amp;quot;Or\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F921 tr_xorbtn &amp;amp;quot;Xor\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F922 tr_error1 &amp;amp;quot;\94Error: Too Many Restriction Objects.\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F923 tr_siggui_text &amp;amp;quot;\98Routefinding\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F924 tr_enternumber &amp;amp;quot;\94Enter Number\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F925 tr_copy &amp;amp;quot;\98Copy\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F926 tr_share &amp;amp;quot;\98Share\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F927 tr_end &amp;amp;quot;-- End of routefinding restriction criteria\80 --\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F928 tr_endshare &amp;amp;quot;, shared by \7e signals\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F929 tr_landinfotext &amp;amp;quot;restricted\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F92A tr_sigval_sw &amp;amp;quot;Signal Status SW\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F92B tr_sigval_se &amp;amp;quot;Signal Status SE\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F92C tr_sigval_nw &amp;amp;quot;Signal Status NW\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F92D tr_sigval_ne &amp;amp;quot;Signal Status NE\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F92E tr_sigval_is_green &amp;amp;quot;is green\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F92F tr_sigval_is_red &amp;amp;quot;is red\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F930 tr_sigval_is_g &amp;amp;quot;G\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F931 tr_sigval_is_r &amp;amp;quot;R\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F932 tr_maxspeed_mph &amp;amp;quot;Maximum Speed in mph\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F933 tr_nextorder &amp;amp;quot;Station of Next Order\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F934 tr_lastvisitstation &amp;amp;quot;Last Visited Station\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F935 tr_carriescargo &amp;amp;quot;Train Cargo\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F936 tr_distancefromsig &amp;amp;quot;Number of tiles from signals\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F937 tr_vartxt &amp;amp;quot;Variable\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F938 tr_optxt &amp;amp;quot;Op\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F939 directoryoverflow &amp;amp;quot;\94Too many folders in listing\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F93A trdlg_eq &amp;amp;quot;is\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F93B trdlg_neq &amp;amp;quot;is not\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F93C tr_nextdeporder &amp;amp;quot;Depot of Next Order\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F93D adjsttitle &amp;amp;quot;\94\80 - Adjacent stations\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F93E adjstnumstsinrange &amp;amp;quot;\98Number of stations in range found: \85\85\85\7e\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F93F adjstnormstmergealgtxt &amp;amp;quot;\98Standard merge to connecting station\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F940 adjstnewsttxt &amp;amp;quot;\98Create new station\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F941 adjstnewstbuoy &amp;amp;quot;\98Create new standard buoy\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F942 adjstnewenhbuoy &amp;amp;quot;\98Create new station buoy\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F943 newgame &amp;amp;quot;New game\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F944 newgamewindow &amp;amp;quot;\90Are you sure you want to abandon this game and start a new game?\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F945 aquaducttext &amp;amp;quot;Aquaduct\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F946 headingfordepot1v2 &amp;amp;quot;\95\80 Train Depot\80, \84\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F947 headingfordepot2v2 &amp;amp;quot;\95\80 Road Depot\80, \84\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F948 headingfordepot3v2 &amp;amp;quot;\95\80 Ship Depot\80, \84\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F949 canaltexttip &amp;amp;quot;\98Build Canals and Locks\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F94A rivertexttip &amp;amp;quot;\98Build River\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F94B aquaducttexttip &amp;amp;quot;\98Build an Aqueduct to overpass a valley\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F94C waterconstrwin &amp;amp;quot;\94Water construction\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F94D waterconstrtbtip &amp;amp;quot;\98Canal, River and Aqueduct construction\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F94E sortname &amp;amp;quot;Name\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F94F tr_days_since_last_service &amp;amp;quot;Number of Days Since Last Service\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F950 tr_searching_for_depot &amp;amp;quot;Train \80 Currently Searching For Depot\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F951 tr_ps_wintitle=&amp;amp;quot;\98Signal Programming\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F952 tr_ps_gui_text=&amp;amp;quot;\98Signal\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F953 tr_ps_sigcount_g=&amp;amp;quot;No. of green entrance signals\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F954 tr_ps_sigcount_go=&amp;amp;quot;No. of green one-way entrance signals\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F955 tr_ps_sigcount_gt=&amp;amp;quot;No. of green two-way entrance signals\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F956 tr_ps_sigcount_r=&amp;amp;quot;No. of red entrance signals\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F957 tr_ps_sigcount_ro=&amp;amp;quot;No. of red one-way entrance signals\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F958 tr_ps_sigcount_rt=&amp;amp;quot;No. of red two-way entrance signals\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F959 tr_ps_end=&amp;amp;quot;-- End of criteria to set signal to red\80 --\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F95A tr_ps_landinfotext=&amp;amp;quot;programmed\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F95B ne=&amp;amp;quot;NE\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F95C se=&amp;amp;quot;SE\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F95D sw=&amp;amp;quot;SW\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F95E nw=&amp;amp;quot;NW\00&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
F95F tr_entertileside=&amp;amp;quot;Entered side of tile\00&amp;amp;quot;&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
	<entry>
		<id>https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Signals&amp;diff=653</id>
		<title>VariationalAction2/Signals</title>
		<link rel="alternate" type="text/html" href="https://newgrf-specs.tt-wiki.net/index.php?title=VariationalAction2/Signals&amp;diff=653"/>
		<updated>2007-01-18T10:53:15Z</updated>

		<summary type="html">&lt;p&gt;Jgr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Variational Action 2 Variables for New Signals&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Variational Action 2 Variables for New Signals=&lt;br /&gt;
&lt;br /&gt;
This is available from 2.6 alpha 0 r1247 onwards.&lt;br /&gt;
&lt;br /&gt;
This type of variational action 2 requires the use of advanced calculations: [[VarAction2Advanced]]&lt;br /&gt;
&lt;br /&gt;
=Inputs:=&lt;br /&gt;
&lt;br /&gt;
===Variable 10:===&lt;br /&gt;
&lt;br /&gt;
||Bit|Meaning&lt;br /&gt;
&lt;br /&gt;
0|Green&lt;br /&gt;
&lt;br /&gt;
1-3|Front facing: 0=SW, 1=NE, 2=NW, 3=SE, 4=E, 5=W, 6=S, 7=N&lt;br /&gt;
&lt;br /&gt;
4-5|Presignals: 0=norm, 1=entrance, 2=exit, 3=combo&lt;br /&gt;
&lt;br /&gt;
6|Semaphore&lt;br /&gt;
&lt;br /&gt;
7|PBS&lt;br /&gt;
&lt;br /&gt;
8|Restricted||&lt;br /&gt;
&lt;br /&gt;
Note: that these are the same bits as would be used to order action5 block type 4.&lt;br /&gt;
&lt;br /&gt;
===Variable 18===&lt;br /&gt;
&lt;br /&gt;
||Bit|Meaning&lt;br /&gt;
&lt;br /&gt;
0-7|~pp~L5 of signal tile&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; 0: track in X&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; 1: track in Y&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; 2: track in N&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; 3: track in S&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; 4: track in W&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; 5: track in E~/pp~&lt;br /&gt;
&lt;br /&gt;
8-15|Low half of L3 of tile, bits 4-7 bitmask of which signals present as shown below, bits 0-3: track type&lt;br /&gt;
&lt;br /&gt;
16-23|~pp~Which signal is currently being drawn, bit index of L3 signal mask:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; * For track in the X direction:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 6: &amp;amp;nbsp;signal in the SW direction&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 7: &amp;amp;nbsp;signal in the NE direction&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; * For track in the Y direction:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 6: &amp;amp;nbsp;signal in the NW direction&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 7: &amp;amp;nbsp;signal in the SE direction&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; * For tracks in the W-E direction:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 4: &amp;amp;nbsp;signal in the W direction on the track in the S corner&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 5: &amp;amp;nbsp;signal in the E direction on the track in the S corner&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 6: &amp;amp;nbsp;signal in the W direction on the track in the N corner&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 7: &amp;amp;nbsp;signal in the E direction on the track in the N corner&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; * For tracks in the N-S direction:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 4: &amp;amp;nbsp;signal in the S direction on the track in the E corner&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 5: &amp;amp;nbsp;signal in the N direction on the track in the E corner&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 6: &amp;amp;nbsp;signal in the S direction on the track in the W corner&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; 7: &amp;amp;nbsp;signal in the N direction on the track in the W corner~/pp~&lt;br /&gt;
&lt;br /&gt;
24-27|Land/Fence type&lt;br /&gt;
&lt;br /&gt;
28-31|Terrain type: 0=normal, 1=desert, 2=rainforest, 4=snow||&lt;br /&gt;
&lt;br /&gt;
===Parameterised var 60===&lt;br /&gt;
&lt;br /&gt;
Parameter is two signed nybble offsets to add to coordinates of tile.&lt;br /&gt;
&lt;br /&gt;
The low nybble is added to the X coordinate (top-right to bottom-left).&lt;br /&gt;
&lt;br /&gt;
The high nybble is added to the Y coordinate (top-left to bottom-right).&lt;br /&gt;
&lt;br /&gt;
The information is retrieved from the tile after the coordinates have been adjusted, starting from the tile which is currently being drawn.&lt;br /&gt;
&lt;br /&gt;
||Bit|Meaning&lt;br /&gt;
&lt;br /&gt;
0-7|L5&lt;br /&gt;
&lt;br /&gt;
8-15|L3 low&lt;br /&gt;
&lt;br /&gt;
16-20|Altitude of tile&amp;amp;lt;&amp;amp;lt;3&lt;br /&gt;
&lt;br /&gt;
21-25|Slope map of tile&lt;br /&gt;
&lt;br /&gt;
26|Tile has same owner&lt;br /&gt;
&lt;br /&gt;
27|Semaphores&lt;br /&gt;
&lt;br /&gt;
28|Tile has same track bits&lt;br /&gt;
&lt;br /&gt;
29|Tile has same slope and altitude&lt;br /&gt;
&lt;br /&gt;
30|Tile has signals&lt;br /&gt;
&lt;br /&gt;
31|Tile is a track tile||&lt;br /&gt;
&lt;br /&gt;
Return value cached in varaction2var 10&lt;br /&gt;
&lt;br /&gt;
=Output=&lt;br /&gt;
&lt;br /&gt;
===Callback return value:===&lt;br /&gt;
&lt;br /&gt;
||Bit|Meaning&lt;br /&gt;
&lt;br /&gt;
0|Use new sprites&lt;br /&gt;
&lt;br /&gt;
1-4|Num sprites, varaction2vars 0x20-2F&lt;br /&gt;
&lt;br /&gt;
5|Use recolour sprite specified in varaction2var 0x30&lt;br /&gt;
&lt;br /&gt;
6|Use ordinary signal sprite number: varaction2var 0x20, (this overrides all other bits)||&lt;br /&gt;
&lt;br /&gt;
===Varaction2var 20-2F value===&lt;br /&gt;
&lt;br /&gt;
||Bit|Meaning&lt;br /&gt;
&lt;br /&gt;
0-12|Sprite offset into action5 block 0E.&lt;br /&gt;
&lt;br /&gt;
13|Add sprite yrel to Y correction for next sprite (sub from 3D Z), (yrel must fit in a signed byte)&lt;br /&gt;
&lt;br /&gt;
14-18|Sprite Y (-3D Z) correction for next sprite, (signed), (added to total)~010~Overall change to 3D Z, (-Y correction), must be positive, else risk of TTD crashing&lt;br /&gt;
&lt;br /&gt;
19-23|Sprite Y (-3D Z) correction for this sprite only, (signed), (not added to total)&lt;br /&gt;
&lt;br /&gt;
24-27|Sprite X correction for next sprite &amp;amp;lt;&amp;amp;lt; 1, (signed), (added to total)&lt;br /&gt;
&lt;br /&gt;
28-31|Sprite X correction for this sprite only &amp;amp;lt;&amp;amp;lt; 1, (signed), (not added to total)||&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
A generic action 3 feature 0E should be used to reference the action 2.&lt;br /&gt;
&lt;br /&gt;
Callback 0x146 will call this action 3 when a signal is drawn.&lt;br /&gt;
&lt;br /&gt;
Should the GRF not support the type of signal indicated in variable 10, an invalid callback result should be returned. Returning 0 will prevent further new signal GRF files from being queried and will cause the default signal graphics to be used. Returning 0 should only be done to explicitly prevent lower priority new signals GRFs from possibly drawing the signal.&lt;br /&gt;
&lt;br /&gt;
The result to the callback should be returned as a calculation result.&lt;br /&gt;
&lt;br /&gt;
Bits 1-4 of the callback result indicate how many varaction2vars starting from 0x20 will be used to specify sprites, to be drawn. Operator 0E should be used to store the appropriate values in vars 0x20-2F and 30 as appropriate.&lt;br /&gt;
&lt;br /&gt;
Recolour sprites, specifed in varaction2var 0x30 and bit 5 of the callback result are applied for all of the sprites to be drawn.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
&lt;br /&gt;
[http://tt-forums.net/viewtopic.php?p=529007#529007|Example GRF with NFO, PCX components.]&lt;/div&gt;</summary>
		<author><name>Jgr</name></author>
	</entry>
</feed>