Story Template and Variation¶
The story system combines:
NPC state + job state + world verb + learning activity + world object + relationship history
Template model¶
story_template:
id: merchant_repair_labels_intro
npc_id: merchant_mara
relationship_stage: first_meeting
world_verb: repair
activity_type: missing_letter
target_object: crate_labels
opening_line: "Oh no! The wind blew the letters off my box labels."
request_line: "Could you help me repair them?"
success_line: "You did it! Now I know what goes where."
reward_line: "You need to reach the lighthouse? Use my boat."
Repeat version uses trusted_helper stage and different target (wet_labels).
Variation rules¶
Each job should have multiple lines per slot:
opening_lines(3+)request_lines(3+)success_lines(3+)
Rotate lines; avoid same line too soon.
Location-based selection¶
Prefer NPCs at current destination:
| Location | NPCs |
|---|---|
| first_island | merchant, boat_builder, child_explorer |
| old_lighthouse | lighthouse_keeper, gull_watcher |
| whale_bay | fisherman, marine_helper, whale |
NPCs can later visit other locations ("Could you deliver this to Whale Bay?").
Returning to earlier islands¶
Intentionally send players back — web, not straight line:
- Lighthouse asks for supplies from first island
- Fisherman asks for rope from merchant
- Harbour Master asks to revisit old signs
- Grandpa clue connects two locations