Skip to content

Deterministic Rewards and Optional Drops

Part of NPCs World Verbs Rewards and Living World

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_logbook
  • brass_lantern_charm — rare 4% — restore_lighthouse_signal
  • small_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.