Dialog Script Guide
'#' vs '@'
All annotations that starts with '#' refer to any line below it. All annotations override each other so if you put second '#left=' annotations in the middle of file, it will affect second half of script.
All annotations that starts with '@' refer only to next text line (annotations does not count as "next text line").
For example, @text=left applies to the next text line only:
@text=left
Hello there.
Goodbye.
@text=left applies only to Hello there., it does not apply to Goodbye..
Multi-line text
Wrap in quotes. It counts as one frame.
"This is a long speech
that spans multiple lines."
Characters and speaker side
#left=guard
#right=player
@text=left
Halt! Who goes there?
@text=right
Just a traveler.
@left=... and @right=... set the sprites for characters displayed on screen.
@text=left or @text=right sets which side the text is displayed on.
- Use
#left=none to hide (left) character.
Options and branches
Place options right after a text line. Indent the lines that should appear after a choice.
Do you want to buy something?
> Yes
@trade
Here is my stock.
> No
@end
Fine, goodbye.
- Sibling options must have the same indent.
- Indented lines are shown only if the parent option (or frame) was chosen.
Conditions
@if flag==met_king
Welcome back, my friend.
@else
Have we met before?
flag==name / flag!=name: campaign flag (persists across the game).
dialog==name / dialog!=name: dialog flag (this conversation only).
strength>=5: character attribute (==, !=, <, >, <=, >=).
@else must follow a sibling line or option at the same indent level.
- To apply a condition to a group of lines:
#if flag==met_king
Line A
Line B
#endif
Setting flags
Place before the line that should trigger the change.
@flag+=met_king
Nice to meet you.
@flag-=met_king
Forget I said that.
@dialog+=temp_flag
Remember this for now.
Jumping within a dialog
@goto shop_menu
Let me show you around.
@anchor shop_menu
What would you like?
@goto is triggered when its line is shown.
- Every
@goto needs a matching @anchor on some text line.
End, trade, fight
@end
Goodbye.
@trade
Take a look.
@combat bandits
Prepare yourself!
@exit is an alias for @end.
@fight and @battle are aliases for @combat.
- The combat scene name is optional.
Common mistakes
- Putting annotations after the line they should affect.
- Using
@else on the first line or option of a level.
- Using
#else (only @else is allowed) or @endif (only #endif is allowed).
- Putting an option line without a preceding text line.
- Inconsistent indentation. A tab counts as 4 spaces.
- Typos in
@if conditions. These can throw an exception instead of reporting a normal error.