<spanid="evennia-contrib-tutorials-evadventure-quests"></span><h1>evennia.contrib.tutorials.evadventure.quests<aclass="headerlink"href="#module-evennia.contrib.tutorials.evadventure.quests"title="Permalink to this headline">¶</a></h1>
<p>A simple quest system for EvAdventure.</p>
<p>A quest is represented by a quest-handler sitting as
.quest on a Character. Individual Quests are objects
that track the state and can have multiple steps, each
of which are checked off during the quest’s progress.</p>
<p>The player can use the quest handler to track the
progress of their quests.</p>
<p>A quest ending can mean a reward or the start of
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.quests.</code><codeclass="sig-name descname">EvAdventureQuest</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">quester</span></em>, <emclass="sig-param"><spanclass="n">start_step</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuest"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = 'basequest'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">desc</code><emclass="property"> = 'This is the base quest class'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.desc"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">start_step</code><emclass="property"> = 'start'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.start_step"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">completed_text</code><emclass="property"> = 'This quest is completed!'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.completed_text"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">abandoned_text</code><emclass="property"> = 'This quest is abandoned.'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.abandoned_text"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">help_start</code><emclass="property"> = 'You need to start first'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.help_start"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">help_end</code><emclass="property"> = 'You need to end the quest'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.help_end"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">quester</span></em>, <emclass="sig-param"><spanclass="n">start_step</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuest.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
<emclass="property">property </em><codeclass="sig-name descname">questhandler</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.questhandler"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">current_step</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.current_step"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">abandon</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuest.abandon"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.abandon"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">complete</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuest.complete"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.complete"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">progress</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuest.progress"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.progress"title="Permalink to this definition">¶</a></dt>
<dd><p>This is called whenever the environment expects a quest may need stepping. This will
determine which quest-step we are on and run <strong>step_<stepname></strong>, which in turn will figure
out if the step is complete or not.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>*args</strong>– Will be passed into the step method.</p></li>
<li><p><strong>**kwargs</strong>–<p>Will be passed into the step method.</p>
<codeclass="sig-name descname">help</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuest.help"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.help"title="Permalink to this definition">¶</a></dt>
<dd><p>This is used to get help (or a reminder) of what needs to be done to complete the current
quest-step.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><em>str</em>– The help text for the current step.</p>
<codeclass="sig-name descname">step_start</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuest.step_start"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.step_start"title="Permalink to this definition">¶</a></dt>
<dd><p>Example step that completes immediately.</p>
<codeclass="sig-name descname">cleanup</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuest.cleanup"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.cleanup"title="Permalink to this definition">¶</a></dt>
<dd><p>This is called both when completing the quest, or when it is abandoned prematurely.
Make sure to cleanup any quest-related data stored when following the quest.</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.quests.</code><codeclass="sig-name descname">EvAdventureQuestHandler</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuestHandler"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">quest_storage_attribute_key</code><emclass="property"> = '_quests'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.quest_storage_attribute_key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">quest_storage_attribute_category</code><emclass="property"> = 'evadventure'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.quest_storage_attribute_category"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuestHandler.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
<codeclass="sig-name descname">has</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">quest_key</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuestHandler.has"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.has"title="Permalink to this definition">¶</a></dt>
<dd><p>Check if a given quest is registered with the Character.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>quest_key</strong> (<em>str</em>) – The name of the quest to check for.</p></li>
<li><p><strong>quest_category</strong> (<em>str</em><em>, </em><em>optional</em>) – Quest category, if any.</p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>bool</em>– If the character is following this quest or not.</p>
<codeclass="sig-name descname">get</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">quest_key</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuestHandler.get"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.get"title="Permalink to this definition">¶</a></dt>
<dd><p>Get the quest stored on character, if any.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>quest_key</strong> (<em>str</em>) – The name of the quest to check for.</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><p><em>EvAdventureQuest or None</em>–</p>
<dlclass="simple">
<dt>The quest stored, or None if</dt><dd><p>Character is not on this quest.</p>
<codeclass="sig-name descname">add</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">quest</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuestHandler.add"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.add"title="Permalink to this definition">¶</a></dt>
<dd><p>Add a new quest</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>quest</strong> (<aclass="reference internal"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest"title="evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest"><em>EvAdventureQuest</em></a>) – The quest class to start.</p>
<codeclass="sig-name descname">remove</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">quest_key</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuestHandler.remove"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.remove"title="Permalink to this definition">¶</a></dt>
<dd><p>Remove a quest. If not complete, it will be abandoned.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>quest_key</strong> (<em>str</em>) – The quest to remove.</p>
<codeclass="sig-name descname">get_help</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">quest_key</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuestHandler.get_help"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.get_help"title="Permalink to this definition">¶</a></dt>
<dd><p>Get help text for a quest or for all quests. The help text is
a combination of the description of the quest and the help-text
of the current step.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>quest_key</strong> (<em>str</em><em>, </em><em>optional</em>) – The quest-key. If not given, get help for all
quests in handler.</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>list</em>– Help texts, one for each quest, or only one if <strong>quest_key</strong> is given.</p>
<codeclass="sig-name descname">progress</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">quest_key</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuestHandler.progress"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.progress"title="Permalink to this definition">¶</a></dt>
<dd><p>Check progress of a given quest or all quests.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>quest_key</strong> (<em>str</em><em>, </em><em>optional</em>) – If given, check the progress of this quest (if we have it),
otherwise check progress on all quests.</p></li>
<li><p><strong>*args</strong>– Will be passed into each quest’s <strong>progress</strong> call.</p></li>
<li><p><strong>**kwargs</strong>–<p>Will be passed into each quest’s <strong>progress</strong> call.</p>