Deterministic Rewards and Optional Drops¶
Separate progression from optional collection.
Deterministic rewards¶
Always happen when conditions are met. Never random.
Used for:
- boat access · map reveals · new destinations
- uniform pieces (identity) · house / cabin unlock
- new travel routes
Example:
Help Merchant with first crate problem
↓
Merchant lends boat
↓
Boat appears at dock
↓
Player can travel to lighthouse
Framing: The merchant trusts you — not You completed 3 words.
Boat and travel¶
- Boat appears at dock · blocked path opens · travel trigger activates
- Lighthouse lit → fog clears on map → Whale Bay visible (world consequence, not menu unlock)
Uniform and identity¶
Identity rewards, not power: scarf → hat → coat → ship flag.
Child should not need random drops to feel like a captain.
Optional drops¶
Chance-based keepsakes — never block progress.
Examples: old photo, shell, model boat, lantern charm, map scrap, decorative crate, whale drawing.
Belong in House Memory System.
Rarity bands (internal only — never show child)¶
| Rarity | Drop rate | Use |
|---|---|---|
| Common | 20–30% | simple decorations |
| Uncommon | 8–15% | nice keepsakes |
| Rare | 3–7% | special memories |
| Very rare | 1–2% | emotionally special |
Drop rules¶
- Only after successful completed session
- Never replace story progression
- Not after every activity
- Feels like NPC found or gave something
- Important story items never random
- No public rarity · no grind language · no shop · no coins
Drop moment presentation¶
Never show: "Rare item acquired! 8% drop!"
Show:
"Wait, Captain. I found this while cleaning the lantern room. I thought you might like to keep it."
Even better: This memory was added to your home.
Emotional framing: Someone gave me something because I helped.
Drop timing and eligibility¶
Roll only after confirmed completion save:
Activity completed → attempts saved → server verifies
→ world/story saved → relationship updated
→ drop eligibility check → roll once → save inventory → return to Godot → gift moment
Client must not decide drops. Server decides and saves.
Eligibility: completed activity · relationship stage min · item not owned (if unique) · eligible job · drop cooldown · not overloading rewards during major first-time beats.
Example drop table (Lighthouse Keeper)¶
lighthouse_old_photo— uncommon 8% — jobs: clean_lantern_room, read_old_logbookbrass_lantern_charm— rare 4% — restore_lighthouse_signalsmall_keeper_notebook— rare 3% — sort_keeper_notes
Idempotency¶
completion_key: child_id + session_id + job_instance_id
Avoids double boat unlock or double drop on retry.