Skip to content

Incomplete

This page is incomplete. Pull requests welcome.

Scenery Documentation

This page assumes the game directory definition of what a 'scenery' item entails. Under the 'scenery' folder under the game's assets, it includes buildings, foliage, rocks, terrain, toys, zoos, and other zoo utilities.

The main configuration for these files are in .ucb, .ucs, or .ai format, but they are really .INI files. The following tables describe attributes that can be given to the entities mentioned. Example files can be found in a respective /scenery directory.

[<Codename>]

Scenery configuration files require a unique 8-character codename that will be used across the project.

Example codenames

  • uforidgs
  • F5DAD057
  • blnstngs

For personal use a unique codename might not matter so much, but if you'd like to minimize compatibility clashes with other mods due to codename conflicts, it might be a good idea to pick a non-generalized name.

[Icon]

[Icon] defines the directory for that entity's four icons.

Key Value Description
Icon <dir> Directory to the icon graphic

Example

[Icon]
Icon = objects/<Codename>/SE/SE
Icon = objects/<Codename>/SW/SW
Icon = objects/<Codename>/NW/NW
Icon = objects/<Codename>/NE/NE

[Member]

Assigns the entity to a group. This is used to define the group of entities that the entity belongs to. This is used for the game's UI and for the game's internal logic.

Incomplete

This section is incomplete. Needs remaining members.

  • developer
  • fence
  • foliage
  • habitatfence
  • habitatfoliage
  • highfence
  • lowfence
  • rocks
  • scenery
  • shelters
  • structures
  • toys
  • zoofences
  • zoogate

From castiron.ai

[Member]
zoofences
lowfence
fence

From rockwall.ai

[Member]
zoofences
habitatfence
fence

[Characteristics/Integers]

Incomplete

This section is incomplete. Needs remaining characteristics defined.

These characteristics usually require an integer value to be set. They are used to define the entity's behavior and appearance.

Standard Characteristics

These characteristics are standard across most scenery.

Key Value Description
cNameID <int> Integer key associated with a string that gives the entity its name. Value of 19000means the string is defined inside of the .ucb file. If it's a 4-digit number it's a key associated with a string in a .dll lang file.
cHelpID <int> Same concept as cNameID: keys for strings, but this one is for tooltips. If cNameID is set to 19000, ZT ignores cHelpID.
cFootprintX <int> Size of entity footprint in X direction. Value of 1 can be used for 1/4 or 1/2 tiles, otherwise must be an even integer.
cFootprintY <int> Size of entity footprint in Y direction. Value of 1 can be used for 1/4 or 1/2 tiles, otherwise must be an even integer.
cPurchaseCost <int> Price of entity
cHeight <int> Height of entity. Consistent with construction tool height.

Designation Characteristics

Key Value Description
cCommerce <int> Setting this to 1 designates the entity as a commerce entity, enabling the entity to sell goods. Set to 0 or delete line to exclude this configuration.
cFoliage <int> Setting this to 1 designates the entity as foliage. Also allows it to count toward exhibit suitability. Set to 0 or delete line to exclude this configuration.
cShelter <int> Setting this to 1 designates the entity as a shelter. Set to 0 or delete line to exclude this configuration.
cRock <int> Setting this to 1 designates the entity as a rock. Set to 0 or delete line to exclude this configuration.
cFood <int> Setting this to 1 designates the entity as animal food. Set to 0 or delete line to exclude this configuration.

Terrain Placement Characteristics

Key Value Description
cSwims <int> Setting this to 1 allows the object to be placed on water. Set to 0 or delete line to exclude this configuration.
cUnderwater <int> Setting this to 1 allows an entity to be placed underwater. Set to 0 or delete line to exclude this configuration.
cHabitat <int> What habitat the entity belongs to. 9414 makes entities unplaceable in exhibits. 9411 allows entities placeable in all exhibits. For a full list of possible values, please see Entity IDs
cOnlySwims <int> Setting this to 1 makes it so the object is only placeable on water and not on land. Set to 0 or delete line to exclude this configuration.
cSurface <int> Setting this to 1 allows an entity to be placed on water surface. Set to 0 or delete line to exclude this configuration.
cLand <int>

Misc String Characteristics

cNameID and cHelpID are a couple already described under Standard Characteristics. Here are a few more:

Key Value Description
cUsedThought <int> A user's thought after using the entity. Works similar in concept to other key/value strings above.
cLocation <int> Assigns a location to the entity. For a list of locations and their respective values, please see Entity IDs

Graphics Characteristics

