Module quest_board

Source
Expand description

Daily-board / weekly-set selection.

The daily board is a rotated subset of the authored daily pool: 8 quests per day picked by category quotas, ONLY from objectives whose feature is unlocked for this player (gate rule: never serve a quest the player cannot complete — the served board is fully doable at any chapter), in the size variant matching the player’s chapter band. Selection is a pure, deterministic function of (config, player, day index): the monolith calls it at state load and at the lazy daily reset; there is no stored board.

Code conventions (mirrored by the content generator): daily.<category>.<objective>[.<band>] category ∈ combat|eco|prog|misc|meta weekly.<objective>[.<band>] Band-1 quests have no band suffix (same rule as loop_task.loop.<n>).

Constants§

BOARD_SIZE

Functions§

daily_board
Today’s daily board: quota-per-category rotation over the open pool, deterministic in (player band/gates, day_seed). Shortfall in one category is filled from the remaining open pool so the board reaches BOARD_SIZE whenever enough objectives are open.
is_board_managed
Whether tpl participates in board/set selection at all. Templates WITHOUT a daily./weekly. code keep the legacy always-served behavior — deploy-order safety: until the coded content lands, boards fall back to the current static sets.
objective_gate_chapter
Chapter at which a quest’s OBJECTIVE becomes completable, derived from what the quest listens to — the objective’s events imply the feature it needs. Derivation (not a per-quest config field) keeps the map self-maintaining: a new quest on the same events inherits the right gate automatically.
weekly_set
This week’s weekly set: every gate-open objective in the band-matched variant (no rotation — the weekly pool IS the set).