<spanid="evennia-contrib-wilderness"></span><h1>evennia.contrib.wilderness<aclass="headerlink"href="#module-evennia.contrib.wilderness"title="Permalink to this headline">¶</a></h1>
<p>Wilderness system</p>
<p>Evennia contrib - titeuf87 2017</p>
<p>This contrib provides a wilderness map. This is an area that can be huge where
the rooms are mostly similar, except for some small cosmetic changes like the
room name.</p>
<p>Usage:</p>
<blockquote>
<div><p>This contrib does not provide any commands. Instead the @py command can be
used.</p>
<p>A wilderness map needs to created first. There can be different maps, all
with their own name. If no name is provided, then a default one is used. Internally,
the wilderness is stored as a Script with the name you specify. If you don’t
specify the name, a script named “default” will be created and used.</p>
<p>@py from evennia.contrib import wilderness; wilderness.create_wilderness()</p>
<p>Once created, it is possible to move into that wilderness map:</p>
<p>@py from evennia.contrib import wilderness; wilderness.enter_wilderness(me)</p>
<p>All coordinates used by the wilderness map are in the format of <strong>(x, y)</strong>
tuples. x goes from left to right and y goes from bottom to top. So <strong>(0, 0)</strong>
is the bottom left corner of the map.</p>
</div></blockquote>
<p>Customisation:</p>
<blockquote>
<div><p>The defaults, while useable, are meant to be customised. When creating a
new wilderness map it is possible to give a “map provider”: this is a
python object that is smart enough to create the map.</p>
<p>The default provider, WildernessMapProvider, just creates a grid area that
is unlimited in size.
This WildernessMapProvider can be subclassed to create more interesting
maps and also to customize the room/exit typeclass used.</p>
<p>There is also no command that allows players to enter the wilderness. This
still needs to be added: it can be a command or an exit, depending on your
needs.</p>
</div></blockquote>
<p>Customisation example:</p>
<blockquote>
<div><p>To give an example of how to customize, we will create a very simple (and
small) wilderness map that is shaped like a pyramid. The map will be
provided as a string: a “.” symbol is a location we can walk on.</p>
<codeclass="sig-prename descclassname">evennia.contrib.wilderness.</code><codeclass="sig-name descname">create_wilderness</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">name</span><spanclass="o">=</span><spanclass="default_value">'default'</span></em>, <emclass="sig-param"><spanclass="n">mapprovider</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#create_wilderness"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.create_wilderness"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.contrib.wilderness.</code><codeclass="sig-name descname">enter_wilderness</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em>, <emclass="sig-param"><spanclass="n">coordinates</span><spanclass="o">=</span><spanclass="default_value">0, 0</span></em>, <emclass="sig-param"><spanclass="n">name</span><spanclass="o">=</span><spanclass="default_value">'default'</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#enter_wilderness"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.enter_wilderness"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-prename descclassname">evennia.contrib.wilderness.</code><codeclass="sig-name descname">get_new_coordinates</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">coordinates</span></em>, <emclass="sig-param"><spanclass="n">direction</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#get_new_coordinates"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.get_new_coordinates"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.wilderness.</code><codeclass="sig-name descname">WildernessScript</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/wilderness.html#WildernessScript"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_script_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessScript.at_script_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript.at_script_creation"title="Permalink to this definition">¶</a></dt>
<dd><p>Only called once, when the script is created. This is a default Evennia
<emclass="property">property </em><codeclass="sig-name descname">mapprovider</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript.mapprovider"title="Permalink to this definition">¶</a></dt>
<dd><p>Shortcut property to the map provider.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><em>MapProvider</em>– the mapprovider used with this wilderness</p>
<emclass="property">property </em><codeclass="sig-name descname">itemcoordinates</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript.itemcoordinates"title="Permalink to this definition">¶</a></dt>
<dd><p>Returns a dictionary with the coordinates of every item inside this
wilderness map. The key is the item, the value are the coordinates as
<codeclass="sig-name descname">at_start</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessScript.at_start"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript.at_start"title="Permalink to this definition">¶</a></dt>
<dd><p>Called when the script is started and also after server reloads.</p>
<codeclass="sig-name descname">is_valid_coordinates</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">coordinates</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessScript.is_valid_coordinates"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript.is_valid_coordinates"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get_obj_coordinates</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessScript.get_obj_coordinates"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript.get_obj_coordinates"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get_objs_at_coordinates</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">coordinates</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessScript.get_objs_at_coordinates"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript.get_objs_at_coordinates"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">move_obj</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em>, <emclass="sig-param"><spanclass="n">new_coordinates</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessScript.move_obj"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript.move_obj"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_after_object_leave</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessScript.at_after_object_leave"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript.at_after_object_leave"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.contrib.wilderness.WildernessScript'</em><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'WildernessScript'</em><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessScript.typename"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.wilderness.</code><codeclass="sig-name descname">WildernessRoom</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/wilderness.html#WildernessRoom"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessRoom"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">wilderness</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessRoom.wilderness"title="Permalink to this definition">¶</a></dt>
<dd><p>Shortcut property to the wilderness script this room belongs to.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><em>WildernessScript</em>– the WildernessScript attached to this room</p>
<emclass="property">property </em><codeclass="sig-name descname">location_name</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessRoom.location_name"title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the name of the wilderness at this room’s coordinates.</p>
<emclass="property">property </em><codeclass="sig-name descname">coordinates</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessRoom.coordinates"title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the coordinates of this room into the wilderness.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><p><em>tuple</em>–</p>
<dlclass="simple">
<dt>(x, y) coordinates of where this room is inside the</dt><dd><p>wilderness.</p>
<codeclass="sig-name descname">at_object_receive</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">moved_obj</span></em>, <emclass="sig-param"><spanclass="n">source_location</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessRoom.at_object_receive"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessRoom.at_object_receive"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_object_leave</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">moved_obj</span></em>, <emclass="sig-param"><spanclass="n">target_location</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessRoom.at_object_leave"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessRoom.at_object_leave"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">set_active_coordinates</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">new_coordinates</span></em>, <emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessRoom.set_active_coordinates"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessRoom.set_active_coordinates"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get_display_name</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">looker</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessRoom.get_display_name"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessRoom.get_display_name"title="Permalink to this definition">¶</a></dt>
<dd><p>Displays the name of the object in a viewer-aware manner.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>looker</strong> (<aclass="reference internal"href="evennia.typeclasses.models.html#evennia.typeclasses.models.TypedObject"title="evennia.typeclasses.models.TypedObject"><em>TypedObject</em></a>) – The object or account that is looking
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessRoom.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessRoom.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.contrib.wilderness.WildernessRoom'</em><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessRoom.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'WildernessRoom'</em><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessRoom.typename"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.wilderness.</code><codeclass="sig-name descname">WildernessExit</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/wilderness.html#WildernessExit"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessExit"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">wilderness</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessExit.wilderness"title="Permalink to this definition">¶</a></dt>
<dd><p>Shortcut property to the wilderness script.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p><em>WildernessScript</em>– the WildernessScript attached to this exit’s room</p>
<emclass="property">property </em><codeclass="sig-name descname">mapprovider</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessExit.mapprovider"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_traverse_coordinates</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">traversing_object</span></em>, <emclass="sig-param"><spanclass="n">current_coordinates</span></em>, <emclass="sig-param"><spanclass="n">new_coordinates</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessExit.at_traverse_coordinates"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessExit.at_traverse_coordinates"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_traverse</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">traversing_object</span></em>, <emclass="sig-param"><spanclass="n">target_location</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessExit.at_traverse"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessExit.at_traverse"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessExit.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessExit.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.contrib.wilderness.WildernessExit'</em><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessExit.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'WildernessExit'</em><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessExit.typename"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.wilderness.</code><codeclass="sig-name descname">WildernessMapProvider</code><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessMapProvider"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessMapProvider"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">room_typeclass</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessMapProvider.room_typeclass"title="Permalink to this definition">¶</a></dt>
<dd><p>alias of <aclass="reference internal"href="#evennia.contrib.wilderness.WildernessRoom"title="evennia.contrib.wilderness.WildernessRoom"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">WildernessRoom</span></code></a></p>
<codeclass="sig-name descname">exit_typeclass</code><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessMapProvider.exit_typeclass"title="Permalink to this definition">¶</a></dt>
<dd><p>alias of <aclass="reference internal"href="#evennia.contrib.wilderness.WildernessExit"title="evennia.contrib.wilderness.WildernessExit"><codeclass="xref py py-class docutils literal notranslate"><spanclass="pre">WildernessExit</span></code></a></p>
<codeclass="sig-name descname">is_valid_coordinates</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">wilderness</span></em>, <emclass="sig-param"><spanclass="n">coordinates</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessMapProvider.is_valid_coordinates"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessMapProvider.is_valid_coordinates"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get_location_name</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">coordinates</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessMapProvider.get_location_name"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessMapProvider.get_location_name"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_prepare_room</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">coordinates</span></em>, <emclass="sig-param"><spanclass="n">caller</span></em>, <emclass="sig-param"><spanclass="n">room</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/wilderness.html#WildernessMapProvider.at_prepare_room"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.wilderness.WildernessMapProvider.at_prepare_room"title="Permalink to this definition">¶</a></dt>
<dd><p>Called when a room gets activated for certain coordinates. This happens
after every object is moved in it.
This can be used to set a custom room desc for instance or run other
customisations on the room.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>coordinates</strong> (<em>tuple</em>) – the coordinates as (x, y) where room is
located at</p></li>
<li><p><strong>caller</strong> (<em>Object</em>) – the object that moved into this room</p></li>
<li><p><strong>room</strong> (<aclass="reference internal"href="#evennia.contrib.wilderness.WildernessRoom"title="evennia.contrib.wilderness.WildernessRoom"><em>WildernessRoom</em></a>) – the room object that will be used at that
wilderness location</p></li>
</ul>
</dd>
</dl>
<pclass="rubric">Example</p>
<p>An example use of this would to plug in a randomizer to show different
descriptions for different coordinates, or place a treasure at a special