These characteristics influence the appearance of the entity.

Key Value Description
cIsColorReplaced <int> Setting this to 1 allows the entity to be color-replaced. Needs to pair with a respective [colorrep] section with additional configuration settings in the same file. Set to 0 or delete line to exclude this configuration.
cDeadOnLand <int> Setting this to 1 allows a 'dead on land' status. If the entity is placed on land, a 'dead' graphic is displayed. Set to 0 or delete line to exclude this configuration.
cDeadUnderwater <int> Setting this to 1 allows a 'dead underwater' status. If the entity is placed underwater, a 'dead' graphic is displayed. Set to 0 or delete line to exclude this configuration.
cUsesRealShadows <int>
cHasShadowImages <int>

User Interaction Characteristics

These characteristics influence how the user interacts with the entity. A user can be a guest or an animal.

Key Value Description
cAdultChange <int> How happy a guest is after using the entity. Negative values are possible if you want them to hate it.
cChildChange <int> Same as above but specifically child guests.
cHungerChange <int> How much hunger is satisfied after using the entity.
cThirstChange <int> How much thirst is satisfied after using the entity.
cEnergyChange <int> How much energy is satisfied after using the entity.
cBathroomChange <int> How much bathroom need is satisfied after using the entity.
cAngryBathroomChange <int> Unknown
cHideUser <int> Setting this to 1 hides the user while using the entity. Set to 0 or delete line to exclude this configuration.
walkable <int> Setting this to 1 allows guests and animals to walk through the object. Set to 0 or delete line to exclude this configuration.
cCapacity <int> How many users may use entity at a time. It is recommended to match this value with capacity under [slot]
cUsersStayOutside <int> Setting this to 1 makes it so the user stays outside of the entity. Set to 0 or delete line to exclude this configuration.
cUserUsesExit <int>
cRandomUse <int> Setting this to 1 enables random interaction with entity. Set to 0 or delete line to exclude this configuration.
cMinUsePeriod <int> If used, define minimum use period.
cMaxUsePeriod <int> If used, define maximum use period.
cToySatisfaction <int>
cUserTeleportsInside <int>
cTimeInside <int> How long should a user be inside of a building. It mmight make sense to match this value with length of sound file if provided.
cHideBuilding <int> Setting this to 1 hides the building while in use. Set to 0 or delete line to exclude this configuration.
cUserUsesEntranceAsEmergencyExit <int> Setting this to 1 makes it so the user uses the entrance as an emergency exit. Set to 0 or delete line to exclude this configuration.
cUserUsesExit <int> Setting this to 1 makes it so the user uses the exit. Set to 0 or delete line to exclude this configuration.

I/O Characteristics

These characteristics influence how the player interacts with the entity.

Key Value Description
cNeedsConfirm <int> Setting this to 1 makes it so the entity needs confirmation window when bulldozed. Set to 0 or delete line to exclude this configuration.
cDeletable <int> Setting this to 1 allows the entity to be deleted by the player after placement or spawn. Set to 0 or delete line to exclude this configuration.
cUseNumbersInName <int> Setting this to 1 enumerates entity name in the UI. Set to 0 or delete line to exclude this configuration.
cMoveable <int> Setting this to 1 allows the entity to be moved by the player. Set to 0 or delete line to exclude this configuration.
cAutoRotate <int> Setting this to 1 automatically rotates the object on placement. Set to 0 or delete line to exclude this configuration.
cSelectable <int> Setting this to 1 allows the entity to be selected. Set to 0 or delete line to exclude this configuration.

Misc Characteristics

Key Value Description
walkableByTall <int>
cExplosionSound <string dir> Directory to sound file to play on explosion.
cExplosionSoundAtten <int> Volume of explosion sound.
cRubbleable <int>
cDepth <int>
cHasUnderwaterSection <int>
cDeadStateHeight <int>
cBlocksLOS <int>
cDirectEntrance <int> Moves user toward entity more quickly
cShow <int>
cUsesTreeRubble
cEstheticWeight
cGawkOnlyFromFront
cExpansionID
cAvoidEdges <int> Setting this to 1 prevents entity to be placed next to fences or tank walls. Set to 0 or delete line to exclude this configuration.
cFoodUnits <int> How much food the entity provides until it's empty.
cMaxFoodUnits <int> Maximum food units the entity can hold.
cFoodCategory <int> Category of food the entity provides.
cKeeperFoodType <int>

Examples

From carousal.ai

