Configuration
tilttek/quests-bundletilttek_quests:
store: doctrine # or memory, for tests
connection: default # the Doctrine DBAL connection
timezone: America/Toronto # the timezone the quests' dates are read in
catalog: configuration # or doctrine: the quests are kept in the database
quests:
first-steps:
ordered: true
steps:
- { code: play, verbs: ['game.played'], count: 3 }
- { code: write, verbs: ['sheet.published'] }
rewards: [{ kind: points, code: xp, amount: 50 }, { kind: badge, code: newcomer }]
winter-reading:
admission: accept
recurs: { from: '12-21', until: '03-20' }
steps: [{ verbs: ['book.read'], total: 300 }]
thousand-games:
kind: community
opens: '2026-12-01'
closes: '2027-01-01'
steps: [{ verbs: ['game.played'], count: 1000 }]
raid:
kind: team
steps: [{ verbs: ['dungeon.cleared'], count: 5 }]
ten-games:
kind: duel
duel: { length: P7D }
steps: [{ verbs: ['game.played'], count: 10 }]
duels:
offer_lifetime: P7D # how long a duel offer waits for its answer
projection: quests # the name of the projection's checkpoint
translation_domain: tilttek_quests
privacy:
member_kind: member # a data subject's value is the identifier of member:<value>
Chaque quête est la définition que lit QuestReader. Consultez la documentation de la bibliothèque sur les quêtes et
les étapes, les calendriers et les chaînes, et les genres. Une quête erronée, une chaîne brisée ou un fuseau horaire
inconnu échoue à la compilation du conteneur, avec le message de la bibliothèque. Les quêtes sont configurées ici ou
gardées en base de données (catalog: doctrine), mais pas les deux.
Les quêtes qui reviennent
Avec phil/almanac installé, la clé recurs fait revenir une quête chaque année aux dates que calcule l'almanach. Ce
sont des jours entiers dans le fuseau horaire configuré :
recurs: { from: 'easter - 2 days', until: 'easter + 1 day' } # from Good Friday to Easter Monday
recurs: { from: '10-25', days: 7 } # a week from October 25
recurs: { from: 'winter solstice', days: 3 }
from est une règle écrite dans les mots de l'almanach. La quête dure days jours, un seul par défaut, ou jusqu'au
premier jour d'une autre règle avec until. Chaque occurrence porte le nom de sa date d'ouverture, comme 2027-03-26,
et la quête s'accomplit une fois par occurrence.
Les services ne gardent aucun état d'une requête à l'autre : ils sont sûrs dans un worker. Les dépôts en mémoire, pour les tests, se vident quand le noyau se réinitialise, et la projection oublie ce que sa dernière reconstruction avait gardé pour la relecture.