m4nfo object properties are based on plain nfo's action0 properties. Most of them are mapped in a straightforward way, but some of m4nfo's object property functions are based on custom calculations, or based on using more than one nfo property.
| m4nfo function | nfo property | custom |
| anim_info | 0x11 | |
| anim_speed | 0x12 | |
| anim_triggers | 0x13 | |
| buildingheight | 0x16 | |
| callbacks | 0x15 | yes |
| classlabel | 0x08 | |
| classname | 0x09 | |
| climate | 0x0B | |
| flags | 0x10 | |
| numviews | 0x17 | |
| objectname | 0x0A | |
| price | 0x0D | |
| removalcost | 0x14 | |
| size | 0x0C | |
| timeframe | 0x0E + 0x0F | yes |
| Flag label | Bit | Value |
| INEDITOR | 0 | 0x01 |
| NOTREMOVABLE | 1 | 0x02 |
| REMOVABLE | 2 | 0x04 |
| BUILDONWATER | 3 | 0x08 |
| REMOVALINCOME | 4 | 0x10 |
| NOFOUNDATION | 5 | 0x20 |
| HASANIMATION | 6 | 0x40 |
| INGAME | 7 | 0x80 |
| TWOCC | 8 | 0x100 |
| NOBUILDONLAND | 9 | 0x200 |
| DRAWWATER | 10 | 0x400 |
| ALLOWBRIDGE | 11 | 0x800 |
| RANDOMBITS | 12 | 0x1000 |
Enabling callbacks in plain nfo means to set bits in property (0x15). Unfortunately, these bits have no numerical relation to the corresponding callback values returned by nfo's variable (0x0C). In m4nfo, both property function callbacks() and performance function callback() are using the same callback labels.
This function links the two nfo properties for 'introduction date' (0x0E) and 'end of life' (0x0F), both in days since the year 0, into one function. The time frame is given either in 'day.month.year', or 'month.year', or 'year', e.g.: timeframe(1.1.1930 .. 1.1.2050).
m4nfo object performance functions are based on plain nfo's Variational Action2 variables. Again, most of them are mapped in a straightforward way, but some of m4nfo's object performance functions are based on custom calculations, or based on use of more than one nfo variable.
Please note that functions return either Byte, Word or Dword values, depending on the context they're used in.
| m4nfo function | nfo var | Byte | Word/Dword | |
| anim_frame | 0x43/0x63 | 81 (43 | (63 $1)) 00 FF | ||
| callback | 0x0C | 81 0C 00 FF | 85 0C 00 FF FF | |
| colour | 0x47 | 81 47 00 FF | ||
| constructiondate | 0x42 | 89 42 00 FF FF FF FF | ||
| constructionyear | (custom) | |||
| else | n/a | |||
| getviews | 0x48 | 81 48 00 FF | ||
| objinfo_e2distance | 0x46 | 81 46 $1 00 FF FF | ||
| objinfo_founder | 0x44 | 81 44 00 FF | ||
| objinfo_height | 0x62 | 81 62 $1 10 FF | ||
| objinfo_lclass | 81 62 $1 18 0F | |||
| objinfo_mdistance | 0x45 | 81 45 $1 00 FF FF | ||
| objinfo_randombits | 0x10/0x61 | 81 (10 | (61 $1)) 00 FF | ||
| objinfo_slope | 0x41/0x62 | 81 41 08 0F | ||
| objinfo_terrain | 0x41 | 81 41 00 07 | ||
| objinfo_townzone | 0x45 | 81 45 $1 10 FF | ||
| objinfo_type | 0x60 | 81 60 $1 00 FF | 85 60 $1 00 FF FF | |
| objinfo_type4 | 0x60 | (custom) | ||
| objinfo_typeview | 0x60 | 89 60 $1 00 FF 00 03 00 | ||
| objinfo_view | 0x60 | 85 60 $1 10 0F 00 | ||
| objinfo_water | 0x62 | 81 62 $1 09 01 | ||
| objinfo_waterclass | 81 62 $1 0D 03 | |||
| position | 0x40 | 81 40 10 FF | ||
| testposition | 0x18 | 81 18 00 FF | ||
| testslope | 0x10 | 81 10 00 0F | ||
| yearbuilt | 0x42 | (custom) | ||
m4nfo object callbacks are based on plain nfo's callbacks. They're all mapped in a straightforward way. Callbacks from the first section of the table below have to be enabled by property function callbacks(), but those from the second section do not need to be: they're always active and will be used automatically if needed.
| m4nfo callback | nfo callback |
| CB_AFRAME | 0x158 |
| CB_ASPEED | 0x15A |
| CB_AUTOSLOPE | 0x15D |
| CB_COLOUR | 0x15B |
| CB_SLOPE | 0x157 |
| CB_TEXT | 0x15C |
| CB_ACONTROL | 0x159 |
Callback helper functions are based on m4nfo's function cbr() which returns a parameter as a callback return value.
| m4nfo function | definition |
| grftext | cbr($1) |
| reftxtcb | (custom) |
In nfo, randomized Action2s are used to randomize the object (0x80).
| m4nfo function | nfo random Action2 type | randomrel | 0x80 |