[Characteristics/Integers]
cPurchaseCost = 800
cNameID = 8001
cHelpID = 8001
;Bad Habitat Type
cHabitat = 9414
cFootprintX = 8
cFootprintY = 10
cCommerce = 1
cSelectable = 1
cNeedsConfirm = 1
cAdultChange = 0
cChildChange = 12
cHideUser = 1
cUserStaysOutside = 0
cHideBuilding = 0
cCapacity = 12
cTimeInside = 12
cUsedThought=10114
cHeight = 3

cIsColorReplaced = 1

From acacia.ai

[Characteristics/Integers]
cPurchaseCost = 125
cNameID = 7000
cHelpID = 7000
cHabitat = 9400
cLocation = 9600
cHeight = 3
cFoliage = 1
cAutoRotate = 1
cUseNumbersInName=0

From lamp.ai

[Characteristics/Integers]
cPurchaseCost = 65
cNameID = 6032
cHelpID = 6032
cFootprintX = 1
cFootprintY = 1
cUserStaysOutside = 1
cTimeInside = 0
cUsedThought= 0
cHeight = 1
;Bad Habitat Type
cHabitat = 9414
cUseNumbersInName=0

From castiron.ai

[Characteristics/Integers]
cPurchaseCost = 65
cNameID = 9305
cHelpID = 9305
cHeight = 1

[Characteristics/Floats]

Incomplete

This section is incomplete. Needs remaining characteristics defined.

These characteristics usually require a float value to be set. Since floats are decimal numbers, these characteristics are usually used to set prices for things such as upkeep and other costs.

Key Value Description
cDefaultCost <float>
cUpkeep <float> How much it costs per month to upkeep entity.
cLowCost <float>
cMedCost <float>
cHighCost <float>
cPriceFactor <float>

[Characteristics/Strings]

Key Value Description
cInfoImageName <string dir>

[Animations]

Incomplete

This section is incomplete. Needs missing definitions.

Key Value Description
idle idle Idle defines your entity as having graphics without animation. Can sometimes be a directory to a .ani file.
used used Used defines your entity as having graphics with animation.
explode <string dir>
giant
small small Usually a graphic that displays a low quantity of the entity it represents. Typically used in animal food.
mid mid Usually a graphic that displays a medium quantity of the entity it represents. Typically used in animal food.
full full Usually a graphic that displays a high quantity of the entity it represents. Typically used in animal food.
empty empty Usually a graphic that displays an empty quantity of the entity it represents. Typically used in animal food.
idledead dead Graphics for when the entity is dead.
shadowidle
underidle

Examples

From lrock1.ai

[Animations]
idle = idle

From carousal.ai

[Animations]
idle = idle
used = used

From graschow.ai

[Animations]
full = full
half = mid
empty = small

[Sells]

Used to define what the entity sells. This is used for commerce entities. There are not any key/value attributes under this section. Instead, simply list the items the entity sells. Below are possible values for this section.

Codename Description
burger Burger
candy Candy
clrbook Coloring Book
hotdog Hot Dog
icecream Ice Cream
pizza Pizza
plasanim Plastic Animal
soda Soda
sodacan Soda Can
stufpanda Stuffed Panda
trash Trash
tshirt T-Shirt
rburger
rsoda
rhotdog
rpizza

If you want your entity to sell a custom item, must include an accompanying *.cfg file with the name items-<Codename>.cfg at the base directory of the mod. This file should contain the following:

[items]
<item_codename> = items/<item_codename>.cfg

[EstheticBonus]

[EstheticBonus] defines how much a guest will enjoy looking at an entity. There's a different value for each type of guest. Every value maps a guest entity type with an esthetic bonus value. Please see Entity IDs for guest entity definitions.

Usage

Simply tweak the second v attribute for each to your preference.

Example (from `carousal.ai`)

[EstheticBonus]
; man
v = 9503
v = 10
; woman
v = 9504
v = 10
; boy
v = 9505
v = 20
; girl
v = 9506
v = 20

[Satisfies]

Incomplete

This section is incomplete. Needs remaining subcategories.

This category assigns the entity to a subcategory type in Zoo Tycoon for various stat checks.

An (incomplete) list of possible values:

  • animalrest
  • animalsex
  • bathroom
  • building
  • drink
  • energy
  • familybathroom
  • food
  • fun
  • gift
  • showtrick

Examples

From carousal.ai

[Satisfies]
building
fun

From bathroom.ai

[Satisfies]
building
bathroom

From bgrstnd.ai

[Satisfies]
building
food

From burrow1.ai

[Satisfies]
building
animalrest
animalsex

From giftshp.ai

[Satisfies]
building
gift

