Difference between revisions of "NML:Badges"

From GRFSpecs
Jump to navigationJump to search
m (→‎Prerequisites: Use <code style="color:green">)
 
Line 85: Line 85:
 
Badges require a [[NML:Badgetable|badgetable]] to be defined for most common usage scenarios (eg to refer to a badge from an item block). This is not a hard requirement and can be omitted if you are, for example, creating badges that other newGRFs can later refer to
 
Badges require a [[NML:Badgetable|badgetable]] to be defined for most common usage scenarios (eg to refer to a badge from an item block). This is not a hard requirement and can be omitted if you are, for example, creating badges that other newGRFs can later refer to
   
Eg for `power/diesel` to be used in the badges property for a vehicle, the badge table must contain entries for both `power` and `power/diesel`
+
Eg for <code style="color:green">power/diesel</code> to be used in the badges property for a vehicle, the badge table must contain entries for both <code style="color:green">power</code> and <code style="color:green">power/diesel</code>
   
 
== Example code ==
 
== Example code ==

Latest revision as of 15:26, 14 January 2026

Props, Vars and CBs

Since Supported by OpenTTD 15.015.0

 item (FEAT_BADGES, item_name) { ... }

Badge properties

property value range comment
label string with / as delimiter For sake of compatibility and user experience, consider using labels already introduced by other NewGRFs.

Badges with label without / are considered to be classes. Labels for other badges should match following syntax: "label_of_class_they_belong_to/label_for_the_badge"

name string Name of this badge or badge class.
flags bitmask(BADGE_FLAG_XXX, ...);
COPY_TO_RELATED_ENTITY
Badge can be copied to related entity (e.g. badge on a railtype can be copied to rail vehicles of that railtype.)
NAME_LIST_STOP
Stops adding more names to the visible name list.
NAME_LIST_FIRST_ONLY
Add this name to the visible name list only if this is the first name.
USE_COMPANY_COLOUR
Recolour badge depending on company that player currently controls.
NAME_SKIP
Allow the badge to be excluded from the badge name list.

Badge variables

name value range comment
intro_date date(yyyy, mm, dd) Introduction date of entity (or current date if entity type does not have an introduction date). See introduction_date in vehicle properties.

Badge callbacks

callback return value comment
default spriteset Graphics for the badge or badge class.

aircraft
airports
airporttiles
houses
industries
industrytiles
objects
railtypes
roadstops
roadtypes
roadvehs
ships
stations
trains
tramtypes

spriteset Override default graphics when used by other specific feature.

Prerequisites

Badges require a badgetable to be defined for most common usage scenarios (eg to refer to a badge from an item block). This is not a hard requirement and can be omitted if you are, for example, creating badges that other newGRFs can later refer to

Eg for power/diesel to be used in the badges property for a vehicle, the badge table must contain entries for both power and power/diesel

Example code


 badgetable {
     "power",
     "power/diesel",
     "power/steam"
 }

item (FEAT_BADGES, power) {
    property {
        label: "power";
        name: string(STR_POWER);
    }
}

# This badge will not show a sprite in the purchase menu
item (FEAT_BADGES, diesel) {
    property {
        label: "power/diesel";
        name: string(STR_POWER_DIESEL);
    }
}

# This badge will show a sprite in the purchase menu
item (FEAT_BADGES, steam) {
    property {
        label: "power/steam";
        name: string(STR_POWER_STEAM);
    }
    graphics {
        default: sprite_steam;
    }
}