= Quests and Rumors //Builder reference for the guild board. Two coin-fed systems share one board prop: **rumors** (cheap, unreliable gossip) and **quests** (real, tracked commissions).// == The board A **board** is any item flagged ''data.questboard'' standing in a room (e.g. the Adventurer's Guild). Players feed it coins: * ''insert copper'' -- prints a random **rumor** (true or false; buyer beware). * ''insert silver'' -- takes on a **quest** posted at this board. ''insert 3 silver'' takes up to three at once. Either way you're only charged for what's actually delivered -- an empty rumor pool, or a board with nothing new for you, costs nothing. To make a board: create a fixture item in the room and set ''item data questboard true''. == Rumors (the copper pool) Rumors are one-line strings, each tagged true or false -- a pool tag the player never sees (''insert copper'' returns a random one, true or false). The pool is global. Admin-only: * ''addrumor true|false '' -- post a rumor (stand at a board). * ''remrumor '' -- remove one by id. * ''rumors'' -- list every rumor with its id and T/F tag (works anywhere). == Quests A quest is **authored as an ordinary item**, then posted to a board. Everything the quest does lives in that item's ''data''. === Authoring a quest * ''item create Cellar Pests'' -- the item name is the quest name. * ''item Cellar desc '' -- shown at the top of ''quest ''. * ''item Cellar data quest kill'' -- mark it a quest (any non-empty type works as the marker). * set the step fields below with ''item Cellar data ''. * ''quest add Cellar'' -- file it onto the board you're standing at (this consumes the staging item; ''quest remove'' gets it back). === The step machine A quest is a sequence of steps numbered from **0**. Each player's ticket remembers their current step. Step N is described by these ''data'' fields (N is the step number): ^ Field ^ What it does ^ | ''info_N'' | the "what to do now" line, shown in the quest list and in ''quest '' while at step N | | ''cond_N'' | how to clear step N: ''find '', ''kill '', or ''done'' | | ''pass_N'' | flavour line printed the instant cond_N is met | | ''reward_N'' | reward granted on clearing step N (first run) | | ''repeat_reward_N'' | replaces reward_N on a REPEAT run (see Repeatable) | The quest **completes** the moment it reaches a step whose ''cond'' is ''done''. === Conditions * ''find '' -- met while the player is **holding** a matching item. It fires on pickup, on loot, or immediately if they already carry it when they accept the quest. The item is **not** consumed -- they keep it. * ''kill '' -- met when the player **slays** a matching mob (credited to the killer). Matching is case-insensitive and by substring, so ''kill rat'' would trigger on any mob whose name contains "rat". Name the target specifically -- ''kill goblin chief'', not just ''kill goblin''. === Rewards A reward spec (used for ''reward_N'' / ''repeat_reward_N'') is one of: * '' xp'' -- experience, e.g. ''1000 xp''. * '' gold|silver|copper'' -- coins, e.g. ''5 gold''. * ''[] '' -- item(s) copied from the **item factory**, e.g. ''healing potion'' or ''3 healing potion''. The factory is the canonical source, so the reward item is identical to the real thing -- any special data it carries (skill hooks, flags) comes along. If no factory template matches, the reward is silently skipped, so ''itemf add'' the item first. === Repeatable quests Set ''item data repeatable true''. After a completion the player may take the quest again; it restarts at step 0. On every run **after the first**, each step pays ''repeat_reward_N'' if present, otherwise ''reward_N''. Use this to give a prized reward the first time and a lesser, farmable one after -- a rare item on the first clear, say, and a handful of coins on every run after. === Lifecycle * **Abandon** (''quest drop''): the quest is hidden from the player's list, but its **step is kept**. Re-taking resumes exactly where they left off -- so nobody can drop-and-retake to farm an early step's reward. * **Repeat**: re-taking a completed **repeatable** quest restarts it at step 0, and every step now uses its repeat reward. * A **non-repeatable** quest, once complete, cannot be taken again. === Player commands * ''insert silver'' -- take on an available quest at the board. * ''quest'' -- list your active quests, each with its current objective. * ''quest <#|name>'' -- the overall goal plus what to do now. * ''quest drop <#|name>'' (or ''quest d'') -- set a quest aside. === Builder board commands * ''quest add '' -- post a held quest item onto the board here. * ''quest remove <#|name>'' (or ''quest rem'') -- pull a posted quest back into your inventory as an editable item (revise, then ''quest add'' again). * ''quest copy <#|name>'' -- take a playable ticket of a posted quest, to test it end to end. * ''examine '' -- lists the quests posted at that board with their numbers. == Worked example (a made-up quest) A whole quest authored from scratch. Nothing here is a real Mossworld quest -- it just shows the shape: a two-step //find//-then-//kill//, with per-step rewards and a repeat reward. {{{ item create Cellar Pests item Cellar desc The innkeeper's cellar is overrun with rats. Clear it out. item Cellar data quest kill item Cellar data info_0 Ask the innkeeper for the key to the cellar. item Cellar data cond_0 find cellar key item Cellar data pass_0 The innkeeper hands you the cellar key. item Cellar data reward_0 25 copper item Cellar data info_1 Go down and clear the rats out of the cellar. item Cellar data cond_1 kill cellar rat item Cellar data pass_1 The last of the rats is dealt with. item Cellar data reward_1 2 silver item Cellar data repeat_reward_1 50 copper item Cellar data cond_2 done item Cellar data repeatable true quest add Cellar }}} Play-through: the player ''insert silver''s to take the quest, gets the cellar key (step 0 clears -- +25 copper), goes down and kills a cellar rat (step 1 clears -- +2 silver, or +50 copper on repeats), and the quest completes. == Notes and limits * ''kill'' credit currently goes to the killer only -- no party-wide credit yet. * Reward items must already exist in the item factory (''itemf add'') or the reward is skipped. * Quest **tickets** are pure data (their own table), never real items -- they can't be dropped, sold, or stored, and only show under ''quest''.