[UseSound]

Defines a playable sound for the entity.

Key Value Description
alwayson <0/1> Is the sound always playing?
loops <0/1> Does the sound loop on playback.
name <string dir> Directory of sound file to play.
attenuation <int> Volume of sound.

Example (from `carousal.ai`)

[UseSound]
alwayson = 0
loops = 1
name = scenery/building/carousel.wav
attenuation = 1500

[slots]

This category defines the slots for the entity. Slots are used to define where animals or guests can interact with the entity. Typically this should only be necessary for entities where guests or animals require a specific spot to interact with the entity, such as buildings, shelters, picnic tables, etc.

Key Value Description
name <string name> Name of the slot. There should be as many of this attribute as there are slots.

Example

From picnic.ai.

[slots]
name=slot0
name=slot1
name=slot2
name=slot3

For each slot there should then be a [slot] section with the same name. For the purpose of this reference guide, we'll define the attributes for such slots below under the [slot#] section.

[slot#]

Key Value Description
id <int> This key is optional and can be omitted. By setting the value to a designated entity string ID, you can define a slot as a specific entity. It can be used multiple times if you want to restrict the slot to multiple entities. Omit this key if you want the slot to be open to all entities.
filter <char> Observed in some toys such as lionrck1.ai with a value of y. Not seen in most slot sections. Unknown purpose.
slotpos <int> Position of the slot. This can also be defined as the spot in the entity where the user will begin its 'used' animation.
entrpos <int> Position of the entrance. This is the spot outside of the entity where the user paths to.
exitpos <int> Position of the exit. This is the spot where the user will appear once they've used the entity.
capacity <int> How many users may use entity at a time. It is recommended to match this value with cCapacity under [Characteristics/Integers]
facing <int> Direction the user is facing while using the entity.

Warning

If you have issue with a user leaving the entity facing the wrong direction, removing cUserUsesEntranceAsEmergencyExit = 1 and cUserUsesExit = 1 from [Characteristics/Integers] might fix it.

Examples

[slot0]
slotpos=-16
slotpos=16

entrpos=-16
entrpos=48

exitpos=-16
exitpos=48

capacity=1
facing=7
From `leanto2.ai`.
```INI
[slots]
name=slot

[slot]
; Animals which can use this shelter
;PLAINS_ZEBRA       
id=5004
;THOMSONS_GAZELLE       
id=5005
;RED_KANGAROO       
id=5023
;COMMON_WILDEBEEST          
id=5025
;IBEX           
id=5027
;OKAPI          
id=5028
;AMERICAN_BIGHORN       
id=5032
;MARKHOR            
id=5036
;OSTRICH            
id=5038
;GIANT_ANTEATER     
id=5042

; spot in the building where animal would play animation if didn't disappear
; (in world coordinates, relative to building center; 16 per half-subtile)
slotpos=0
slotpos=0

; spots outside the building where animal paths to
entrpos=0
entrpos=64

; spot to place animal in once they've used the building
exitpos=0
exitpos=64

; 1000 = essentially infinite capacity
capacity=4
facing=0

Slots and Coordinates

Notice that each slotpos, entrpos, and exitpos attribute has two values. This is because they are world coordinates. The first value is the X coordinate and the second value is the Y coordinate. The X coordinate is the horizontal axis and the Y coordinate is the vertical axis. Both are needed to define a position in the game world. The game will crash if you only define one of the two.

For a guided tutorial on slots, please read Jay's Slot Information Guide at the Zoo Tycoon Community Download Directory.

[colorrep]

Color Replacement

Must define cIsColorReplaced under [Characteristics/Integers] to 1 to use this section.

Color Replacement

This section is not yet checked for accuracy. When using this section, please verify the results in-game.

Key Value Description
color <string cr_color> Main color to replace. Requires a section definition with the same name as the value. See example below.
replace <string> Replacement color.
defaultpal <string> Default palette.

[cr_color]

Key Value Description
ncolors <int> Number of colors in .pal file.
fullpal <string dir> Directory to .pal file.
colorpal <string dir> Directory to .pal file.

Example

From carousal.ai.

[colorrep]

; cr_color is listed below
color = cr_color

; cr_part1 is listed in building.ai
replace = cr_part1
title = 2300
defaultpal = scenery/building/pals/sky16.pal

; cr_part2 is listed in building.ai
replace = cr_part2
title = 2301
defaultpal = scenery/building/pals/pink8.pal

[cr_color]
ncolors = 232
fullpal = objects/carousal/carousal.pal
colorpal = objects/carousal/color.pal