Pour implanter les Quêtes et les Missions, nous pouvons utiliser massivement les fonctionnalités fournies par les systèmes d'Interactions, de dialogues et de perceptions. Cf les RFC appropriées pour avoir plus de détails sur ces systèmes. Le système des Quêtes est très flexible et générique.
Les Quêtes peuvent être crées avec l'éditeur de Quêtes (création manuelle) ou automagiquement par le jeu lui-même (en réaction à certains événements). i
Le jeu gère une liste d'objets Quêtes. Un objet Quête contient~:
(0) --> -1) --|--> (2)
|--> (3)
État 0 : la Quête est décrite par le donneur.
État 1 : le quêteur tue la victime.
État 2 : le quêteur ramène le corps au donneur. Récompense 1000~or
État 3 : le quêteur ramène la carte d'identité de la victime. Récompense
100~gold (et s'il a menti, le donneur peut envoyer de nouveaux quêteurs pour
le tuer).
Pour détecter un changement d'état, nous pouvons envelopper certaines Actions.
Par exemple, si le quêteur doit livrer un objet à quelqu'un, l'Action 'donner'
est enveloppée~: si le quêteur utilise la nouvelle Action avec le bon objet et
le bon destinataire, l'état de la Quête est modifié et l'Action originale est
appelée. Sinon, l'action originale est directement appelée.
Le quêteur peut aussi progresser dans la Quête simplement en disant un mot à
quelqu'un (cf Dialog-RFC).
Chaque Personnage garde une liste de QuestID (pour les missions/quêtes auquelles
il participe).