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

Wall Object Properties

As default, walls only require 2 images: one facing right, and one facing left (this order is used for all images unless stated otherwise). With all of the flags off, the game just reuses the images for the other side.

The flags that change this image sequence are generally incompatible. Specifically, only one of isAllowedOnSlope, isAnimated, and isDoor should be true at the same time.


isAllowedOnSlope adds 4 images of the sloped wall, as follows:

  • 2 normal images
  • 2 images with the far side sloped up
  • 2 images with the near side sloped up

For both hasGlass and isBanner (which are incompatible with each other), the game indexes the images as if isAllowedOnSlope is true, and expects the glass images or the rear images to start after the sloped images. If the wall isn't actually allowed on slopes, those sloped images can just be blank, since they aren't used. The image sequence is as follows:

  • 2 normal images
  • 4 sloped images
  • Repeat the last 6, with glass (if hasGlass) or for the other side (if isBanner)

isAnimated gives the wall an 8-frame animation. That's 16 images in total, alternating right/left through 8 frames.


If isDoor is set, its sprite are split up into the part of the door that will appear behind a car passing through it, followed by a sprite containing the part of the door that will appear in front of a car passing through it.

The image sequence is as follows:

  • Closed door (facing right and then left)
  • Four frame animation of the door opening towards the side facing the camera
  • Four frame animation of the door opening away from the side facing the camera.

There should be 36 separate images in total. (If isLongDoorAnimation is set, those are 16 frame animations, and there should be 132 images in total.)

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",

height : integer
Height of the object, where there are 8 units per height step (for reference, a "quarter" height wall is one step = 8 units high). Therefore this value is generally a multiple of eight.
price : integer
The cost of building this object.
sceneryGroup : string
OpenRCT2 id of the primary scenery group this object should be included in. For walls, the main ones are "rct2.scenery_group.scgwalls" and "rct2.scenery_group.scgfences"
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.
hasTernaryColour : boolean
True for objects that have three remappable colors.
isOpaque : boolean
This is currently named backwards. If true, guests will look through this wall when they are watching rides or photogenic scenery.
scrollingMode : integer
If set and not equal to 0, this wall is a sign with scrolling text on it, and this value sets the scrolling mode of it.
isAllowedOnSlope : boolean
If true, this wall can be placed on slopes. This requires four more images.
hasGlass : boolean
True for walls that have glass elements. Requires a second set of images placed afterward for the glass itself. These images are just a mask and should be a flat color.
isAnimated : boolean
True for walls that are animated. The only option is an 8-frame animation sequence (it plays at 0.5 frames/tick which is about 20 fps).

isBanner : boolean
This flag should really be named isTwoSided. If true, it adds separate images for the rear side of the wall. This flag is set for the only scrolling sign (or banner) in vanilla RCT2, but it can be used with other types of wall too.

isDoor : boolean
True for wall objects that are doors designed to be placed on certain tracked rides.
isLongDoorAnimation : boolean
For wall objects that are doors (isDoor is true), if true, they will use a 16 frame instead of a 4 frame opening animation. No existing objects use this.
doorSound : integer
For wall objects that are doors (isDoor is true), this number determines which sound plays when it opens/closes. Currently the only options are 1 for the normal door sound or 2 for the portcullis sound.

rct2.scenery_wall.wc16 (Fence)

"properties": {
    "isOpaque": true,
    "isAllowedOnSlope": true,
    "height": 2,
    "price": 40,
    "sceneryGroup": "rct2.scenery_group.scgfence"
}

rct2.scenery_wall.wgw2 (Glass Wall)

"properties": {
    "hasPrimaryColour": true,
    "hasSecondaryColour": true,
    "hasGlass": true,
    "isOpaque": true,
    "isAllowedOnSlope": true,
    "height": 2,
    "price": 90,
    "sceneryGroup": "rct2.scenery_group.scgfence"
}

rct2.scenery_wall.wallsign (Scrolling Sign)

"properties": {
    "isBanner": true,
    "hasPrimaryColour": true,
    "hasSecondaryColour": true,
    "height": 2,
    "price": 120,
    "scrollingMode": 34
}