<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
<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><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"> = 'base quest'</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">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><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>
<codeclass="sig-name descname">add_data</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">key</span></em>, <emclass="sig-param"><spanclass="n">value</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuest.add_data"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.add_data"title="Permalink to this definition">¶</a></dt>
<dd><p>Add data to the quest. This saves it permanently.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>key</strong> (<em>str</em>) – The key to store the data under.</p></li>
<li><p><strong>value</strong> (<em>any</em>) – The data to store.</p></li>
<codeclass="sig-name descname">get_data</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">key</span></em>, <emclass="sig-param"><spanclass="n">default</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.get_data"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.get_data"title="Permalink to this definition">¶</a></dt>
<dd><p>Get data from the quest.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>key</strong> (<em>str</em>) – The key to get data for.</p></li>
<li><p><strong>default</strong> (<em>any</em><em>, </em><em>optional</em>) – The default value to return if key is not found.</p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>any</em>– The data stored under the key.</p>
<codeclass="sig-name descname">remove_data</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">key</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuest.remove_data"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.remove_data"title="Permalink to this definition">¶</a></dt>
<dd><p>Remove data from the quest permanently.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>key</strong> (<em>str</em>) – The key to remove.</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>
<emclass="property">property </em><codeclass="sig-name descname">status</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.status"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">is_completed</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.is_completed"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">is_abandoned</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.is_abandoned"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">is_failed</code><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.is_failed"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">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">fail</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuest.fail"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.fail"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><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.help"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuest.help"title="Permalink to this definition">¶</a></dt>
<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>
<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">quest_data_attribute_template</code><emclass="property"> = '_quest_data_{quest_key}'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.quest_data_attribute_template"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">quest_data_attribute_category</code><emclass="property"> = 'evadventure'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.quest_data_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">all</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#EvAdventureQuestHandler.all"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.all"title="Permalink to this definition">¶</a></dt>
<dd><p>Get all quests stored on character.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><em>list</em>– All quests stored on character.</p>
<codeclass="sig-name descname">add</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">quest_class</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>
<ddclass="field-odd"><p><strong>quest_class</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">save_quest_data</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.save_quest_data"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.save_quest_data"title="Permalink to this definition">¶</a></dt>
<dd><p>Save data for a quest. We store this on the quester as well as updating the quest itself.</p>
<codeclass="sig-name descname">load_quest_data</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.load_quest_data"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.EvAdventureQuestHandler.load_quest_data"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorials.evadventure.quests.</code><codeclass="sig-name descname">CmdQuests</code><spanclass="sig-paren">(</span><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#CmdQuests"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.CmdQuests"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">key</code><emclass="property"> = 'quests'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.CmdQuests.key"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">aliases</code><emclass="property"> = ['quest']</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.CmdQuests.aliases"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">help_category</code><emclass="property"> = 'general'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.CmdQuests.help_category"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">lock_storage</code><emclass="property"> = 'cmd:all();'</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.CmdQuests.lock_storage"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">search_index_entry</code><emclass="property"> = {'aliases': 'quest', 'category': 'general', 'key': 'quests', 'no_prefix': ' quest', 'tags': '', 'text': '\n List all quests and their statuses as well as get info about the status of\n a specific quest.\n\n Usage:\n quests\n quest <questname>\n\n '}</em><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.CmdQuests.search_index_entry"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">parse</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#CmdQuests.parse"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.CmdQuests.parse"title="Permalink to this definition">¶</a></dt>
<dd><p>Once the cmdhandler has identified this as the command we
want, this function is run. If many of your commands have a
similar syntax (for example ‘cmd arg1 = arg2’) you should
simply define this once and just let other commands of the
same form inherit from this. See the docstring of this module
for which object properties are available to use (notably
<codeclass="sig-name descname">func</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorials/evadventure/quests.html#CmdQuests.func"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorials.evadventure.quests.CmdQuests.func"title="Permalink to this definition">¶</a></dt>
<dd><p>This is the actual executing part of the command. It is
called directly after self.parse(). See the docstring of this
module for which object properties are available (beyond those