From GRFSpecs
Jump to navigationJump to search


A special type of action 3 is called livery or wagon override. When used, it changes the look of railway wagons when attached to a certain engine. This makes it possible to have train sets, where the look of certain wagons matches that of the engine.

It also allows changing the look of helicopter rotors, and in the future, the look of train visual effects such as steam and diesel smoke.

How to use it

The format of a wagon override is the same as a regular action 3 entry, with the following special considerations:

  • It must immediately follow the action 3 entry of the engine, or another wagon override (no other kind of sprites allowed in-between) (This requirement is no longer present starting from TTDPatch 2.0.1 alpha 41.)
  • Its nvid value must have bit 7 set, i.e. it must have 80 added to it
  • It must list the vehicle IDs of the wagons to use overrides for, and the action 2 IDs of the graphics to use for the override
  • The wagon's sprite ID must have been set to FD to show new graphics for the override to work
  • You can't skip just a livery override using action 7, you always have to skip all linked action 3's, i.e. from the engine action 3 to the last livery override.

You can have as many wagon override following an engine action 3 as you like, but they must not be interrupted by other sprites (except, since TTDPatch 2.0.1 alpha 41, a possible action 6).

When using this feature for helicopter rotor overrides (or later, for visual effect overrides), the engine action 3 and the wagon override must have the same vehicle ID, essentially making it not a wagon override but an engine override.  The patch catches this special case and makes it apply to the rotor graphics instead.


Here's an example of a passenger carriage, mail van and armoured van wagon override for the train engine with ID 28. The graphics for the engine have been defined in action 2 ID 00, those for the passenger carriage in ID 01, and mail van and armoured van use the same graphics defined in ID 02.

23 * 7   03 00 01 28 00 00 00

24 * 7   03 00 81 1B 00 01 00

25 * 7   03 00 82 1C 37 00 02 00
Byte Meaning
Passenger Carriage Override
24 <sprite-number>
7 <length> of the action in bytes; start counting at 03 (<action>)
03 <action>: sets this pseudo-sprite to function as action 3
00 <feature>: 00 for trains
81 <n-id>: 1 wagon to override
1B <ids...>: vehicle ID (1B - passenger carriage)
00 <num-cid>: this wagon doesn't have any cargo-specific graphics
01 00 <def-cid>: use action 2 ID 01
Mail Van and Armoured Van Override
25 <sprite-number>
7 <length> of the action in bytes; start counting at 03 (<action>)
03 <action>: sets this pseudo-sprite to function as action 3
00 <feature>: 00 for trains
82 <n-id>: 2 wagon IDs to override
1C 37 <ids...>: vehicle IDs, 1C mail van and 37 armoured van
00 <num-cid>: these wagons don't have cargo-specific graphics
02 00 <def-cid>: Use action 2 ID 02