DESIGN
Inn Ladder (service-building example)
A design document: planned unless a "Prototype" note says it's built.
Part of The design hub; follows the template in Blacksmith Ladder (building template). Drafted 2026-08-30. Unlocks Era 1, full 5-tier ladder. The worked example of a service building: no crafting — its "recipes" are meal recipes, its "quality steps" are buff tiers, and its unique output is the recruitment pipeline (visitors you can hire).
Role: stamina recovery (division of duties: Chapel = health, Inn = stamina), food buffs, and the front door for NPC recruitment — better inns attract better visitors.
Prototype (v0.1.13, 2026-09-02): tier 1 stands in the arena — plot by the road, BUILD = 8 timber + 2 stone + 25s. Service: TAKE A ROOM (3 loot: full stamina, +25 HP, instant — the Inn-restores-stamina duty). Module: KITCHEN (4 timber + 2 stone, 10s) unlocks COOK; the Boar Stew recipe is taught by Marla's "A Proper Stew" quest. Eating stew = full hunger + the food buff (+10% power, 120s, one active, replaces rather than stacks) — the first compounding layer live.
Tier 1 — Roadside Rest (Era 1 / Copper)
Construction: logs, fieldstone, cloth. Shell function: rest — recovers stamina + some health. NPC: any recruit (innkeeper).
| Module | Effect |
|---|---|
| Kitchen | Serve meals → food stat buffs (Q1) from Farmer/Fisherman ingredients |
| Cellar | Food storage; slows spoilage (upkeep efficiency) |
Ships with: 2 basic meal recipes. More are collected — travelers teach them, rival-city loot includes cookbooks.
Tier 2 — Traveler's Inn (Era 2 / Iron)
Upgrade cost: iron fittings, cut stone, time. Category unlocks: lodging — visitors start arriving.
| Module | Effect |
|---|---|
| Guest rooms | Wandering NPCs and traders stop over — the recruitment pipeline: hire them, or buy recipes/goods |
| Brewery | Drinks: short social buffs + steady money income |
Tier 3 — Great Inn (Era 3 / Steel)
Upgrade cost: steel fittings, glass (Engineer), time. Category unlocks: the common hall — city-level effects.
| Module | Effect |
|---|---|
| Feast hall | Raises the city's morale anchor (Morale (city mood system)); hosts the "feast" morale-shock action |
| Rumor board | Visitors leave map intel — points of interest, rescue leads, rival-city hints (exploration synergy) |
Tier 4 — Grand Lodge (Era 4 / Mithril) — Journeyman required
Upgrade cost: mithril fittings, instruments (Blacksmith), time.
| Module | Effect |
|---|---|
| Premium kitchen | Q3 meal buffs; two-course meals (bigger single buff, still one food slot) |
| Traveler's suite | Attracts Journeyman+ visitors — the recruitment pipeline's quality rises with the inn |
Tier 5 — The Hearthstone (Era 5 / Aetherite) — Master required
Upgrade cost: aetherite, capstone goods, time.
| Module | Effect |
|---|---|
| Aether kitchen | Q4 meal buffs (top food tier) |
| Hero's rest | "Well-rested": resting here grants a bonus buff; rare chance a Master NPC visits |
Inputs / outputs summary
- Inputs: ingredients (Farmer, Fisherman, Miller), grain (Brewery), fittings/glass/instruments for upgrades.
- Outputs to player: stamina recovery, food buffs, well-rested buff.
- Outputs to city: recruitment pipeline (visitor quality scales with inn tier), morale/upkeep efficiency, map intel, money (brewery).
Template notes proven here
- Service buildings map cleanly: recipes → meals, quality steps → buff tiers (Q1 base kitchen → Q3 premium kitchen → Q4 aether kitchen + Master innkeeper).
- Unique twist earns its place: the inn's visitor system makes NPC quality (progression track #4) partly a function of city investment, not only of lucky finds in the world.
Open questions
- Visitor cadence — timed arrivals, or triggered by player milestones?
- Can visitors be bad (spies casing your city for raids)?
- Does resting advance construction timers (active-play time question)?
Prototype v0.1.49 (2026-09-06) — the room and the prayer scale with the era:World.room_hp()= 25 + 25·(era−1),room_feeds()from Era 2,room_buff()1.05 forroom_buff_time()180 s from Era 3 (only if better than the active meal buff);pray_ward()= 1 − 0.05·(era−1) from Era 2 for 120 + 60·(era−1) s (only if better than the active tonic);service_era_cost()= era−1 added to both prices.Building. service_blurb(sid)feeds the dialog button text and toasts.
Prototype v0.1.59 (2026-09-11) — recruitment is loot (owner: "the design was primarily the player finding/rescuing NPCs"): the four camps' captives are the Era-1 keepers (captive_npcminer / shopkeeper / farmer / woodcutter on the camp records;Npc.captive→ RESCUE recruits a keeper as keeper, later captives are villagers); Ironhold's prison freesWorld.next_prisoner()— the first unrecruited era-eligible ofPRISONERS(mason, alchemist, jeweler, engineer, enchanter, scribe) — else a villager. The Inn is the SECONDARY channel:VISITOR_EVERY180 s,INN_ARRIVALS(herbalist, weaver, miller, fisher, drillmaster) first, then anyone still missing so a run never dead-ends. Earlier draft of the same note (inn-first) follows for the mechanics: owner: "hard to judge pacing when the player is dropped into a town full of NPCs".World.FOUNDERS(innkeeper, smith, priest) start in town;city.recruitsgrows viaWorld.recruit(id); while the Inn stands_visitors_tickseats the next ofWorld.ARRIVALS(era-gated by the keeper's building) ascity.visitoreveryVISITOR_EVERY90 s; the Town spawns the guest atVISITOR_SPOTby the inn door with a "!" marker; the quest dialog shows RECRUIT/LATER for a visitor;Building. keeper_ready()gatesstart_buildand the plot dialog.--built/recruit_all()seat everyone;load_gamereconciles old saves (built plot ⇒ keeper recruited). Only recruited people can be appointed mayor.
Prototype v0.1.60 (2026-09-12) — the player is the founder (owner: "No founders. The player is the founder. Game needs to start with the player saving someone. That person and the player decide to search for more people to start the town").World.FOUNDERSis empty;city.intro= "ambush" on a fresh city;new_game/ a fresh Town redirect to the wilds atINTRO_SPAWN(-880, 10) where the Arena spawns two bandits (camp_id "ambush") and Marla as a captive;World.ambush_broken()gates her rescue; rescuing her recruits the innkeeper, sets intro done and auto-accepts quest the_others (kind "recruit", count 4 —Player.quest_progressreadscity.recruits.size()). Ansel is afoundhermit at a wayside stone (-120, -520): COME TO TOWN recruits him. Camp captives: bandit → smith (Orrin), north → miner (Bram), south → farmer, west → woodcutter;PRISONERSnow starts with shopkeeper (Wren). Old saves getintro = "done". Debug:--no-introon the town.
v0.1.61 (2026-09-12) — strict (owner: "Make it strict, keep your softener"):next_visitor()=INN_ARRIVALSonly (era-gated), plus a camp-held keeper ONLY ifcamps[camp_holding(id)].breaks >= 1(the camp was broken at least once, so the rescue could have been missed). Ironhold's prisoners never come by inn.World.camp_holding(id)reads the fresh camp records'captive_npc.