The *fake_choice command is an alternative to the *choice command. To the player, a *choice and a *fake_choice appear identical.
However, there is one important difference: unlike the standard *choice command, *fake_choice does not actually require the use of any other commands within the body of the #options text, so you can use it simply to prompt interaction with the player and display a textual response for each particular #option.
While it doesn't require any other commands, you can use other commands in combination with a *fake_choice, in the same way as a regular *choice.
Usage
A simple example:
Mike really does make it sound like Jill has been seeing Ben behind your back.
*fake_choice
#Mike doesn't fool me. He has always been jealous of how much Jill loves me.
It's fairly obvious to you that Mike is just trying to make you dump Jill.
#Mike seems to say stuff like that a lot. He just likes to cause trouble.
You simply ignore Mike's petty mischief, knowing what he's really like.
#I burst out laughing. The whole idea is ridiculous. I mean . . . Ben?!
You realize that the whole idea of Jill and Ben together is so ridiculous,
it's laughable.
Not very surprisingly, Mike seems upset that you don't appear to believe him!
*finish
The above example will display a particular response for each option, depending on the player's choice, and then immediately after -- regardless of the option choice -- it will display the line beginning "Not very surprisingly..." Note that even the individual option responses are not strictly necessary; if you prefer, it could simply respond with the "Not very surprisingly..." line as the sole response to all three options.
*fake_choice was originally used for this purpose: to show flavor text or simply break up the story with a choice block rather than a page break. Judicious use of these kinds of *fake_choice can help to build character, emphasize plot details, aid immersion in the game world, and enhance interaction. It's worth noting that overuse of simplistic or too obviously fake choices ("How do you feel about that?" or similar) can have the opposite effect for an experienced player of ChoiceScript games, and may serve only to spoil that player's enjoyment of your story.
Code Efficiency
However, the fact that *fake_choice doesn't require each #option body to end with a *goto or *finish (as *choice does) has increasingly made it the default choice command for writers wanting to minimize code. *fake_choice can do nearly everything else that *choice can, e.g. using *selectable_if in options or using *set in the option block. For choices that don't branch the story (and so would all *goto the same *label) many writers have chosen to use *fake_choice.
Read here for the official explanation of why the language is designed to encourage non-programmer authors to use *gotos rather than maximizing use of *fake_choice or Implicit Control Flow.
| 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 |