Side Door, Contacts, Skipr
Three smaller modules that still matter a lot in real stories.
Contacts
~ InstallApp("contacts")
Phone book of characters. You can override what a contact shows for this player:
~ SetContactName("dion", "Blocked contact")
~ SetContactDescription("dion", "Contact blocked")
~ SetContactPersonality("dion", "…")
~ SetContactHistory("dion", "…")
SetContactName is the one that changes the label in Contacts, Messages, and the chat header. That name becomes the new baseline for this player. It overwrites any nickname they already set. They can nickname the contact again afterwards. Reset or remove goes back to the story name, not the Studio name. Saves snapshot this. Empty string clears the baseline back to the Studio name. Same call also covers an unknown-number opener (~ SetContactName("alex", "Unknown number")).
Useful after a fight, a block beat, or a time skip. Does not change the character for other players.
Characters can also show a name status emoji when a story flag is set (Studio → Characters → Status). First matching flag wins. It appears in Messages, the 1:1 chat header, and Contacts. Design tab route badges (ntr_route and similar) do not apply here unless you also map that flag on the character.
Side Door
Secret codes UI (lives under Settings on the phone when unlocked).
~ InstallApp("sidedoor")
Configure codes and rewards in Studio → Modules → Side Door. Often used for gallery unlocks or cheat-style creator gifts. Treat it like any other InstallApp-gated module when Show from start is off.
Skipr
Conversation jump app for players who want to skip ahead (or for testing).
~ InstallApp("skipr")
Enable the module, decide Show from start, then unlock when the story allows it. Jumping uses the same progress machinery as normal play; don't assume every side effect rewinds perfectly if you are doing wild mid-story experiments. For creators, Studio playtest is usually clearer than Skipr.
Skipr Studio authors a recap Q&A for each skip point. Each answer can set flags, remove flags, or require flags (the option only shows if those are already collected). Questions can require flags too, so a follow-up only appears after a Yes. If a later answer removes that flag, later questions that needed it are skipped. The jump writes the remaining flags into the player's story, same names as SetStoryFlag / RemoveStoryFlag.
See Flags and numbers.
Quick ids
| App | InstallApp id |
|---|---|
| Contacts | contacts |
| Side Door | sidedoor |
| Skipr | skipr |
