Objects and Lookup Variables
In addition to variables you create, Chapbook also maintains a number of built-in variables called lookups. Unlike regular variables, lookups cannot be changed by you. Instead, they correspond to properties in the environment--the current date and time when the player is interacting with your story, for example, or even the story itself.
Introducing Objects
In order to leave as many variable names available to you as possible, Chapbook groups its built-in lookup variables together using objects. An objects are another type of variable--like a string, boolean, or number--that acts as a container for other variables. Unlike simple variable types like strings or numbers, objects don't have values unto themselves. They only contain other variables.
To access a variable inside an object container, enter the object's name, then a
period (.
), then the variable. For instance, story.name
accesses the
variable named name
inside of story
.
You can nest objects as much as you'd like, and you can also write something like this in the vars section of a passage:
my.favorite.variable: 'red'
Chapbook will create each object variable (e.g. my
and favorite
) for you if
it doesn't already exist.
Built-In Lookup Variables
Below is a list of lookups that Chapbook maintains for you:
Variable Name | Description | Example |
---|---|---|
browser.darkTheme | Whether the effective theme currently used by Chapbook is dark. See Dark Theme for more details. | true |
browser.darkSystemTheme | Whether the browser is currently set to use a dark user interface. Typically, this done through a system preference. | true |
browser.height | The height of the browser window in pixels. | 768 |
browser.online | Whether the browser currently has a network connection. | true |
browser.width | The width of the browser window in pixels. | 1024 |
engine.version | The version of Chapbook currently running, as a string. | '1.0.0' |
now.datestamp | A short human-readable description of the date right now. | '2/15/2011' |
now.day | The current day of the month, 1-31. | 15 |
now.hour | The hour of the time right now, where midnight is 0 and 11:00 PM is 23. | 18 |
now.minute | The minute of the time right now, 0-59. | 15 |
now.month | The current month, 1-12. | 2 |
now.monthName | The name of the current month. | 'February' |
now.second | The second of the time right now, 0-59. | 45 |
now.timestamp | A short human-readable description of the time right now. | '6:18:15 PM' |
now.weekday | The current day of the week, where Sunday is 1, Wednesday is 4, and Saturday is 7. | 3 |
now.weekdayName | The name of the current day of the week. | 'Tuesday' |
now.year | The current four-digit year. | 2011 |
passage.from | The name of the last passage the player visited, as set in the Twine editor. If the player has only visited a single passage, this is undefined . | 'Untitled Passage 1' |
passage.fromText | The text of the last link the player used to go to a new passage. If the player has only visited a single passage, this is undefined . If the player moved to another passage by some other means that didn't involve clicking a link, then this reflects the last link used. | 'Link name' |
passage.name | The name of the current passage as set in the Twine editor. | 'Untitled Passage' |
passage.visits | The number of times the player has seen the current passage, including the current time. That is, the first time the player sees a passage, this lookup's value is 1. | 1 |
story.name | The name of the story as set in the Twine editor. | 'Untitled Story' |
Note that now
lookup values reflect when they were last accessed, which is
usually when a passage is navigated to. String values like now.monthName
will
vary by the language the player has set as default in their browser-- a French
person will see Août
where an American sees August
, for example, and
similarly the French will see now.datestamp
as '15/2/2011'
where Americans
see it as '2/15/2011'
.