ChoiceScript Wiki
Advertisement

    The *goto command is used for "jumping" from one line to another within the same scene file. (For loading a completely new scene file, see the *goto_scene and *finish commands, respectively).

Usage

*goto is always used in combination with a *label name, being the means by which you tell it where to go. This is known as its reference. For example:

*goto Next

(some Other Stuff here)

*label Next

In the above example, when its hits the *goto Next line it will immediately "jump" to the *label Next line and then continue on from that line, completely bypassing any Other Stuff in between.


*goto and *label combinations are typically used within a *choice statement, as follows:

What do you prefer?

*choice

    #A donkey.

        You prefer a donkey!

        *goto Donkey

    #A horse.

        You prefer a horse!

        *goto Horse

*label Donkey

What color do you want your donkey to be?

*choice

    #Red.

        You prefer a red donkey!

        *finish

    #Green.

        You prefer a green donkey!

        *finish

*label Horse

What color do you want your horse to be?

*choice

    #Red.

        You prefer a red horse!

        *finish

    #Green.

        You prefer a green horse!

        *finish


*goto and *label are also commonly employed as a result of *if, *elseif and *else conditions, as follows:

*if horse

    You prefer a horse!

    *goto HorseColor

*elseif donkey

    You prefer a donkey!

    *goto DonkeyColor

*else

    You don't prefer anything!

    *finish

*label HorseColor

What color do you want your horse to be?

*choice

    #Red.

        You prefer a red horse!

        *finish

    #Green.

        You prefer a green horse!

        *finish

*label DonkeyColor

What color do you want your donkey to be?

*choice

    #Red.

        You prefer a red donkey!

        *finish

    #Green.

        You prefer a green donkey!

        *finish


It is particularly worth noting that the *label name being referenced by a *goto command can be anywhere else within the same scene file, either above or below the actual *goto command. For example, the following will work just fine:

*label Donkey

What color do you want your donkey to be?

*choice

    #Red.

        You prefer a red donkey!

        *finish

    #Green.

        You prefer a green donkey!

        *finish

*label Horse

What color do you want your horse to be?

*choice

    #Red.

        You prefer a red horse!

        *finish

    #Green.

        You prefer a green horse!

        *finish

What do you prefer?

*choice

    #A donkey.

        You prefer a donkey!

        *goto Donkey

    #A horse.

        You prefer a horse!

        *goto Horse

The only important thing to remember is that all *label names within a single file must be unique.


More commands / functions
Choice *choice, *fake_choice, *disable_reuse, *hide_reuse, *allow_reuse, *selectable_if
Variable *create, *temp, *set, Arithmetic operators, *delete, *input_number, *input_text, *print, *rand
Conditional *if, *elseif, *else, Multireplace
Goto *label, *goto, *goto_scene, *goto_random_scene, *gosub, *gosub_scene, *finish
Formatting Bold text, Italic text, *image, *line_break, *page_break, *link, *stat_chart
Miscellaneous *comment, *scene_list, *title, *author, *achieve, *achievement, *check_achievements, *bug, *ending, *more_games, *share_this_game, *show_password, *script, Implicit Control Flow
Advertisement