Starward Rogue:XML - Tutorial Definitions
Each .xml file in the Configuration/Tutorials/ directory is parsed, and each child of the root node is read as a separate tutorial.
Each of those nodes will have 1 or more "phase" nodes, and each phase corresponds to a single room that is run in a way very similar to a test chamber
Contents
main nodes
- name
- the internal name the game will remember this tutorial by; if someone beats the tutorial and this name is later changed, the game will think it's a new (unbeaten) tutorial
- display_name
- the name that will be shown on the tutorial list to the player
- end_message
- the message shown to the player when this entire tutorial is successfully completed
tutorial sub-node type: phase
- starting_message
- the message shown to the player when this phase is started
- this also shows on the escape menu's bottom-right info block during this phase
phase sub-node type: room
The contents of this node (between the > and the <, so not including the attributes and the tag itself) will be parsed as a test chamber script when the phase is started
Since the parsing doesn't happen until later, those contents will not be error-checked during the loading of the game
The script attribute must refer to a room whose type has RoomEntranceStyle.NSEW, WidthOnMap = 1, and HeightOnMap = 1. So Starting, Square, etc. If another room type is used it may work, or it may leave you stranded in doors that don't exist, or whatever.
- name (string, required)
- used by room_connection to identify which rooms are being connected
- x_offset_from_first_room (int), y_offset_from_first_room (int)
- the position of the room relative to the first room; so 1,0 is directly east of the first room, 0,-1 is directly north of the first room, etc
- if two rooms are supposed to be connected, they must be cardinally adjacent (no diagonals)
- these are always 0,0 for the first room, even if you specify otherwise
room sub-node type: message
There are up to eight different tutorial pads in a tutorial room, and the first message corresponds to the first pad, and so on (which one is the "first" pad, etc, is defined by the room script).
- text (string, required)
- the tooltip text to display while the player is on the corresponding tutorial pad
- voice (string, required)
- the name of the voice file (in the Voice/ directory) to play when the player first steps onto the corresponding tutorial pad since loading (if they save and load within the tutorial, then step back onto one, they'll get the voice again)
== phase sub-node type: room_connection
- first_room_name (string, required), second_room_name (string, required)
- the names of the two rooms to connect; they must be cardinally adjacent