For the complete documentation index, see llms.txt. This page is also available as Markdown.

Sugarcube

Equivalent functionality in Sugarcube v2

Examples taken from the Sugarcube online documentation

Macros and Functions

As a rule, Moontale makes no distinction between a 'macro' and a 'function'. The changer syntax $foo[Text] makes use of foo as a Lua function, and using it in code e.g. {$ x = foo(y) $} is just as valid.

Syntax

The following syntax is identical in Sugarcube and Moontale:

  • [[Passage]]

  • [[Link -> Target]]

  • [[Target <- Link]]

  • $variable

  • * Unordered lists

  • > Blockquote

Sugarcube

Moontale

<<print $name>>

{$ Show(name) $}

<<= 2 + 3>>

<$ 2 + 3 $>

"""No markup"""

<$ 'No markup' $>

{{{$name}}}

`$name`

[[Label|Target]] and [[Label][Target]]

[[Label->Target]]

[[Go buy milk|Grocery][$bought to "milk"]]

$On.click<<bought = 'milk'; Jump('Grocery') end>>[Go buy milk]

[img[Image][Link]] etc.

[[$Image('path/to/image')->Target]]🚧

Single \

Line

\ text

New line

Single

Line

text

New line

Note the extra space to force a line break

!Heading 1

# Heading 1

!!Heading 2

## Heading 2

//Emphasis//

*Emphasis* or _Emphasis_

''Strong''

**Strong** or __Strong__

==Strikethrough==

~~Strikethrough~~

__Underline__

$Style.u[Underline]

# Item 1

# Item 2

1. Item 1

1. Item 2

{{{Code}}}

`Code`

{{{ Code }}}

``` Code ```

----

--- or ***

Templates, e.g. ?He was always willing to lend ?his ear to anyone.

$Name.myTemplate[$He was always willing to lend $his ear to anyone.]

$With{He = 'She', his = 'her'}[$myTemplate]🚧

/* Comment */

/% Comment %/

<!-- Comment -->

{$--[[ Comment --]]$}

<<capture foo bar>>

{$ local foo = foo; local bar = bar $}

<<run foo()>> and <<script>>foo()<</script>>

{$ foo() $}

(Of course, this is Lua rather than JavaScript)

<<set $gold to 5>>

{$ gold = 5 $}

<<unset $cheese, $gold>>

{$ cheese = nil; gold = nil $}

<<include "Go West">>

[[ ->Go West]]

<< if $cash lt 5>>

$If(cash < 5)[

<<for i, name range $dwarves>>

$ForEach(dwarves)[

<<break>> and <<continue>

Not supported in markup - use a script block with a for loop

<<switch $hairColor>>

<<case "black" "brown">>

Dark haired, eh?

<<default>>

<</switch>>

$Switch(hairColor) $Case('black', 'brown')[ Dark haired, eh? ]

$Else[ ]🚧

Last updated