Contents Up Previous Next

Custom Properties

What are custom properties?

Suppose you're making a Lucasarts-style game, and you want all your hotspots to have a default event (so if the player right-clicks a window, for example, "Open" will be the default, but if they click on a pen, "Pick up" will be the default).

To do that, surely you would have to script in lots of code to change the default mode over each different object?

This is where Custom Properties come to the rescue. You can create a custom property for "Default event", for example, and then have some simple code in the global script to use the setting accordingly.

How do I use them?

You'll notice that characters, objects, hotspots, rooms and inventory items all have a "Properties" option in their property grids. Select it and click the "..." button.

Since you don't yet have any custom properties, you'll get a blank window, so click the "Edit Schema" button. This takes you to the Schema Editor, where you can create the various properties you want in your game. To begin with you are presented with an empty list box, so right-click in it and choose "Add property".

In the "Add Property" window you can set various options about the new property:

For example, add a new "Boolean" property. Close the schema editor, and then click the "Properties" button again. You'll now have a window with a checkbox with the description text you typed in. You can click the "Edit schema" button there to return to the schema editor if you like.

All types of game item share the same schema. That is, if you create a "Jibble" property in the schema editor for a hotspot, it will also appear in the properties window for characters, objects, and so on.

Getting and setting values in the script

To access the properties from the script, there are various script functions. See their descriptions for how they work:

Character.GetProperty, Character.GetTextProperty
Character.SetProperty, Character.SetTextProperty
Hotspot.GetProperty, Hotspot.GetTextProperty
Hotspot.SetProperty, Hotspot.SetTextProperty
InventoryItem.GetProperty, InventoryItem.GetTextProperty
InventoryItem.SetProperty, InventoryItem.SetTextProperty
Object.GetProperty, Object.GetTextProperty
Object.SetProperty, Object.SetTextProperty
Room.GetProperty, Room.GetTextProperty
Room.SetProperty, Room.SetTextProperty

NOTE: Calling ResetRoom will reset that room's properties to default values, as well as that room's hotspot and object properties.

Converted from CHM to HTML with chm2web Standard 2.85 (unicode)