Skip to content
zrowny edited this page May 26, 2021 · 1 revision

Large Scenery Object Properties

Contents

price : integer
The cost of building this object.
cursor : enum (of string)

Cursor icon to use when placing this object

Must be one of: "CURSOR_BLANK", "CURSOR_UP_ARROW", "CURSOR_UP_DOWN_ARROW", "CURSOR_HAND_POINT", "CURSOR_ZZZ", "CURSOR_DIAGONAL_ARROWS", "CURSOR_PICKER", "CURSOR_TREE_DOWN", "CURSOR_FOUNTAIN_DOWN", "CURSOR_STATUE_DOWN", "CURSOR_BENCH_DOWN", "CURSOR_CROSS_HAIR", "CURSOR_BIN_DOWN", "CURSOR_LAMPPOST_DOWN", "CURSOR_FENCE_DOWN", "CURSOR_FLOWER_DOWN", "CURSOR_PATH_DOWN", "CURSOR_DIG_DOWN", "CURSOR_WATER_DOWN", "CURSOR_HOUSE_DOWN", "CURSOR_VOLCANO_DOWN", "CURSOR_WALK_DOWN", "CURSOR_PAINT_DOWN", "CURSOR_ENTRANCE_DOWN", "CURSOR_HAND_OPEN", "CURSOR_HAND_CLOSED", "CURSOR_ARROW",

removalPrice : integer
The cost of removing this object. This value is negative if the object gives a refund.
hasPrimaryColour : boolean
True for objects that have at least one remappable colors.
hasSecondaryColour : boolean
True for objects that have two remappable colors; hasPrimaryColour must also be set.
isAnimated : boolean
No, you still can't have animated large scenery. This is a special flag just for the large Scrolling Sign.
scrollingMode : integer : required
Scrolling mode of the sign
isPhotogenic : boolean
If true, guests will watch/photograph this object.
tiles : array of object : required

A list of tile descriptions for all the tiles making up this large scenery object. These can technically be listed in any order. The images for a normal large scenery object are the 4 preview images, and then each set of 4 images for all the tiles, in the order listed here.

*items* : object

A description of one of the tiles making up this large scenery object

x : integer
The x offset for this tile. X and Y offsets are (always?) in multiples of 32, since that's one full surface tile. When looking southeast (the direction that comes first in the images), (0,0) is in the very back. Positive-x goes to the left (and down/towards the camera), and positive-y goes to the right (and down/towards the camera).
y : integer
The y offset for this tile. X and Y offsets are (always?) in multiples of 32, since that's one full surface tile. When looking southeast (the direction that comes first in the images), (0,0) is in the very back. Positive-x goes to the left (and down/towards the camera), and positive-y goes to the right (and down/towards the camera).
z : integer
The vertical offset for this tile. 0 is in line with the bottom of this object, but higher values can accomplish things like the hollow pyramid, or other cases where different tiles take up different vertical spaces. Each height step in the game is 8 units high (I think this is equal to 4 pixels).
clearance : integer
The vertical height of this tile. This is added to the z offset to get the total height of the top of this tile, relative to the full object. Each height step in the game is 8 units high (I think this is equal to 4 pixels).
hasSupports : boolean
True for tiles that have supports when they are located in the air.
allowSupportsAbove : boolean
If true, supports from other objects will be built on top of this one.
corners : integer
This is a bitmask of the corners occupied by this tile. Defaults to 15 (all corners).
walls : integer
This is a bitmask of the walls occupied by this tile. Defaults to 0.
3dFont : object

For large scenery objects that are 3D fonts, a description of the font.

offsets : array of object : required

A list of the relative x and y offset for this font when facing left and then right.

*items* : object
x : integer
Relative x-offset
y : integer
Relative y-offset
maxWidth : integer

In pixels, the maximum length of a line of text that will fit onto a large sign using this font. I'm not sure why these are stored in the 3D font object, since the signs themselves aren't specified here, and changing the font wouldn't have any affect on the size of the sign.

Regardless, this value is 62 for horizontal signs, and 142 (which is the maxHeight, really) for vertical signs.

numImages : integer
The number of unique image (sets) actually stored in this object. If isVertical is true, there are two images for each set (facing left and then facing right). Otherwise (for horizontal signs) there are 4. (left and right, and then again, offset 1/2 pixel down to deal with aliasing or something).
isVertical : boolean
If true, this font is rendered on a large vertical sign. Otherwise, it's used on a horizontal signs.
isTwoLine : boolean
Assuming isVertical is false, this flag controls whether this font is rendered on a one-line or two-line horizontal sign.
glyphs : array of object : required

A list of the 256 glyphs making up this 3D font, mapping to the first 256 UTF-8 codepoints. For reference, that's the 128 the ASCII codepoints, followed by the 128 Latin-1 Supplement codepoints.

*items* : object

A description of one of the tiles making up this large scenery object

image : integer
The index of the image (set) to use for this glyph. For vertical signs, there are two images for each set (facing left and then facing right). For horizontal signs there are 4. (left and right, and then again, offset 1/2 pixel down to deal with aliasing or something).
width : integer
Width of the glyph, when displayed
height : integer
Height of the glyph, when displayed
sceneryGroup : string
OpenRCT2 id of the primary scenery group this object should be included in.

rct2.scenery_large.spyr (Pyramid)

"properties": {
    "price": 350,
    "removalPrice": -300,
    "cursor": "CURSOR_STATUE_DOWN",
    "isPhotogenic": true,
    "tiles": [
        {
            "x": 0,
            "y": 0,
            "clearance": 96,
            "hasSupports": true
        },
        {
            "x": 0,
            "y": 32,
            "clearance": 96,
            "hasSupports": true
        },
        [...]
        {
            "x": 96,
            "y": 96,
            "z": 144,
            "clearance": 80,
            "hasSupports": true
        },
        {
            "x": 96,
            "y": 64,
            "z": 144,
            "clearance": 80,
            "hasSupports": true
        }
    ]
}

rct2.scenery_large.ssig2 (3D Sign)

"properties": {
    "price": 20,
    "removalPrice": -10,
    "cursor": "CURSOR_ENTRANCE_DOWN",
    "hasPrimaryColour": true,
    "hasSecondaryColour": true,
    "scrollingMode": 0,
    "tiles": [
        {
            "x": 0,
            "y": 0,
            "clearance": 16,
            "walls": 4,
            "corners": 12
        },
        {
            "x": 0,
            "y": 32,
            "clearance": 16,
            "walls": 4,
            "corners": 12
        }
    ],
    "3dFont": {
        "offsets": [
            {
                "x": -1,
                "y": 0
            },
            {
                "x": 3,
                "y": -1
            }
        ],
        "maxWidth": 62,
        "numImages": 89,
        "glyphs": [
            {
                "image": 0,
                "width": 8,
                "height": 10
            },
            {
                "image": 0,
                "width": 8,
                "height": 10
            },
            [...]
        ]
    }
}