NML:General

From GRFSpecs
Revision as of 17:27, 21 August 2011 by FooBar (talk | contribs) (add nav template)
Jump to navigationJump to search
Props, Vars and CBs

General variables

A number of global variables are available. Some are only available in switch-blocks, while others can be used in any expression. This is indicated by the second column in the following table:

name Available outside switch blocks Value range Comment
ttd_platform Yes PLATFORM_TTDPATCH or PLATFORM_OPENTTD
ttdpatch_version Yes
openttd_version Yes use version_openttd(MAJOR, MINOR, BUILD) to test and compare for a release version and version_openttd(MAJOR, MINOR, BUILD, REVISION) to test for a specific svn version of OpenTTD
current_palette Yes PALETTE_DOS or PALETTE_WIN
current_date No days since year 0 Use date (year, month, day) to compare with.
current_year No years since year 0
current_month No 0 .. 11
current_day_of_month No 0 .. 30
current_day_of_year No 0 .. 364 (365 in leap years)
is_leapyear No 0 or 1
date_loaded Yes days since year 0 Set to the time of game load, which is the current date in single player, and the date the server started in multiplayer. This to prevent desyncs.
year_loaded Yes years since year 0 See date_loaded.
starting_year Yes years since year 0 Years before 1920 are clamped to 1920
animation_counter No 0 .. 65535 Increased by 1 each tick
climate Yes (a) ARCTIC | TROPICAL | TOYLAND]
game_mode Yes GAME | EDITOR]
loading_stage Yes RESERVE | ACTIVATE | TEST] 'Phase' of the GRF loading process.
difficulty_level Yes (a) MEDIUM | HARD | CUSTOM]
display_options No STATION_NAMES | SIGNS | ANIMATION | FULL_DETAIL] Use hasbit(display_options, DISPLAY_XXX) to test a particular bit.
desert_paved_roads Yes (b) 0 or 1 If 1, desert roads have pavement and street lights.
train_width_32_px Yes (b) 0 or 1 If 1, train vehicles are 32 instead of 29 pixels wide in the depot view.
traininfo_y_offset Yes (b) -128 .. 127 Used to correctly position the depot view of trains.
snowline_height No 16 .. 120 in steps of 8, or 0xFF if no snow. One tile height is equivalent to 8 units.
traffic_side Yes (a) TRAFFIC_SIDE_LEFT or TRAFFIC_SIDE_RIGHT
freight_trains Yes 1 .. 255 Weight multiplier for freight trains
plane_speed Yes 1 .. 4 Speed multiplier for planes. Value of 1 is equal to the original speed (1/4), while 4 means that planes move at full speed (4/4)
ttdpatch_flags Yes
current_callback No Set to the ID of the current callback, useful for old-style callbacks.
extra_callback_info1 No Varies Extra callback information, meaning differs per callback.
extra_callback_info2 No Varies Extra callback information, meaning differs per callback.
last_computed_result No Result of the last (previously evaluated) switch block.
base_sprite_2cc Yes 0 .. 65535 Base sprite for 2cc (dual company colour) colour-maps
map_type Yes X_BIGGER | Y_BIGGER]
map_min_edge Yes 64 .. 2048 Length of the smallest map edge (in tiles)
map_max_edge Yes 64 .. 2048 Length of the biggest map edge (in tiles)
map_x_edge Yes 64 .. 2048 Length of the x (top-left) map edge (in tiles)
map_y_edge Yes 64 .. 2048 Length of the y (top-right) map edge (in tiles)
map_size Yes 64*64 .. 2048*2048 Total number of tiles on the map
long_bridges Yes 0 or 1
gradual_loading Yes 0 or 1
bridge_speed_limits Yes 0 or 1
signals_on_traffic_side Yes 0 or 1
electrified_railways Yes 0 or 1
unified_maglev Yes 0 .. 3
temperate_snowline Yes 0 or 1
dynamic_engines Yes 0 or 1
variable_runningcosts Yes 0 or 1
newtrains Yes 0 or 1
newrvs Yes 0 or 1
newships Yes 0 or 1
newplanes Yes 0 or 1
newhouses Yes 0 or 1
newindustries Yes 0 or 1
newcargos Yes 0 or 1

(a) The value of these variables can change during the game. Reading them from a switch block (which reads the current value) may result in a different value than in the rest of the code (which is evaluated when the game is loaded).

(b) These variables can be written as well as read. Use a normal assignment, for example:

 traininfo_y_offset = -2;