# What does "Illegal to fall out of a choice statement" mean?

**URL:** <https://forum.choiceofgames.com/t/what-does-illegal-to-fall-out-of-a-choice-statement-mean/176114>\
**Category:** ChoiceScript Help\
**Tags:** tips\
**Created:** [February 22, 2026, 8:06am UTC](https://forum.choiceofgames.com/t/what-does-illegal-to-fall-out-of-a-choice-statement-mean/176114 "2026-02-22T08:06:24Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![DiabloObsidian](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/diabloobsidian/32/260973_2.png) [@DiabloObsidian](https://forum.choiceofgames.com/u/DiabloObsidian)\
**Post date:** [February 22, 2026, 8:06am UTC](https://forum.choiceofgames.com/t/what-does-illegal-to-fall-out-of-a-choice-statement-mean/176114/1 "2026-02-22T08:06:24Z")

</div>

![image](https://global.discourse-cdn.com/choiceofgames/original/4X/8/6/a/86a34f97f5251da713667e88eb0b16b7f2382311.jpeg)

 ![image](https://global.discourse-cdn.com/choiceofgames/original/4X/6/a/1/6a102a1faf4bc50c2f1fbeccdf5ed1baed9a0947.png)

Yeah I’m lost lol

---

<div class="post-metadata">

**Author:** ![ShadowIsOofed](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/shadowisoofed/32/207183_2.png) [@ShadowIsOofed](https://forum.choiceofgames.com/u/ShadowIsOofed)\
**Post date:** [February 22, 2026, 8:37am UTC](https://forum.choiceofgames.com/t/what-does-illegal-to-fall-out-of-a-choice-statement-mean/176114/2 "2026-02-22T08:37:29Z")

</div>

For every choice in a \*choice statement, it must end with a \*goto or \*finish statement. For example:

```choicescript
*choice
	# option 1
		passage
		*goto exit

	# option 2
		passage
		*goto exit

	# option 3
		passage
		*goto exit

*label exit

```

Though you can use \*fake\_choice to bypass \*goto in choices, or create a variable called implicit\_control\_flow in your startup.txt then set it to true.

For \*fake\_choice:

```choicescript
*fake_choice
	# option 1
		passage

	# option 2
		passage

	# option 3
		passage

```

And as for implicit control flow in your startup.txt:

```choicescript
*create implicit_control_flow true

*choice
	# option 1
		passage

	# option 2
		passage

	# option 3
		passage

```

Now you can use \*choice without the usage of \*goto. Good luck on your journey!

---

<div class="post-metadata">

**Author:** ![Havenstone](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/havenstone/32/198451_2.png) [@Havenstone](https://forum.choiceofgames.com/u/Havenstone)\
**Post date:** [February 22, 2026, 8:59am UTC](https://forum.choiceofgames.com/t/what-does-illegal-to-fall-out-of-a-choice-statement-mean/176114/3 "2026-02-22T08:59:15Z")

</div>

Before you turn on implicit control flow, it’s worth considering the kind of bugs that become harder to catch with ICF:

> [@New ChoiceScript features: implicit control flow, gosub parameters](https://forum.choiceofgames.com/t/new-choicescript-features-implicit-control-flow-gosub-parameters/30042):
>
> Thanks to a big code contribution from @kgold, there are new features to try in the latest version of ChoiceScript up on GitHub: implicit control flow and \*gosub parameters. Implicit control flow Normally, you have to use a \*goto before the end of a \*choice #option or before an \*else, or you’ll get errors like this: It is illegal to fall out of a \*choice statement; you must \*goto or \*finish before the end of the indented block. It is illegal to fall in to an \*else statement; you must \*goto o…

If you struggle to understand the risk that Dan’s talking about here, you might be better off using one of the first two methods rather than ICF.

---

<div class="post-metadata">

**Author:** ![DiabloObsidian](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/diabloobsidian/32/260973_2.png) [@DiabloObsidian](https://forum.choiceofgames.com/u/DiabloObsidian)\
**Post date:** [February 22, 2026, 9:40am UTC](https://forum.choiceofgames.com/t/what-does-illegal-to-fall-out-of-a-choice-statement-mean/176114/4 "2026-02-22T09:40:47Z")

</div>

I appreciate you both! I’ll definitely give the \*goto method a try and hope that works. I also republished my story to be more dynamic. Once it’s a clean playthrough I’ll post the link so you all can try it out. Keep an eye out for “The Twelve” by Jay Johnson 🙏🏿

---

<div class="post-metadata">

**Author:** ![will](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/will/32/132033_2.png) [@will](https://forum.choiceofgames.com/u/will)\
**Post date:** [February 22, 2026, 11:07am UTC](https://forum.choiceofgames.com/t/what-does-illegal-to-fall-out-of-a-choice-statement-mean/176114/5 "2026-02-22T11:07:06Z")

</div>

FYI the “risk” of implicit control flow is immensely, _immensely_ overstated. It’s a non-issue. Just slap implicit control flow at the top and forget about it. It should be the default.

---

<div class="post-metadata">

**Author:** ![Havenstone](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/havenstone/32/198451_2.png) [@Havenstone](https://forum.choiceofgames.com/u/Havenstone)\
**Post date:** [February 22, 2026, 11:31am UTC](https://forum.choiceofgames.com/t/what-does-illegal-to-fall-out-of-a-choice-statement-mean/176114/6 "2026-02-22T11:31:36Z")

</div>

And for my part, I reckon the inconvenience of Dan’s good old `*goto` method is immensely overstated – at least, for anyone who knows the keyboard shortcuts for cut and paste. For first-time-coder authors and their commenters/ editors, the safety net of explicit flow can justify its cost.
