<spanid="evennia-contrib-full-systems-evscaperoom-state"></span><h1>evennia.contrib.full_systems.evscaperoom.state<aclass="headerlink"href="#module-evennia.contrib.full_systems.evscaperoom.state"title="Permalink to this headline">¶</a></h1>
<p>States represent the sequence of states the room goes through.</p>
<p>This module includes the BaseState class and the StateHandler
for managing states on the room.</p>
<p>The state handler operates on an Evscaperoom and changes
its state from one to another.</p>
<p>A given state is given as a module in states/ package. The
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.full_systems.evscaperoom.state.</code><codeclass="sig-name descname">StateHandler</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">room</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#StateHandler"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.StateHandler"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">room</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#StateHandler.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.StateHandler.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
<codeclass="sig-name descname">load_state</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">statename</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#StateHandler.load_state"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.StateHandler.load_state"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">init_state</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#StateHandler.init_state"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.StateHandler.init_state"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">next_state</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">next_state</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#StateHandler.next_state"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.StateHandler.next_state"title="Permalink to this definition">¶</a></dt>
<dd><p>Check if the current state is finished. This should be called whenever
the players do actions that may affect the state of the room.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>next_state</strong> (<em>str</em><em>, </em><em>optional</em>) – If given, override the next_state given
by the current state’s check() method with this - this allows
for branching paths (but the current state must still first agree
that the check passes).</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>state_changed (bool)</em>– True if the state changed, False otherwise.</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.full_systems.evscaperoom.state.</code><codeclass="sig-name descname">BaseState</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">handler</span></em>, <emclass="sig-param"><spanclass="n">room</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#BaseState"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">next_state</code><emclass="property"> = 'unset'</em><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState.next_state"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">hints</code><emclass="property"> = []</em><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState.hints"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">handler</span></em>, <emclass="sig-param"><spanclass="n">room</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#BaseState.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Initializer.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>room</strong> (<aclass="reference internal"href="evennia.contrib.full_systems.evscaperoom.room.html#evennia.contrib.full_systems.evscaperoom.room.EvscapeRoom"title="evennia.contrib.full_systems.evscaperoom.room.EvscapeRoom"><em>EvscapeRoom</em></a>) – The room tied to this state.</p></li>
<li><p><strong>handler</strong> (<aclass="reference internal"href="#evennia.contrib.full_systems.evscaperoom.state.StateHandler"title="evennia.contrib.full_systems.evscaperoom.state.StateHandler"><em>StateHandler</em></a>) – Back-reference to the handler
<codeclass="sig-name descname">get_hint</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#BaseState.get_hint"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState.get_hint"title="Permalink to this definition">¶</a></dt>
<dd><p>Get a hint for how to solve this state.</p>
<codeclass="sig-name descname">msg</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">message</span></em>, <emclass="sig-param"><spanclass="n">target</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">borders</span><spanclass="o">=</span><spanclass="default_value">False</span></em>, <emclass="sig-param"><spanclass="n">cinematic</span><spanclass="o">=</span><spanclass="default_value">False</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#BaseState.msg"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState.msg"title="Permalink to this definition">¶</a></dt>
<dd><p>Display messsage to everyone in room, or given target.</p>
<codeclass="sig-name descname">cinematic</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">message</span></em>, <emclass="sig-param"><spanclass="n">target</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#BaseState.cinematic"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState.cinematic"title="Permalink to this definition">¶</a></dt>
<dd><p>Display a ‘cinematic’ sequence - centered, with borders.</p>
<codeclass="sig-name descname">create_object</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">typeclass</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">key</span><spanclass="o">=</span><spanclass="default_value">'testobj'</span></em>, <emclass="sig-param"><spanclass="n">location</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#BaseState.create_object"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState.create_object"title="Permalink to this definition">¶</a></dt>
<dd><p>This is a convenience-wrapper for quickly building EvscapeRoom objects.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Keyword Arguments</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>typeclass</strong> (<em>str</em>) – This can take just the class-name in the evscaperoom’s
objects.py module. Otherwise, a full path or the actual class
is needed (for custom state objects, just give the class directly).</p></li>
<li><p><strong>key</strong> (<em>str</em>) – Name of object.</p></li>
<li><p><strong>location</strong> (<em>Object</em>) – If not given, this will be the current room.</p></li>
<li><p><strong>kwargs</strong> (<em>any</em>) – Will be passed into create_object.</p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>new_obj (Object)</em>– The newly created object, if any.</p>
<codeclass="sig-name descname">get_object</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">key</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#BaseState.get_object"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState.get_object"title="Permalink to this definition">¶</a></dt>
<dd><p>Find a named <em>non-character</em> object for this state in this room.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>key</strong> (<em>str</em>) – Object to search for.</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>obj (Object)</em>– Object in the room.</p>
<codeclass="sig-name descname">init</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#BaseState.init"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState.init"title="Permalink to this definition">¶</a></dt>
<dd><p>Initializes the state (usually by modifying the room in some way)</p>
<codeclass="sig-name descname">clean</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#BaseState.clean"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState.clean"title="Permalink to this definition">¶</a></dt>
<dd><p>Any cleanup operations after the state ends.</p>
<codeclass="sig-name descname">next</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">next_state</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#BaseState.next"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState.next"title="Permalink to this definition">¶</a></dt>
<dd><p>Get the next state after this one.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>next_state</strong> (<em>str</em><em>, </em><em>optional</em>) – This allows the calling code
to redirect to a different state than the ‘default’ one
(creating branching paths in the game). Override this method
to customize (by default the input will always override default
set on the class)</p>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><p><em>state_name (str or None)</em>–</p>
<dlclass="simple">
<dt>Name of next state to switch to. None</dt><dd><p>to remain in this state. By default we check the room for the
<codeclass="sig-name descname">character_enters</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">character</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#BaseState.character_enters"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState.character_enters"title="Permalink to this definition">¶</a></dt>
<dd><p>Called when character enters the room in this state.</p>
<codeclass="sig-name descname">character_leaves</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">character</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/full_systems/evscaperoom/state.html#BaseState.character_leaves"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.full_systems.evscaperoom.state.BaseState.character_leaves"title="Permalink to this definition">¶</a></dt>
<dd><p>Called when character is whisked away (usually because of
quitting). This method cannot influence the move itself; it