Updated HTML docs

This commit is contained in:
Griatch 2021-02-27 20:21:31 +01:00
parent 801df95026
commit b77bb57004
690 changed files with 24165 additions and 10952 deletions

View file

@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 038fdb322c369db1cc82eabb59d37c56
config: 1186b0975bd5d3e707418a127dfdfe8b
tags: 645f666f9bcd5a90fca523b33c5a78b7

View file

@ -419,19 +419,6 @@
<span class="k">del</span> <span class="n">SystemCmds</span>
<span class="k">del</span> <span class="n">_EvContainer</span>
<span class="c1"># typeclases</span>
<span class="kn">from</span> <span class="nn">.utils.utils</span> <span class="kn">import</span> <span class="n">class_from_module</span>
<span class="n">BASE_ACCOUNT_TYPECLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_ACCOUNT_TYPECLASS</span><span class="p">)</span>
<span class="n">BASE_OBJECT_TYPECLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_OBJECT_TYPECLASS</span><span class="p">)</span>
<span class="n">BASE_CHARACTER_TYPECLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHARACTER_TYPECLASS</span><span class="p">)</span>
<span class="n">BASE_ROOM_TYPECLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_ROOM_TYPECLASS</span><span class="p">)</span>
<span class="n">BASE_EXIT_TYPECLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_EXIT_TYPECLASS</span><span class="p">)</span>
<span class="n">BASE_CHANNEL_TYPECLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHANNEL_TYPECLASS</span><span class="p">)</span>
<span class="n">BASE_SCRIPT_TYPECLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_SCRIPT_TYPECLASS</span><span class="p">)</span>
<span class="n">BASE_GUEST_TYPECLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_GUEST_TYPECLASS</span><span class="p">)</span>
<span class="k">del</span> <span class="n">class_from_module</span>
<span class="c1"># delayed starts - important so as to not back-access evennia before it has</span>
<span class="c1"># finished initializing</span>
<span class="n">GLOBAL_SCRIPTS</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>

View file

@ -60,7 +60,8 @@
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">make_iter</span><span class="p">,</span> <span class="n">class_from_module</span>
<span class="n">COMMAND_DEFAULT_CLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">)</span>
<span class="n">CHANNEL_DEFAULT_TYPECLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHANNEL_TYPECLASS</span><span class="p">)</span>
<span class="n">CHANNEL_DEFAULT_TYPECLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span>
<span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHANNEL_TYPECLASS</span><span class="p">,</span> <span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_CHANNEL_TYPECLASS</span><span class="p">)</span>
<span class="c1"># limit symbol import for API</span>

View file

@ -1,596 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>evennia.contrib.mapbuilder &#8212; Evennia 0.9.5 documentation</title>
<link rel="stylesheet" href="../../../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/language_data.js"></script>
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="../../evennia.html" accesskey="U">evennia</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.contrib.mapbuilder</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for evennia.contrib.mapbuilder</h1><div class="highlight"><pre>
<span></span><span class="c1"># -*- coding: utf-8 -*-</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">Evennia World Builder</span>
<span class="sd">Contribution - Cloud_Keeper 2016</span>
<span class="sd">Build a map from a 2D ASCII map.</span>
<span class="sd">This is a command which takes two inputs:</span>
<span class="sd">≈≈≈≈≈</span>
<span class="sd">≈♣n♣≈ MAP_LEGEND = {(&quot;&quot;, &quot;&quot;): build_forest,</span>
<span class="sd">≈∩▲∩≈ (&quot;&quot;, &quot;n&quot;): build_mountains,</span>
<span class="sd">≈♠n♠≈ (&quot;&quot;): build_temple}</span>
<span class="sd">≈≈≈≈≈</span>
<span class="sd">A string of ASCII characters representing a map and a dictionary of functions</span>
<span class="sd">containing build instructions. The characters of the map are iterated over and</span>
<span class="sd">compared to a list of trigger characters. When a match is found the</span>
<span class="sd">corresponding function is executed generating the rooms, exits and objects as</span>
<span class="sd">defined by the users build instructions. If a character is not a match to</span>
<span class="sd">a provided trigger character (including spaces) it is simply skipped and the</span>
<span class="sd">process continues.</span>
<span class="sd">For instance, the above map represents a temple (▲) amongst mountains (n,∩)</span>
<span class="sd">in a forest (♣,♠) on an island surrounded by water (≈). Each character on the</span>
<span class="sd">first line is iterated over but as there is no match with our MAP_LEGEND it</span>
<span class="sd">is skipped. On the second line it finds &quot;&quot; which is a match and so the</span>
<span class="sd">`build_forest` function is called. Next the `build_mountains` function is</span>
<span class="sd">called and so on until the map is completed. Building instructions are passed</span>
<span class="sd">the following arguments:</span>
<span class="sd"> x - The rooms position on the maps x axis</span>
<span class="sd"> y - The rooms position on the maps y axis</span>
<span class="sd"> caller - The account calling the command</span>
<span class="sd"> iteration - The current iterations number (0, 1 or 2)</span>
<span class="sd"> room_dict - A dictionary containing room references returned by build</span>
<span class="sd"> functions where tuple coordinates are the keys (x, y).</span>
<span class="sd"> ie room_dict[(2, 2)] will return the temple room above.</span>
<span class="sd">Building functions should return the room they create. By default these rooms</span>
<span class="sd">are used to create exits between valid adjacent rooms to the north, south,</span>
<span class="sd">east and west directions. This behaviour can turned off with the use of switch</span>
<span class="sd">arguments. In addition to turning off automatic exit generation the switches</span>
<span class="sd">allow the map to be iterated over a number of times. This is important for</span>
<span class="sd">something like custom exit building. Exits require a reference to both the</span>
<span class="sd">exits location and the exits destination. During the first iteration it is</span>
<span class="sd">possible that an exit is created pointing towards a destination that</span>
<span class="sd">has not yet been created resulting in error. By iterating over the map twice</span>
<span class="sd">the rooms can be created on the first iteration and room reliant code can be</span>
<span class="sd">be used on the second iteration. The iteration number and a dictionary of</span>
<span class="sd">references to rooms previously created is passed to the build commands.</span>
<span class="sd">Use by importing and including the command in your default_cmdsets module.</span>
<span class="sd">For example:</span>
<span class="sd"> # mygame/commands/default_cmdsets.py</span>
<span class="sd"> from evennia.contrib import mapbuilder</span>
<span class="sd"> ...</span>
<span class="sd"> self.add(mapbuilder.CmdMapBuilder())</span>
<span class="sd">You then call the command in-game using the path to the MAP and MAP_LEGEND vars</span>
<span class="sd">The path you provide is relative to the evennia or mygame folder.</span>
<span class="sd">Usage:</span>
<span class="sd"> @mapbuilder[/switch] &lt;path.to.file.MAPNAME&gt; &lt;path.to.file.MAP_LEGEND&gt;</span>
<span class="sd">Switches:</span>
<span class="sd"> one - execute build instructions once without automatic exit creation.</span>
<span class="sd"> two - execute build instructions twice without automatic exit creation.</span>
<span class="sd">Example:</span>
<span class="sd"> @mapbuilder world.gamemap.MAP world.maplegend.MAP_LEGEND</span>
<span class="sd"> @mapbuilder evennia.contrib.mapbuilder.EXAMPLE1_MAP EXAMPLE1_LEGEND</span>
<span class="sd"> @mapbuilder/two evennia.contrib.mapbuilder.EXAMPLE2_MAP EXAMPLE2_LEGEND</span>
<span class="sd"> (Legend path defaults to map path)</span>
<span class="sd">Below are two examples showcasing the use of automatic exit generation and</span>
<span class="sd">custom exit generation. Whilst located, and can be used, from this module for</span>
<span class="sd">convenience The below example code should be in mymap.py in mygame/world.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">utils</span>
<span class="c1"># ---------- EXAMPLE 1 ---------- #</span>
<span class="c1"># @mapbuilder evennia.contrib.mapbuilder.EXAMPLE1_MAP EXAMPLE1_LEGEND</span>
<span class="c1"># -*- coding: utf-8 -*-</span>
<span class="c1"># Add the necessary imports for your instructions here.</span>
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">create_object</span>
<span class="kn">from</span> <span class="nn">typeclasses</span> <span class="kn">import</span> <span class="n">rooms</span><span class="p">,</span> <span class="n">exits</span>
<span class="kn">from</span> <span class="nn">random</span> <span class="kn">import</span> <span class="n">randint</span>
<span class="kn">import</span> <span class="nn">random</span>
<span class="c1"># A map with a temple (▲) amongst mountains (n,∩) in a forest (♣,♠) on an</span>
<span class="c1"># island surrounded by water (≈). By giving no instructions for the water</span>
<span class="c1"># characters we effectively skip it and create no rooms for those squares.</span>
<span class="n">EXAMPLE1_MAP</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span><span class="se">\</span>
<span class="s2">≈≈≈≈≈</span>
<span class="s2">≈♣n♣≈</span>
<span class="s2">≈∩▲∩≈</span>
<span class="s2">≈♠n♠≈</span>
<span class="s2">≈≈≈≈≈</span>
<span class="s2">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="example1_build_forest"><a class="viewcode-back" href="../../../api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.example1_build_forest">[docs]</a><span class="k">def</span> <span class="nf">example1_build_forest</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;A basic example of build instructions. Make sure to include **kwargs</span>
<span class="sd"> in the arguments and return an instance of the room for exit generation.&quot;&quot;&quot;</span>
<span class="c1"># Create a room and provide a basic description.</span>
<span class="n">room</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">rooms</span><span class="o">.</span><span class="n">Room</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">&quot;forest&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
<span class="n">room</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="s2">&quot;Basic forest room.&quot;</span>
<span class="c1"># Send a message to the account</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;caller&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">room</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">room</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
<span class="c1"># This is generally mandatory.</span>
<span class="k">return</span> <span class="n">room</span></div>
<div class="viewcode-block" id="example1_build_mountains"><a class="viewcode-back" href="../../../api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.example1_build_mountains">[docs]</a><span class="k">def</span> <span class="nf">example1_build_mountains</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;A room that is a little more advanced&quot;&quot;&quot;</span>
<span class="c1"># Create the room.</span>
<span class="n">room</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">rooms</span><span class="o">.</span><span class="n">Room</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">&quot;mountains&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
<span class="c1"># Generate a description by randomly selecting an entry from a list.</span>
<span class="n">room_desc</span> <span class="o">=</span> <span class="p">[</span>
<span class="s2">&quot;Mountains as far as the eye can see&quot;</span><span class="p">,</span>
<span class="s2">&quot;Your path is surrounded by sheer cliffs&quot;</span><span class="p">,</span>
<span class="s2">&quot;Haven&#39;t you seen that rock before?&quot;</span><span class="p">,</span>
<span class="p">]</span>
<span class="n">room</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">room_desc</span><span class="p">)</span>
<span class="c1"># Create a random number of objects to populate the room.</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">3</span><span class="p">)):</span>
<span class="n">rock</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">&quot;Rock&quot;</span><span class="p">,</span> <span class="n">location</span><span class="o">=</span><span class="n">room</span><span class="p">)</span>
<span class="n">rock</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="s2">&quot;An ordinary rock.&quot;</span>
<span class="c1"># Send a message to the account</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;caller&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">room</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">room</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
<span class="c1"># This is generally mandatory.</span>
<span class="k">return</span> <span class="n">room</span></div>
<div class="viewcode-block" id="example1_build_temple"><a class="viewcode-back" href="../../../api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.example1_build_temple">[docs]</a><span class="k">def</span> <span class="nf">example1_build_temple</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;A unique room that does not need to be as general&quot;&quot;&quot;</span>
<span class="c1"># Create the room.</span>
<span class="n">room</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">rooms</span><span class="o">.</span><span class="n">Room</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">&quot;temple&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
<span class="c1"># Set the description.</span>
<span class="n">room</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="p">(</span>
<span class="s2">&quot;In what, from the outside, appeared to be a grand and &quot;</span>
<span class="s2">&quot;ancient temple you&#39;ve somehow found yourself in the the &quot;</span>
<span class="s2">&quot;Evennia Inn! It consists of one large room filled with &quot;</span>
<span class="s2">&quot;tables. The bardisk extends along the east wall, where &quot;</span>
<span class="s2">&quot;multiple barrels and bottles line the shelves. The &quot;</span>
<span class="s2">&quot;barkeep seems busy handing out ale and chatting with &quot;</span>
<span class="s2">&quot;the patrons, which are a rowdy and cheerful lot, &quot;</span>
<span class="s2">&quot;keeping the sound level only just below thunderous. &quot;</span>
<span class="s2">&quot;This is a rare spot of mirth on this dread moor.&quot;</span>
<span class="p">)</span>
<span class="c1"># Send a message to the account</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;caller&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">room</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">room</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
<span class="c1"># This is generally mandatory.</span>
<span class="k">return</span> <span class="n">room</span></div>
<span class="c1"># Include your trigger characters and build functions in a legend dict.</span>
<span class="n">EXAMPLE1_LEGEND</span> <span class="o">=</span> <span class="p">{</span>
<span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">):</span> <span class="n">example1_build_forest</span><span class="p">,</span>
<span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;n&quot;</span><span class="p">):</span> <span class="n">example1_build_mountains</span><span class="p">,</span>
<span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">):</span> <span class="n">example1_build_temple</span><span class="p">,</span>
<span class="p">}</span>
<span class="c1"># ---------- EXAMPLE 2 ---------- #</span>
<span class="c1"># @mapbuilder/two evennia.contrib.mapbuilder.EXAMPLE2_MAP EXAMPLE2_LEGEND</span>
<span class="c1"># -*- coding: utf-8 -*-</span>
<span class="c1"># Add the necessary imports for your instructions here.</span>
<span class="c1"># from evennia import create_object</span>
<span class="c1"># from typeclasses import rooms, exits</span>
<span class="c1"># from evennia.utils import utils</span>
<span class="c1"># from random import randint</span>
<span class="c1"># import random</span>
<span class="c1"># This is the same layout as Example 1 but included are characters for exits.</span>
<span class="c1"># We can use these characters to determine which rooms should be connected.</span>
<span class="n">EXAMPLE2_MAP</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span><span class="se">\</span>
<span class="s2">≈ ≈ ≈ ≈ ≈</span>
<span class="s2">≈ ♣-♣-♣ ≈</span>
<span class="s2"> | |</span>
<span class="s2">≈ ♣ ♣ ♣ ≈</span>
<span class="s2"> | | |</span>
<span class="s2">≈ ♣-♣-♣ ≈</span>
<span class="s2">≈ ≈ ≈ ≈ ≈</span>
<span class="s2">&quot;&quot;&quot;</span>
<div class="viewcode-block" id="example2_build_forest"><a class="viewcode-back" href="../../../api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.example2_build_forest">[docs]</a><span class="k">def</span> <span class="nf">example2_build_forest</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;A basic room&quot;&quot;&quot;</span>
<span class="c1"># If on anything other than the first iteration - Do nothing.</span>
<span class="k">if</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;iteration&quot;</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="n">room</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">rooms</span><span class="o">.</span><span class="n">Room</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">&quot;forest&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
<span class="n">room</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="s2">&quot;Basic forest room.&quot;</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;caller&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">room</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">room</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
<span class="k">return</span> <span class="n">room</span></div>
<div class="viewcode-block" id="example2_build_verticle_exit"><a class="viewcode-back" href="../../../api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.example2_build_verticle_exit">[docs]</a><span class="k">def</span> <span class="nf">example2_build_verticle_exit</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Creates two exits to and from the two rooms north and south.&quot;&quot;&quot;</span>
<span class="c1"># If on the first iteration - Do nothing.</span>
<span class="k">if</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;iteration&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">return</span>
<span class="n">north_room</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;room_dict&quot;</span><span class="p">][(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)]</span>
<span class="n">south_room</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;room_dict&quot;</span><span class="p">][(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span>
<span class="c1"># create exits in the rooms</span>
<span class="n">create_object</span><span class="p">(</span>
<span class="n">exits</span><span class="o">.</span><span class="n">Exit</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">&quot;south&quot;</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;s&quot;</span><span class="p">],</span> <span class="n">location</span><span class="o">=</span><span class="n">north_room</span><span class="p">,</span> <span class="n">destination</span><span class="o">=</span><span class="n">south_room</span>
<span class="p">)</span>
<span class="n">create_object</span><span class="p">(</span>
<span class="n">exits</span><span class="o">.</span><span class="n">Exit</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">&quot;north&quot;</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;n&quot;</span><span class="p">],</span> <span class="n">location</span><span class="o">=</span><span class="n">south_room</span><span class="p">,</span> <span class="n">destination</span><span class="o">=</span><span class="n">north_room</span>
<span class="p">)</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;caller&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Connected: &quot;</span> <span class="o">+</span> <span class="n">north_room</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot; &amp; &quot;</span> <span class="o">+</span> <span class="n">south_room</span><span class="o">.</span><span class="n">key</span><span class="p">)</span></div>
<div class="viewcode-block" id="example2_build_horizontal_exit"><a class="viewcode-back" href="../../../api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.example2_build_horizontal_exit">[docs]</a><span class="k">def</span> <span class="nf">example2_build_horizontal_exit</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Creates two exits to and from the two rooms east and west.&quot;&quot;&quot;</span>
<span class="c1"># If on the first iteration - Do nothing.</span>
<span class="k">if</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;iteration&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">return</span>
<span class="n">west_room</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;room_dict&quot;</span><span class="p">][(</span><span class="n">x</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="p">)]</span>
<span class="n">east_room</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;room_dict&quot;</span><span class="p">][(</span><span class="n">x</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="p">)]</span>
<span class="n">create_object</span><span class="p">(</span><span class="n">exits</span><span class="o">.</span><span class="n">Exit</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">&quot;east&quot;</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;e&quot;</span><span class="p">],</span> <span class="n">location</span><span class="o">=</span><span class="n">west_room</span><span class="p">,</span> <span class="n">destination</span><span class="o">=</span><span class="n">east_room</span><span class="p">)</span>
<span class="n">create_object</span><span class="p">(</span><span class="n">exits</span><span class="o">.</span><span class="n">Exit</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">&quot;west&quot;</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;w&quot;</span><span class="p">],</span> <span class="n">location</span><span class="o">=</span><span class="n">east_room</span><span class="p">,</span> <span class="n">destination</span><span class="o">=</span><span class="n">west_room</span><span class="p">)</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;caller&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Connected: &quot;</span> <span class="o">+</span> <span class="n">west_room</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">&quot; &amp; &quot;</span> <span class="o">+</span> <span class="n">east_room</span><span class="o">.</span><span class="n">key</span><span class="p">)</span></div>
<span class="c1"># Include your trigger characters and build functions in a legend dict.</span>
<span class="n">EXAMPLE2_LEGEND</span> <span class="o">=</span> <span class="p">{</span>
<span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">):</span> <span class="n">example2_build_forest</span><span class="p">,</span>
<span class="p">(</span><span class="s2">&quot;|&quot;</span><span class="p">):</span> <span class="n">example2_build_verticle_exit</span><span class="p">,</span>
<span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">):</span> <span class="n">example2_build_horizontal_exit</span><span class="p">,</span>
<span class="p">}</span>
<span class="c1"># ---------- END OF EXAMPLES ---------- #</span>
<span class="n">COMMAND_DEFAULT_CLASS</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">)</span>
<span class="c1"># Helper function for readability.</span>
<span class="k">def</span> <span class="nf">_map_to_list</span><span class="p">(</span><span class="n">game_map</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Splits multi line map string into list of rows.</span>
<span class="sd"> Args:</span>
<span class="sd"> game_map (str): An ASCII map</span>
<span class="sd"> Returns:</span>
<span class="sd"> list (list): The map split into rows</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">game_map</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<div class="viewcode-block" id="build_map"><a class="viewcode-back" href="../../../api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.build_map">[docs]</a><span class="k">def</span> <span class="nf">build_map</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">game_map</span><span class="p">,</span> <span class="n">legend</span><span class="p">,</span> <span class="n">iterations</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">build_exits</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Receives the fetched map and legend vars provided by the player.</span>
<span class="sd"> Args:</span>
<span class="sd"> caller (Object): The creator of the map.</span>
<span class="sd"> game_map (str): An ASCII map string.</span>
<span class="sd"> legend (dict): Mapping of map symbols to object types.</span>
<span class="sd"> iterations (int): The number of iteration passes.</span>
<span class="sd"> build_exits (bool): Create exits between new rooms.</span>
<span class="sd"> Notes:</span>
<span class="sd"> The map</span>
<span class="sd"> is iterated over character by character, comparing it to the trigger</span>
<span class="sd"> characters in the legend var and executing the build instructions on</span>
<span class="sd"> finding a match. The map is iterated over according to the `iterations`</span>
<span class="sd"> value and exits are optionally generated between adjacent rooms according</span>
<span class="sd"> to the `build_exits` value.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># Split map string to list of rows and create reference list.</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Creating Map...&quot;</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">game_map</span><span class="p">)</span>
<span class="n">game_map</span> <span class="o">=</span> <span class="n">_map_to_list</span><span class="p">(</span><span class="n">game_map</span><span class="p">)</span>
<span class="c1"># Create a reference dictionary which be passed to build functions and</span>
<span class="c1"># will store obj returned by build functions so objs can be referenced.</span>
<span class="n">room_dict</span> <span class="o">=</span> <span class="p">{}</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Creating Landmass...&quot;</span><span class="p">)</span>
<span class="k">for</span> <span class="n">iteration</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">iterations</span><span class="p">):</span>
<span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">game_map</span><span class="p">)):</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">game_map</span><span class="p">[</span><span class="n">y</span><span class="p">])):</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">legend</span><span class="p">:</span>
<span class="c1"># obs - we must use == for strings</span>
<span class="k">if</span> <span class="n">game_map</span><span class="p">[</span><span class="n">y</span><span class="p">][</span><span class="n">x</span><span class="p">]</span> <span class="o">==</span> <span class="n">key</span><span class="p">:</span>
<span class="n">room</span> <span class="o">=</span> <span class="n">legend</span><span class="p">[</span><span class="n">key</span><span class="p">](</span>
<span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">iteration</span><span class="o">=</span><span class="n">iteration</span><span class="p">,</span> <span class="n">room_dict</span><span class="o">=</span><span class="n">room_dict</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span>
<span class="p">)</span>
<span class="k">if</span> <span class="n">iteration</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">room_dict</span><span class="p">[(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)]</span> <span class="o">=</span> <span class="n">room</span>
<span class="k">if</span> <span class="n">build_exits</span><span class="p">:</span>
<span class="c1"># Creating exits. Assumes single room object in dict entry</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Connecting Areas...&quot;</span><span class="p">)</span>
<span class="k">for</span> <span class="n">loc_key</span><span class="p">,</span> <span class="n">location</span> <span class="ow">in</span> <span class="n">room_dict</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">loc_key</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">loc_key</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="c1"># north</span>
<span class="k">if</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="ow">in</span> <span class="n">room_dict</span><span class="p">:</span>
<span class="k">if</span> <span class="n">room_dict</span><span class="p">[(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)]:</span>
<span class="n">create_object</span><span class="p">(</span>
<span class="n">exits</span><span class="o">.</span><span class="n">Exit</span><span class="p">,</span>
<span class="n">key</span><span class="o">=</span><span class="s2">&quot;north&quot;</span><span class="p">,</span>
<span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;n&quot;</span><span class="p">],</span>
<span class="n">location</span><span class="o">=</span><span class="n">location</span><span class="p">,</span>
<span class="n">destination</span><span class="o">=</span><span class="n">room_dict</span><span class="p">[(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)],</span>
<span class="p">)</span>
<span class="c1"># east</span>
<span class="k">if</span> <span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> <span class="ow">in</span> <span class="n">room_dict</span><span class="p">:</span>
<span class="k">if</span> <span class="n">room_dict</span><span class="p">[(</span><span class="n">x</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="p">)]:</span>
<span class="n">create_object</span><span class="p">(</span>
<span class="n">exits</span><span class="o">.</span><span class="n">Exit</span><span class="p">,</span>
<span class="n">key</span><span class="o">=</span><span class="s2">&quot;east&quot;</span><span class="p">,</span>
<span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;e&quot;</span><span class="p">],</span>
<span class="n">location</span><span class="o">=</span><span class="n">location</span><span class="p">,</span>
<span class="n">destination</span><span class="o">=</span><span class="n">room_dict</span><span class="p">[(</span><span class="n">x</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="p">)],</span>
<span class="p">)</span>
<span class="c1"># south</span>
<span class="k">if</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="ow">in</span> <span class="n">room_dict</span><span class="p">:</span>
<span class="k">if</span> <span class="n">room_dict</span><span class="p">[(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]:</span>
<span class="n">create_object</span><span class="p">(</span>
<span class="n">exits</span><span class="o">.</span><span class="n">Exit</span><span class="p">,</span>
<span class="n">key</span><span class="o">=</span><span class="s2">&quot;south&quot;</span><span class="p">,</span>
<span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;s&quot;</span><span class="p">],</span>
<span class="n">location</span><span class="o">=</span><span class="n">location</span><span class="p">,</span>
<span class="n">destination</span><span class="o">=</span><span class="n">room_dict</span><span class="p">[(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)],</span>
<span class="p">)</span>
<span class="c1"># west</span>
<span class="k">if</span> <span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> <span class="ow">in</span> <span class="n">room_dict</span><span class="p">:</span>
<span class="k">if</span> <span class="n">room_dict</span><span class="p">[(</span><span class="n">x</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="p">)]:</span>
<span class="n">create_object</span><span class="p">(</span>
<span class="n">exits</span><span class="o">.</span><span class="n">Exit</span><span class="p">,</span>
<span class="n">key</span><span class="o">=</span><span class="s2">&quot;west&quot;</span><span class="p">,</span>
<span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;w&quot;</span><span class="p">],</span>
<span class="n">location</span><span class="o">=</span><span class="n">location</span><span class="p">,</span>
<span class="n">destination</span><span class="o">=</span><span class="n">room_dict</span><span class="p">[(</span><span class="n">x</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="p">)],</span>
<span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Map Created.&quot;</span><span class="p">)</span></div>
<span class="c1"># access command</span>
<div class="viewcode-block" id="CmdMapBuilder"><a class="viewcode-back" href="../../../api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.CmdMapBuilder">[docs]</a><span class="k">class</span> <span class="nc">CmdMapBuilder</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Build a map from a 2D ASCII map.</span>
<span class="sd"> Usage:</span>
<span class="sd"> @mapbuilder[/switch] &lt;path.to.file.MAPNAME&gt; &lt;path.to.file.MAP_LEGEND&gt;</span>
<span class="sd"> Switches:</span>
<span class="sd"> one - execute build instructions once without automatic exit creation</span>
<span class="sd"> two - execute build instructions twice without automatic exit creation</span>
<span class="sd"> Example:</span>
<span class="sd"> @mapbuilder world.gamemap.MAP world.maplegend.MAP_LEGEND</span>
<span class="sd"> @mapbuilder evennia.contrib.mapbuilder.EXAMPLE1_MAP EXAMPLE1_LEGEND</span>
<span class="sd"> @mapbuilder/two evennia.contrib.mapbuilder.EXAMPLE2_MAP EXAMPLE2_LEGEND</span>
<span class="sd"> (Legend path defaults to map path)</span>
<span class="sd"> This is a command which takes two inputs:</span>
<span class="sd"> A string of ASCII characters representing a map and a dictionary of</span>
<span class="sd"> functions containing build instructions. The characters of the map are</span>
<span class="sd"> iterated over and compared to a list of trigger characters. When a match</span>
<span class="sd"> is found the corresponding function is executed generating the rooms,</span>
<span class="sd"> exits and objects as defined by the users build instructions. If a</span>
<span class="sd"> character is not a match to a provided trigger character (including spaces)</span>
<span class="sd"> it is simply skipped and the process continues. By default exits are</span>
<span class="sd"> automatically generated but is turned off by switches which also determines</span>
<span class="sd"> how many times the map is iterated over.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">key</span> <span class="o">=</span> <span class="s2">&quot;@mapbuilder&quot;</span>
<span class="n">aliases</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;@buildmap&quot;</span><span class="p">]</span>
<span class="n">locks</span> <span class="o">=</span> <span class="s2">&quot;cmd:superuser()&quot;</span>
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">&quot;Building&quot;</span>
<div class="viewcode-block" id="CmdMapBuilder.func"><a class="viewcode-back" href="../../../api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.CmdMapBuilder.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Starts the processor.&quot;&quot;&quot;</span>
<span class="n">caller</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
<span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
<span class="c1"># Check if arguments passed.</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">):</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Usage: @mapbuilder &lt;path.to.module.VARNAME&gt; &quot;</span> <span class="s2">&quot;&lt;path.to.module.MAP_LEGEND&gt;&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="c1"># Set up base variables.</span>
<span class="n">game_map</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">legend</span> <span class="o">=</span> <span class="kc">None</span>
<span class="c1"># OBTAIN MAP FROM MODULE</span>
<span class="c1"># Breaks down path_to_map into [PATH, VARIABLE]</span>
<span class="n">path_to_map</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">path_to_map</span> <span class="o">=</span> <span class="n">path_to_map</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="c1"># Retrieves map variable from module or raises error.</span>
<span class="n">game_map</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">variable_from_module</span><span class="p">(</span><span class="n">path_to_map</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">path_to_map</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">game_map</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
<span class="s2">&quot;Command Aborted!</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="s2">&quot;Path to map variable failed.</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="s2">&quot;Usage: @mapbuilder &lt;path.to.module.&quot;</span>
<span class="s2">&quot;VARNAME&gt; &lt;path.to.module.MAP_LEGEND&gt;&quot;</span>
<span class="p">)</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
<span class="c1"># Or relays error message if fails.</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">exc</span><span class="p">)</span>
<span class="k">return</span>
<span class="c1"># OBTAIN MAP_LEGEND FROM MODULE</span>
<span class="c1"># Breaks down path_to_legend into [PATH, VARIABLE]</span>
<span class="n">path_to_legend</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="n">path_to_legend</span> <span class="o">=</span> <span class="n">path_to_legend</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="c1"># If no path given default to path_to_map&#39;s path</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">path_to_legend</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="n">path_to_legend</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">path_to_map</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="k">try</span><span class="p">:</span>
<span class="c1"># Retrieves legend variable from module or raises error if fails.</span>
<span class="n">legend</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">variable_from_module</span><span class="p">(</span><span class="n">path_to_legend</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">path_to_legend</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">legend</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
<span class="s2">&quot;Command Aborted!</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="s2">&quot;Path to legend variable failed.</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="s2">&quot;Usage: @mapbuilder &lt;path.to.module.&quot;</span>
<span class="s2">&quot;VARNAME&gt; &lt;path.to.module.MAP_LEGEND&gt;&quot;</span>
<span class="p">)</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
<span class="c1"># Or relays error message if fails.</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">exc</span><span class="p">)</span>
<span class="k">return</span>
<span class="c1"># Set up build_map arguments from switches</span>
<span class="n">iterations</span> <span class="o">=</span> <span class="mi">1</span>
<span class="n">build_exits</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">if</span> <span class="s2">&quot;one&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="n">build_exits</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">if</span> <span class="s2">&quot;two&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="n">iterations</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">build_exits</span> <span class="o">=</span> <span class="kc">False</span>
<span class="c1"># Pass map and legend to the build function.</span>
<span class="n">build_map</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">game_map</span><span class="p">,</span> <span class="n">legend</span><span class="p">,</span> <span class="n">iterations</span><span class="p">,</span> <span class="n">build_exits</span><span class="p">)</span></div></div>
</pre></div>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../../index.html">
<img class="logo" src="../../../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h3>Versions</h3>
<ul>
<li><a href="../../../../1.0-dev/index.html">1.0-dev (develop branch)</a></li>
<li><a href="mapbuilder.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="../../evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.contrib.mapbuilder</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>

View file

@ -1,348 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>evennia.contrib.menu_login &#8212; Evennia 0.9.5 documentation</title>
<link rel="stylesheet" href="../../../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/language_data.js"></script>
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="../../evennia.html" accesskey="U">evennia</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.contrib.menu_login</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for evennia.contrib.menu_login</h1><div class="highlight"><pre>
<span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">A login menu using EvMenu.</span>
<span class="sd">Contribution - Vincent-lg 2016, Griatch 2019 (rework for modern EvMenu)</span>
<span class="sd">This changes the Evennia login to ask for the account name and password in</span>
<span class="sd">sequence instead of requiring you to enter both at once. </span>
<span class="sd">To install, add this line to the settings file (`mygame/server/conf/settings.py`):</span>
<span class="sd"> CMDSET_UNLOGGEDIN = &quot;evennia.contrib.menu_login.UnloggedinCmdSet&quot;</span>
<span class="sd">Reload the server and the new connection method will be active. Note that you must</span>
<span class="sd">independently change the connection screen to match this login style, by editing </span>
<span class="sd">`mygame/server/conf/connection_screens.py`.</span>
<span class="sd">This uses Evennia&#39;s menu system EvMenu and is triggered by a command that is </span>
<span class="sd">called automatically when a new user connects.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">Command</span><span class="p">,</span> <span class="n">CmdSet</span>
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">syscmdkeys</span>
<span class="kn">from</span> <span class="nn">evennia.utils.evmenu</span> <span class="kn">import</span> <span class="n">EvMenu</span>
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">random_string_from_module</span><span class="p">,</span> <span class="n">class_from_module</span><span class="p">,</span> <span class="n">callables_from_module</span>
<span class="n">_CONNECTION_SCREEN_MODULE</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">CONNECTION_SCREEN_MODULE</span>
<span class="n">_GUEST_ENABLED</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">GUEST_ENABLED</span>
<span class="n">_ACCOUNT</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_ACCOUNT_TYPECLASS</span><span class="p">)</span>
<span class="n">_GUEST</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_GUEST_TYPECLASS</span><span class="p">)</span>
<span class="n">_ACCOUNT_HELP</span> <span class="o">=</span> <span class="p">(</span>
<span class="s2">&quot;Enter the name you used to log into the game before, &quot;</span> <span class="s2">&quot;or a new account-name if you are new.&quot;</span>
<span class="p">)</span>
<span class="n">_PASSWORD_HELP</span> <span class="o">=</span> <span class="p">(</span>
<span class="s2">&quot;Password should be a minimum of 8 characters (preferably longer) and &quot;</span>
<span class="s2">&quot;can contain a mix of letters, spaces, digits and @/./+/-/_/&#39;/, only.&quot;</span>
<span class="p">)</span>
<span class="c1"># Menu nodes</span>
<span class="k">def</span> <span class="nf">_show_help</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">raw_string</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Echo help message, then re-run node that triggered it&quot;&quot;&quot;</span>
<span class="n">help_entry</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;help_entry&quot;</span><span class="p">]</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">help_entry</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">None</span> <span class="c1"># re-run calling node</span>
<div class="viewcode-block" id="node_enter_username"><a class="viewcode-back" href="../../../api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.node_enter_username">[docs]</a><span class="k">def</span> <span class="nf">node_enter_username</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">raw_text</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Start node of menu</span>
<span class="sd"> Start login by displaying the connection screen and ask for a user name.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">_check_input</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">username</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> &#39;Goto-callable&#39;, set up to be called from the _default option below.</span>
<span class="sd"> Called when user enters a username string. Check if this username already exists and set the flag</span>
<span class="sd"> &#39;new_user&#39; if not. Will also directly login if the username is &#39;guest&#39;</span>
<span class="sd"> and GUEST_ENABLED is True.</span>
<span class="sd"> The return from this goto-callable determines which node we go to next</span>
<span class="sd"> and what kwarg it will be called with.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">username</span> <span class="o">=</span> <span class="n">username</span><span class="o">.</span><span class="n">rstrip</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">username</span> <span class="o">==</span> <span class="s2">&quot;guest&quot;</span> <span class="ow">and</span> <span class="n">_GUEST_ENABLED</span><span class="p">:</span>
<span class="c1"># do an immediate guest login</span>
<span class="n">session</span> <span class="o">=</span> <span class="n">caller</span>
<span class="n">address</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">address</span>
<span class="n">account</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">_GUEST</span><span class="o">.</span><span class="n">authenticate</span><span class="p">(</span><span class="n">ip</span><span class="o">=</span><span class="n">address</span><span class="p">)</span>
<span class="k">if</span> <span class="n">account</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;node_quit_or_login&quot;</span><span class="p">,</span> <span class="p">{</span><span class="s2">&quot;login&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">&quot;account&quot;</span><span class="p">:</span> <span class="n">account</span><span class="p">}</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|R</span><span class="si">{}</span><span class="s2">|n&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">errors</span><span class="p">)))</span>
<span class="k">return</span> <span class="kc">None</span> <span class="c1"># re-run the username node</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">_ACCOUNT</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">username__iexact</span><span class="o">=</span><span class="n">username</span><span class="p">)</span>
<span class="k">except</span> <span class="n">_ACCOUNT</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span>
<span class="n">new_user</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">new_user</span> <span class="o">=</span> <span class="kc">False</span>
<span class="c1"># pass username/new_user into next node as kwargs</span>
<span class="k">return</span> <span class="s2">&quot;node_enter_password&quot;</span><span class="p">,</span> <span class="p">{</span><span class="s2">&quot;new_user&quot;</span><span class="p">:</span> <span class="n">new_user</span><span class="p">,</span> <span class="s2">&quot;username&quot;</span><span class="p">:</span> <span class="n">username</span><span class="p">}</span>
<span class="n">callables</span> <span class="o">=</span> <span class="n">callables_from_module</span><span class="p">(</span><span class="n">_CONNECTION_SCREEN_MODULE</span><span class="p">)</span>
<span class="k">if</span> <span class="s2">&quot;connection_screen&quot;</span> <span class="ow">in</span> <span class="n">callables</span><span class="p">:</span>
<span class="n">connection_screen</span> <span class="o">=</span> <span class="n">callables</span><span class="p">[</span><span class="s2">&quot;connection_screen&quot;</span><span class="p">]()</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">connection_screen</span> <span class="o">=</span> <span class="n">random_string_from_module</span><span class="p">(</span><span class="n">_CONNECTION_SCREEN_MODULE</span><span class="p">)</span>
<span class="k">if</span> <span class="n">_GUEST_ENABLED</span><span class="p">:</span>
<span class="n">text</span> <span class="o">=</span> <span class="s2">&quot;Enter a new or existing user name to login (write &#39;guest&#39; for a guest login):&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">text</span> <span class="o">=</span> <span class="s2">&quot;Enter a new or existing user name to login:&quot;</span>
<span class="n">text</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">{}</span><span class="se">\n\n</span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">connection_screen</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span>
<span class="n">options</span> <span class="o">=</span> <span class="p">(</span>
<span class="p">{</span><span class="s2">&quot;key&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;goto&quot;</span><span class="p">:</span> <span class="s2">&quot;node_enter_username&quot;</span><span class="p">},</span>
<span class="p">{</span><span class="s2">&quot;key&quot;</span><span class="p">:</span> <span class="p">(</span><span class="s2">&quot;quit&quot;</span><span class="p">,</span> <span class="s2">&quot;q&quot;</span><span class="p">),</span> <span class="s2">&quot;goto&quot;</span><span class="p">:</span> <span class="s2">&quot;node_quit_or_login&quot;</span><span class="p">},</span>
<span class="p">{</span><span class="s2">&quot;key&quot;</span><span class="p">:</span> <span class="p">(</span><span class="s2">&quot;help&quot;</span><span class="p">,</span> <span class="s2">&quot;h&quot;</span><span class="p">),</span> <span class="s2">&quot;goto&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">_show_help</span><span class="p">,</span> <span class="p">{</span><span class="s2">&quot;help_entry&quot;</span><span class="p">:</span> <span class="n">_ACCOUNT_HELP</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})},</span>
<span class="p">{</span><span class="s2">&quot;key&quot;</span><span class="p">:</span> <span class="s2">&quot;_default&quot;</span><span class="p">,</span> <span class="s2">&quot;goto&quot;</span><span class="p">:</span> <span class="n">_check_input</span><span class="p">},</span>
<span class="p">)</span>
<span class="k">return</span> <span class="n">text</span><span class="p">,</span> <span class="n">options</span></div>
<div class="viewcode-block" id="node_enter_password"><a class="viewcode-back" href="../../../api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.node_enter_password">[docs]</a><span class="k">def</span> <span class="nf">node_enter_password</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">raw_string</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Handle password input.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">_check_input</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">password</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> &#39;Goto-callable&#39;, set up to be called from the _default option below.</span>
<span class="sd"> Called when user enters a password string. Check username + password</span>
<span class="sd"> viability. If it passes, the account will have been created and login</span>
<span class="sd"> will be initiated.</span>
<span class="sd"> The return from this goto-callable determines which node we go to next</span>
<span class="sd"> and what kwarg it will be called with.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># these flags were set by the goto-callable</span>
<span class="n">username</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;username&quot;</span><span class="p">]</span>
<span class="n">new_user</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;new_user&quot;</span><span class="p">]</span>
<span class="n">password</span> <span class="o">=</span> <span class="n">password</span><span class="o">.</span><span class="n">rstrip</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="n">session</span> <span class="o">=</span> <span class="n">caller</span>
<span class="n">address</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">address</span>
<span class="k">if</span> <span class="n">new_user</span><span class="p">:</span>
<span class="c1"># create a new account</span>
<span class="n">account</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">_ACCOUNT</span><span class="o">.</span><span class="n">create</span><span class="p">(</span>
<span class="n">username</span><span class="o">=</span><span class="n">username</span><span class="p">,</span> <span class="n">password</span><span class="o">=</span><span class="n">password</span><span class="p">,</span> <span class="n">ip</span><span class="o">=</span><span class="n">address</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># check password against existing account</span>
<span class="n">account</span><span class="p">,</span> <span class="n">errors</span> <span class="o">=</span> <span class="n">_ACCOUNT</span><span class="o">.</span><span class="n">authenticate</span><span class="p">(</span>
<span class="n">username</span><span class="o">=</span><span class="n">username</span><span class="p">,</span> <span class="n">password</span><span class="o">=</span><span class="n">password</span><span class="p">,</span> <span class="n">ip</span><span class="o">=</span><span class="n">address</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span>
<span class="p">)</span>
<span class="k">if</span> <span class="n">account</span><span class="p">:</span>
<span class="k">if</span> <span class="n">new_user</span><span class="p">:</span>
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|gA new account |c</span><span class="si">{}</span><span class="s2">|g was created. Welcome!|n&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">username</span><span class="p">))</span>
<span class="c1"># pass login info to login node</span>
<span class="k">return</span> <span class="s2">&quot;node_quit_or_login&quot;</span><span class="p">,</span> <span class="p">{</span><span class="s2">&quot;login&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">&quot;account&quot;</span><span class="p">:</span> <span class="n">account</span><span class="p">}</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># restart due to errors</span>
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|R</span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">errors</span><span class="p">)))</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;retry_password&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">return</span> <span class="s2">&quot;node_enter_password&quot;</span><span class="p">,</span> <span class="n">kwargs</span>
<span class="k">def</span> <span class="nf">_restart_login</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|yCancelled login.|n&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="s2">&quot;node_enter_username&quot;</span>
<span class="n">username</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;username&quot;</span><span class="p">]</span>
<span class="k">if</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;new_user&quot;</span><span class="p">]:</span>
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;retry_password&quot;</span><span class="p">):</span>
<span class="c1"># Attempting to fix password</span>
<span class="n">text</span> <span class="o">=</span> <span class="s2">&quot;Enter a new password:&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">text</span> <span class="o">=</span> <span class="s2">&quot;Creating a new account |c</span><span class="si">{}</span><span class="s2">|n. &quot;</span> <span class="s2">&quot;Enter a password (empty to abort):&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="n">username</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">text</span> <span class="o">=</span> <span class="s2">&quot;Enter the password for account |c</span><span class="si">{}</span><span class="s2">|n (empty to abort):&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">username</span><span class="p">)</span>
<span class="n">options</span> <span class="o">=</span> <span class="p">(</span>
<span class="p">{</span><span class="s2">&quot;key&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;goto&quot;</span><span class="p">:</span> <span class="n">_restart_login</span><span class="p">},</span>
<span class="p">{</span><span class="s2">&quot;key&quot;</span><span class="p">:</span> <span class="p">(</span><span class="s2">&quot;quit&quot;</span><span class="p">,</span> <span class="s2">&quot;q&quot;</span><span class="p">),</span> <span class="s2">&quot;goto&quot;</span><span class="p">:</span> <span class="s2">&quot;node_quit_or_login&quot;</span><span class="p">},</span>
<span class="p">{</span><span class="s2">&quot;key&quot;</span><span class="p">:</span> <span class="p">(</span><span class="s2">&quot;help&quot;</span><span class="p">,</span> <span class="s2">&quot;h&quot;</span><span class="p">),</span> <span class="s2">&quot;goto&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">_show_help</span><span class="p">,</span> <span class="p">{</span><span class="s2">&quot;help_entry&quot;</span><span class="p">:</span> <span class="n">_PASSWORD_HELP</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})},</span>
<span class="p">{</span><span class="s2">&quot;key&quot;</span><span class="p">:</span> <span class="s2">&quot;_default&quot;</span><span class="p">,</span> <span class="s2">&quot;goto&quot;</span><span class="p">:</span> <span class="p">(</span><span class="n">_check_input</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">)},</span>
<span class="p">)</span>
<span class="k">return</span> <span class="n">text</span><span class="p">,</span> <span class="n">options</span></div>
<div class="viewcode-block" id="node_quit_or_login"><a class="viewcode-back" href="../../../api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.node_quit_or_login">[docs]</a><span class="k">def</span> <span class="nf">node_quit_or_login</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">raw_text</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Exit menu, either by disconnecting or logging in.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">session</span> <span class="o">=</span> <span class="n">caller</span>
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;login&quot;</span><span class="p">):</span>
<span class="n">account</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;account&quot;</span><span class="p">)</span>
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|gLogging in ...|n&quot;</span><span class="p">)</span>
<span class="n">session</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">login</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">account</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">session</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">disconnect</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="s2">&quot;Goodbye! Logging off.&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="p">{}</span></div>
<span class="c1"># EvMenu helper function</span>
<span class="k">def</span> <span class="nf">_node_formatter</span><span class="p">(</span><span class="n">nodetext</span><span class="p">,</span> <span class="n">optionstext</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Do not display the options, only the text.</span>
<span class="sd"> This function is used by EvMenu to format the text of nodes. The menu login</span>
<span class="sd"> is just a series of prompts so we disable all automatic display decoration</span>
<span class="sd"> and let the nodes handle everything on their own.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">nodetext</span>
<span class="c1"># Commands and CmdSets</span>
<div class="viewcode-block" id="UnloggedinCmdSet"><a class="viewcode-back" href="../../../api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.UnloggedinCmdSet">[docs]</a><span class="k">class</span> <span class="nc">UnloggedinCmdSet</span><span class="p">(</span><span class="n">CmdSet</span><span class="p">):</span>
<span class="s2">&quot;Cmdset for the unloggedin state&quot;</span>
<span class="n">key</span> <span class="o">=</span> <span class="s2">&quot;DefaultUnloggedin&quot;</span>
<span class="n">priority</span> <span class="o">=</span> <span class="mi">0</span>
<div class="viewcode-block" id="UnloggedinCmdSet.at_cmdset_creation"><a class="viewcode-back" href="../../../api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.UnloggedinCmdSet.at_cmdset_creation">[docs]</a> <span class="k">def</span> <span class="nf">at_cmdset_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="s2">&quot;Called when cmdset is first created.&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">CmdUnloggedinLook</span><span class="p">())</span></div></div>
<div class="viewcode-block" id="CmdUnloggedinLook"><a class="viewcode-back" href="../../../api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.CmdUnloggedinLook">[docs]</a><span class="k">class</span> <span class="nc">CmdUnloggedinLook</span><span class="p">(</span><span class="n">Command</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> An unloggedin version of the look command. This is called by the server</span>
<span class="sd"> when the account first connects. It sets up the menu before handing off</span>
<span class="sd"> to the menu&#39;s own look command.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">key</span> <span class="o">=</span> <span class="n">syscmdkeys</span><span class="o">.</span><span class="n">CMD_LOGINSTART</span>
<span class="n">locks</span> <span class="o">=</span> <span class="s2">&quot;cmd:all()&quot;</span>
<span class="n">arg_regex</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">&quot;^$&quot;</span>
<div class="viewcode-block" id="CmdUnloggedinLook.func"><a class="viewcode-back" href="../../../api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.CmdUnloggedinLook.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Run the menu using the nodes in this module.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">EvMenu</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span>
<span class="s2">&quot;evennia.contrib.menu_login&quot;</span><span class="p">,</span>
<span class="n">startnode</span><span class="o">=</span><span class="s2">&quot;node_enter_username&quot;</span><span class="p">,</span>
<span class="n">auto_look</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">auto_quit</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">cmd_on_exit</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">node_formatter</span><span class="o">=</span><span class="n">_node_formatter</span><span class="p">,</span>
<span class="p">)</span></div></div>
</pre></div>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../../index.html">
<img class="logo" src="../../../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h3>Versions</h3>
<ul>
<li><a href="../../../../1.0-dev/index.html">1.0-dev (develop branch)</a></li>
<li><a href="menu_login.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="../../evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.contrib.menu_login</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>

View file

@ -72,7 +72,6 @@
<span class="kn">from</span> <span class="nn">evennia.server.portal.portalsessionhandler</span> <span class="kn">import</span> <span class="n">PORTAL_SESSIONS</span>
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">logger</span>
<span class="kn">from</span> <span class="nn">evennia.server.webserver</span> <span class="kn">import</span> <span class="n">EvenniaReverseProxyResource</span>
<span class="kn">from</span> <span class="nn">django.db</span> <span class="kn">import</span> <span class="n">connection</span>
<span class="c1"># we don&#39;t need a connection to the database so close it right away</span>
@ -472,7 +471,9 @@
<span class="k">for</span> <span class="n">plugin_module</span> <span class="ow">in</span> <span class="n">PORTAL_SERVICES_PLUGIN_MODULES</span><span class="p">:</span>
<span class="c1"># external plugin services to start</span>
<span class="n">plugin_module</span><span class="o">.</span><span class="n">start_plugin_services</span><span class="p">(</span><span class="n">PORTAL</span><span class="p">)</span>
<span class="k">if</span> <span class="n">plugin_module</span><span class="p">:</span>
<span class="n">plugin_module</span><span class="o">.</span><span class="n">start_plugin_services</span><span class="p">(</span><span class="n">PORTAL</span><span class="p">)</span>
</pre></div>
<div class="clearer"></div>

View file

@ -67,6 +67,7 @@
<span class="n">evennia</span><span class="o">.</span><span class="n">_init</span><span class="p">()</span>
<span class="kn">from</span> <span class="nn">django.db</span> <span class="kn">import</span> <span class="n">connection</span>
<span class="kn">from</span> <span class="nn">django.db.utils</span> <span class="kn">import</span> <span class="n">OperationalError</span>
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
<span class="kn">from</span> <span class="nn">evennia.accounts.models</span> <span class="kn">import</span> <span class="n">AccountDB</span>
@ -246,7 +247,10 @@
<span class="bp">self</span><span class="o">.</span><span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
<span class="c1"># initialize channelhandler</span>
<span class="n">channelhandler</span><span class="o">.</span><span class="n">CHANNELHANDLER</span><span class="o">.</span><span class="n">update</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">channelhandler</span><span class="o">.</span><span class="n">CHANNELHANDLER</span><span class="o">.</span><span class="n">update</span><span class="p">()</span>
<span class="k">except</span> <span class="n">OperationalError</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;channelhandler couldn&#39;t update - db not set up&quot;</span><span class="p">)</span>
<span class="c1"># wrap the SIGINT handler to make sure we empty the threadpool</span>
<span class="c1"># even when we reload and we have long-running requests in queue.</span>
@ -657,7 +661,11 @@
<span class="c1"># Tell the system the server is starting up; some things are not available yet</span>
<span class="n">ServerConfig</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">conf</span><span class="p">(</span><span class="s2">&quot;server_starting_mode&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">ServerConfig</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">conf</span><span class="p">(</span><span class="s2">&quot;server_starting_mode&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
<span class="k">except</span> <span class="n">OperationalError</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Server server_starting_mode couldn&#39;t be set - database not set up.&quot;</span><span class="p">)</span>
<span class="c1"># twistd requires us to define the variable &#39;application&#39; so it knows</span>
<span class="c1"># what to execute from.</span>
@ -769,7 +777,10 @@
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Could not load plugin module </span><span class="si">{</span><span class="n">plugin_module</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="c1"># clear server startup mode</span>
<span class="n">ServerConfig</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">conf</span><span class="p">(</span><span class="s2">&quot;server_starting_mode&quot;</span><span class="p">,</span> <span class="n">delete</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">ServerConfig</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">conf</span><span class="p">(</span><span class="s2">&quot;server_starting_mode&quot;</span><span class="p">,</span> <span class="n">delete</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">except</span> <span class="n">OperationalError</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Server server_starting_mode couldn&#39;t unset - db not set up.&quot;</span><span class="p">)</span>
</pre></div>
<div class="clearer"></div>

View file

@ -42,8 +42,8 @@
<span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">ANSI - Gives colour to text.</span>
<span class="sd">Use the codes defined in ANSIPARSER in your text</span>
<span class="sd">to apply colour to text according to the ANSI standard.</span>
<span class="sd">Use the codes defined in ANSIPARSER in your text to apply colour to text</span>
<span class="sd">according to the ANSI standard.</span>
<span class="sd">Examples:</span>
@ -51,10 +51,9 @@
<span class="sd">&quot;This is |rRed text|n and this is normal again.&quot;</span>
<span class="sd">```</span>
<span class="sd">Mostly you should not need to call `parse_ansi()` explicitly;</span>
<span class="sd">it is run by Evennia just before returning data to/from the</span>
<span class="sd">user. Depreciated example forms are available by extending</span>
<span class="sd">the ansi mapping.</span>
<span class="sd">Mostly you should not need to call `parse_ansi()` explicitly; it is run by</span>
<span class="sd">Evennia just before returning data to/from the user. Depreciated example forms</span>
<span class="sd">are available by extending the ansi mapping.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">functools</span>
@ -122,11 +121,9 @@
<div class="viewcode-block" id="ANSIParser"><a class="viewcode-back" href="../../../api/evennia.utils.ansi.html#evennia.utils.ansi.ANSIParser">[docs]</a><span class="k">class</span> <span class="nc">ANSIParser</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A class that parses ANSI markup</span>
<span class="sd"> to ANSI command sequences</span>
<span class="sd"> A class that parses ANSI markup to ANSI command sequences.</span>
<span class="sd"> We also allow to escape colour codes</span>
<span class="sd"> by prepending with an extra |.</span>
<span class="sd"> We also allow to escape colour codes by prepending with an extra `|`.</span>
<span class="sd"> &quot;&quot;&quot;</span>

View file

@ -137,16 +137,16 @@
<span class="sd"> location itself or during unittests.</span>
<span class="sd"> attributes (list): Tuples on the form (key, value) or (key, value, category),</span>
<span class="sd"> (key, value, lockstring) or (key, value, lockstring, default_access).</span>
<span class="sd"> to set as Attributes on the new object.</span>
<span class="sd"> to set as Attributes on the new object.</span>
<span class="sd"> nattributes (list): Non-persistent tuples on the form (key, value). Note that</span>
<span class="sd"> adding this rarely makes sense since this data will not survive a reload.</span>
<span class="sd"> adding this rarely makes sense since this data will not survive a reload.</span>
<span class="sd"> Returns:</span>
<span class="sd"> object (Object): A newly created object of the given typeclass.</span>
<span class="sd"> Raises:</span>
<span class="sd"> ObjectDB.DoesNotExist: If trying to create an Object with</span>
<span class="sd"> `location` or `home` that can&#39;t be found.</span>
<span class="sd"> `location` or `home` that can&#39;t be found.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">global</span> <span class="n">_ObjectDB</span>

View file

@ -51,6 +51,7 @@
<span class="kn">from</span> <span class="nn">calendar</span> <span class="kn">import</span> <span class="n">monthrange</span>
<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span><span class="p">,</span> <span class="n">timedelta</span>
<span class="kn">from</span> <span class="nn">django.db.utils</span> <span class="kn">import</span> <span class="n">OperationalError</span>
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">DefaultScript</span>
<span class="kn">from</span> <span class="nn">evennia.server.models</span> <span class="kn">import</span> <span class="n">ServerConfig</span>
@ -64,7 +65,11 @@
<span class="c1"># Only set if gametime_reset was called at some point.</span>
<span class="n">GAME_TIME_OFFSET</span> <span class="o">=</span> <span class="n">ServerConfig</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">conf</span><span class="p">(</span><span class="s2">&quot;gametime_offset&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">GAME_TIME_OFFSET</span> <span class="o">=</span> <span class="n">ServerConfig</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">conf</span><span class="p">(</span><span class="s2">&quot;gametime_offset&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="k">except</span> <span class="n">OperationalError</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Gametime offset could not load - db not set up.&quot;</span><span class="p">)</span>
<span class="n">GAME_TIME_OFFSET</span> <span class="o">=</span> <span class="mi">0</span>
<span class="c1"># Common real-life time measure, in seconds.</span>
<span class="c1"># You should not change this.</span>

View file

@ -67,6 +67,7 @@
<span class="c1"># Import the manager methods to be wrapped</span>
<span class="kn">from</span> <span class="nn">django.db.utils</span> <span class="kn">import</span> <span class="n">OperationalError</span>
<span class="kn">from</span> <span class="nn">django.contrib.contenttypes.models</span> <span class="kn">import</span> <span class="n">ContentType</span>
<span class="c1"># limit symbol import from API</span>
@ -84,14 +85,23 @@
<span class="c1"># import objects this way to avoid circular import problems</span>
<span class="n">ObjectDB</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;objects&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;objectdb&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="n">AccountDB</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;accounts&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;accountdb&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="n">ScriptDB</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;scripts&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;scriptdb&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="n">Msg</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;comms&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;msg&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="n">Channel</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;comms&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;channeldb&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="n">HelpEntry</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;help&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;helpentry&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="n">Tag</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;typeclasses&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;tag&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">ObjectDB</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;objects&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;objectdb&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="n">AccountDB</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;accounts&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;accountdb&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="n">ScriptDB</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;scripts&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;scriptdb&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="n">Msg</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;comms&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;msg&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="n">ChannelDB</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;comms&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;channeldb&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="n">HelpEntry</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;help&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;helpentry&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="n">Tag</span> <span class="o">=</span> <span class="n">ContentType</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">app_label</span><span class="o">=</span><span class="s2">&quot;typeclasses&quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="s2">&quot;tag&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">model_class</span><span class="p">()</span>
<span class="k">except</span> <span class="n">OperationalError</span><span class="p">:</span>
<span class="c1"># this is a fallback used during tests/doc building</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Couldn&#39;t initialize search managers - db not set up.&quot;</span><span class="p">)</span>
<span class="kn">from</span> <span class="nn">evennia.objects.models</span> <span class="kn">import</span> <span class="n">ObjectDB</span>
<span class="kn">from</span> <span class="nn">evennia.accounts.models</span> <span class="kn">import</span> <span class="n">AccountDB</span>
<span class="kn">from</span> <span class="nn">evennia.scripts.models</span> <span class="kn">import</span> <span class="n">ScriptDB</span>
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="kn">import</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">ChannelDB</span>
<span class="kn">from</span> <span class="nn">evennia.help.models</span> <span class="kn">import</span> <span class="n">HelpEntry</span>
<span class="kn">from</span> <span class="nn">evennia.typeclasses.tags</span> <span class="kn">import</span> <span class="n">Tag</span>
<span class="c1"># -------------------------------------------------------------------</span>
<span class="c1"># Search manager-wrappers</span>
@ -211,7 +221,7 @@
<span class="c1"># exact - requires an exact ostring match (not case sensitive)</span>
<span class="c1">#</span>
<span class="n">search_channel</span> <span class="o">=</span> <span class="n">Channel</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">channel_search</span>
<span class="n">search_channel</span> <span class="o">=</span> <span class="n">ChannelDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">channel_search</span>
<span class="n">search_channels</span> <span class="o">=</span> <span class="n">search_channel</span>
<span class="n">channel_search</span> <span class="o">=</span> <span class="n">search_channel</span>
<span class="n">channels</span> <span class="o">=</span> <span class="n">search_channels</span>
@ -272,7 +282,7 @@
<span class="k">def</span> <span class="nf">search_channel_attribute</span><span class="p">(</span>
<span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">strvalue</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">attrtype</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
<span class="p">):</span>
<span class="k">return</span> <span class="n">Channel</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_by_attribute</span><span class="p">(</span>
<span class="k">return</span> <span class="n">ChannelDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_by_attribute</span><span class="p">(</span>
<span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="n">category</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">strvalue</span><span class="o">=</span><span class="n">strvalue</span><span class="p">,</span> <span class="n">attrtype</span><span class="o">=</span><span class="n">attrtype</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
<span class="p">)</span>
@ -387,7 +397,7 @@
<span class="sd"> matches were found.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">Channel</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_by_tag</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="n">category</span><span class="p">,</span> <span class="n">tagtype</span><span class="o">=</span><span class="n">tagtype</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
<span class="k">return</span> <span class="n">ChannelDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_by_tag</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="n">category</span><span class="p">,</span> <span class="n">tagtype</span><span class="o">=</span><span class="n">tagtype</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
<span class="c1"># search for tag objects (not the objects they are attached to</span>

View file

@ -1363,6 +1363,9 @@
<span class="n">mod</span> <span class="o">=</span> <span class="n">mod_import</span><span class="p">(</span><span class="n">module</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">mod</span><span class="p">:</span>
<span class="k">return</span> <span class="n">default</span>
<span class="k">if</span> <span class="n">variable</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">var</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">variable</span><span class="p">):</span>
@ -1454,7 +1457,7 @@
<span class="k">return</span> <span class="n">default</span></div>
<div class="viewcode-block" id="class_from_module"><a class="viewcode-back" href="../../../api/evennia.utils.utils.html#evennia.utils.utils.class_from_module">[docs]</a><span class="k">def</span> <span class="nf">class_from_module</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">defaultpaths</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="class_from_module"><a class="viewcode-back" href="../../../api/evennia.utils.utils.html#evennia.utils.utils.class_from_module">[docs]</a><span class="k">def</span> <span class="nf">class_from_module</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">defaultpaths</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">fallback</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return a class from a module, given the module&#39;s path. This is</span>
<span class="sd"> primarily used to convert db_typeclass_path:s to classes.</span>
@ -1463,6 +1466,10 @@
<span class="sd"> path (str): Full Python dot-path to module.</span>
<span class="sd"> defaultpaths (iterable, optional): If a direct import from `path` fails,</span>
<span class="sd"> try subsequent imports by prepending those paths to `path`.</span>
<span class="sd"> fallback (str): If all other attempts fail, use this path as a fallback.</span>
<span class="sd"> This is intended as a last-resport. In the example of Evennia</span>
<span class="sd"> loading, this would be a path to a default parent class in the</span>
<span class="sd"> evennia repo itself.</span>
<span class="sd"> Returns:</span>
<span class="sd"> class (Class): An uninstatiated class recovered from path.</span>
@ -1516,7 +1523,13 @@
<span class="n">err</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Paths searched:</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2"> &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">paths</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">err</span> <span class="o">+=</span> <span class="s2">&quot;.&quot;</span>
<span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_err</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
<span class="k">if</span> <span class="n">fallback</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_warn</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Falling back to </span><span class="si">{</span><span class="n">fallback</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">fallback</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># even fallback fails</span>
<span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">cls</span></div>

View file

@ -93,7 +93,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># The model/typeclass this form creates</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_ACCOUNT_TYPECLASS</span><span class="p">)</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_ACCOUNT_TYPECLASS</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_ACCOUNT_TYPECLASS</span><span class="p">)</span>
<span class="c1"># The fields to display on the form, in the given order</span>
<span class="n">fields</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;username&quot;</span><span class="p">,</span> <span class="s2">&quot;email&quot;</span><span class="p">)</span>
@ -128,7 +129,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># The model/typeclass this form creates</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_OBJECT_TYPECLASS</span><span class="p">)</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_OBJECT_TYPECLASS</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_OBJECT_TYPECLASS</span><span class="p">)</span>
<span class="c1"># The fields to display on the form, in the given order</span>
<span class="n">fields</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;db_key&quot;</span><span class="p">,)</span>
@ -181,7 +183,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># Get the correct object model</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHARACTER_TYPECLASS</span><span class="p">)</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHARACTER_TYPECLASS</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_CHARACTER_TYPECLASS</span><span class="p">)</span>
<span class="c1"># Allow entry of the &#39;key&#39; field</span>
<span class="n">fields</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;db_key&quot;</span><span class="p">,)</span>

View file

@ -166,7 +166,8 @@
<div class="viewcode-block" id="ChannelDetailTest.setUp"><a class="viewcode-back" href="../../../../api/evennia.web.website.tests.html#evennia.web.website.tests.ChannelDetailTest.setUp">[docs]</a> <span class="k">def</span> <span class="nf">setUp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">ChannelDetailTest</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">setUp</span><span class="p">()</span>
<span class="n">klass</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel_typeclass</span><span class="p">)</span>
<span class="n">klass</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel_typeclass</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_CHANNEL_TYPECLASS</span><span class="p">)</span>
<span class="c1"># Create a channel</span>
<span class="n">klass</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="s2">&quot;demo&quot;</span><span class="p">)</span></div>

View file

@ -73,6 +73,7 @@
<span class="n">_BASE_CHAR_TYPECLASS</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHARACTER_TYPECLASS</span>
<span class="c1"># typeclass fallbacks</span>
<span class="k">def</span> <span class="nf">_gamestats</span><span class="p">():</span>
<span class="c1"># Some misc. configurable stuff.</span>
@ -89,11 +90,14 @@
<span class="n">nobjs</span> <span class="o">=</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
<span class="n">nobjs</span> <span class="o">=</span> <span class="n">nobjs</span> <span class="ow">or</span> <span class="mi">1</span> <span class="c1"># fix zero-div error with empty database</span>
<span class="n">Character</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHARACTER_TYPECLASS</span><span class="p">)</span>
<span class="n">Character</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHARACTER_TYPECLASS</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_CHARACTER_TYPECLASS</span><span class="p">)</span>
<span class="n">nchars</span> <span class="o">=</span> <span class="n">Character</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all_family</span><span class="p">()</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
<span class="n">Room</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_ROOM_TYPECLASS</span><span class="p">)</span>
<span class="n">Room</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_ROOM_TYPECLASS</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_ROOM_TYPECLASS</span><span class="p">)</span>
<span class="n">nrooms</span> <span class="o">=</span> <span class="n">Room</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all_family</span><span class="p">()</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
<span class="n">Exit</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_EXIT_TYPECLASS</span><span class="p">)</span>
<span class="n">Exit</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_EXIT_TYPECLASS</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_EXIT_TYPECLASS</span><span class="p">)</span>
<span class="n">nexits</span> <span class="o">=</span> <span class="n">Exit</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all_family</span><span class="p">()</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
<span class="n">nothers</span> <span class="o">=</span> <span class="n">nobjs</span> <span class="o">-</span> <span class="n">nchars</span> <span class="o">-</span> <span class="n">nrooms</span> <span class="o">-</span> <span class="n">nexits</span>
@ -310,7 +314,8 @@
<span class="c1">#</span>
<span class="c1"># So when you extend it, this line should look simple, like:</span>
<span class="c1"># model = Object</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_OBJECT_TYPECLASS</span><span class="p">)</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_OBJECT_TYPECLASS</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_OBJECT_TYPECLASS</span><span class="p">)</span>
<span class="c1"># What HTML template you wish to use to display this page.</span>
<span class="n">template_name</span> <span class="o">=</span> <span class="s2">&quot;website/object_detail.html&quot;</span>
@ -413,7 +418,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_OBJECT_TYPECLASS</span><span class="p">)</span></div>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_OBJECT_TYPECLASS</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_OBJECT_TYPECLASS</span><span class="p">)</span></div>
<div class="viewcode-block" id="ObjectDeleteView"><a class="viewcode-back" href="../../../../api/evennia.web.website.views.html#evennia.web.website.views.ObjectDeleteView">[docs]</a><span class="k">class</span> <span class="nc">ObjectDeleteView</span><span class="p">(</span><span class="n">LoginRequiredMixin</span><span class="p">,</span> <span class="n">ObjectDetailView</span><span class="p">,</span> <span class="n">EvenniaDeleteView</span><span class="p">):</span>
@ -428,7 +434,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># -- Django constructs --</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_OBJECT_TYPECLASS</span><span class="p">)</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_OBJECT_TYPECLASS</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_OBJECT_TYPECLASS</span><span class="p">)</span>
<span class="n">template_name</span> <span class="o">=</span> <span class="s2">&quot;website/object_confirm_delete.html&quot;</span>
<span class="c1"># -- Evennia constructs --</span>
@ -471,7 +478,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># -- Django constructs --</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_OBJECT_TYPECLASS</span><span class="p">)</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_OBJECT_TYPECLASS</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_OBJECT_TYPECLASS</span><span class="p">)</span>
<span class="c1"># -- Evennia constructs --</span>
<span class="n">access_type</span> <span class="o">=</span> <span class="s2">&quot;edit&quot;</span>
@ -554,7 +562,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># -- Django constructs --</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_ACCOUNT_TYPECLASS</span><span class="p">)</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_ACCOUNT_TYPECLASS</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_ACCOUNT_TYPECLASS</span><span class="p">)</span>
<span class="n">form_class</span> <span class="o">=</span> <span class="n">website_forms</span><span class="o">.</span><span class="n">AccountForm</span></div>
@ -619,7 +628,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># -- Django constructs --</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHARACTER_TYPECLASS</span><span class="p">)</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHARACTER_TYPECLASS</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_CHARACTER_TYPECLASS</span><span class="p">)</span>
<span class="n">form_class</span> <span class="o">=</span> <span class="n">website_forms</span><span class="o">.</span><span class="n">CharacterForm</span>
<span class="n">success_url</span> <span class="o">=</span> <span class="n">reverse_lazy</span><span class="p">(</span><span class="s2">&quot;character-manage&quot;</span><span class="p">)</span>
@ -858,7 +868,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># -- Django constructs --</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHANNEL_TYPECLASS</span><span class="p">)</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHANNEL_TYPECLASS</span><span class="p">,</span>
<span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_CHANNEL_TYPECLASS</span><span class="p">)</span>
<span class="c1"># -- Evennia constructs --</span>
<span class="n">page_title</span> <span class="o">=</span> <span class="s2">&quot;Channels&quot;</span>

View file

@ -90,11 +90,8 @@
<li><a href="evennia/contrib/ingame_python/eventfuncs.html">evennia.contrib.ingame_python.eventfuncs</a></li>
<li><a href="evennia/contrib/ingame_python/scripts.html">evennia.contrib.ingame_python.scripts</a></li>
<li><a href="evennia/contrib/ingame_python/tests.html">evennia.contrib.ingame_python.tests</a></li>
<li><a href="evennia/contrib/ingame_python/typeclasses.html">evennia.contrib.ingame_python.typeclasses</a></li>
<li><a href="evennia/contrib/ingame_python/utils.html">evennia.contrib.ingame_python.utils</a></li>
<li><a href="evennia/contrib/mail.html">evennia.contrib.mail</a></li>
<li><a href="evennia/contrib/mapbuilder.html">evennia.contrib.mapbuilder</a></li>
<li><a href="evennia/contrib/menu_login.html">evennia.contrib.menu_login</a></li>
<li><a href="evennia/contrib/multidescer.html">evennia.contrib.multidescer</a></li>
<li><a href="evennia/contrib/puzzles.html">evennia.contrib.puzzles</a></li>
<li><a href="evennia/contrib/random_string_generator.html">evennia.contrib.random_string_generator</a></li>
@ -228,10 +225,6 @@
<li><a href="evennia/web/website/tests.html">evennia.web.website.tests</a></li>
<li><a href="evennia/web/website/views.html">evennia.web.website.views</a></li>
</ul><li><a href="functools.html">functools</a></li>
<li><a href="typeclasses/accounts.html">typeclasses.accounts</a></li>
<li><a href="typeclasses/channels.html">typeclasses.channels</a></li>
<li><a href="typeclasses/characters.html">typeclasses.characters</a></li>
<li><a href="typeclasses/objects.html">typeclasses.objects</a></li>
</ul>
<div class="clearer"></div>

View file

@ -1,196 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>typeclasses.accounts &#8212; Evennia 0.9.5 documentation</title>
<link rel="stylesheet" href="../../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/language_data.js"></script>
<link rel="shortcut icon" href="../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">typeclasses.accounts</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for typeclasses.accounts</h1><div class="highlight"><pre>
<span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">Account</span>
<span class="sd">The Account represents the game &quot;account&quot; and each login has only one</span>
<span class="sd">Account object. An Account is what chats on default channels but has no</span>
<span class="sd">other in-game-world existence. Rather the Account puppets Objects (such</span>
<span class="sd">as Characters) in order to actually participate in the game world.</span>
<span class="sd">Guest</span>
<span class="sd">Guest accounts are simple low-level accounts that are created/deleted</span>
<span class="sd">on the fly and allows users to test the game without the commitment</span>
<span class="sd">of a full registration. Guest accounts are deactivated by default; to</span>
<span class="sd">activate them, add the following line to your settings file:</span>
<span class="sd"> GUEST_ENABLED = True</span>
<span class="sd">You will also need to modify the connection screen to reflect the</span>
<span class="sd">possibility to connect with a guest account. The setting file accepts</span>
<span class="sd">several more options for customizing the Guest account system.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">DefaultAccount</span><span class="p">,</span> <span class="n">DefaultGuest</span>
<span class="k">class</span> <span class="nc">Account</span><span class="p">(</span><span class="n">DefaultAccount</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This class describes the actual OOC account (i.e. the user connecting</span>
<span class="sd"> to the MUD). It does NOT have visual appearance in the game world (that</span>
<span class="sd"> is handled by the character which is connected to this). Comm channels</span>
<span class="sd"> are attended/joined using this object.</span>
<span class="sd"> It can be useful e.g. for storing configuration options for your game, but</span>
<span class="sd"> should generally not hold any character-related info (that&#39;s best handled</span>
<span class="sd"> on the character level).</span>
<span class="sd"> Can be set using BASE_ACCOUNT_TYPECLASS.</span>
<span class="sd"> * available properties</span>
<span class="sd"> key (string) - name of account</span>
<span class="sd"> name (string)- wrapper for user.username</span>
<span class="sd"> aliases (list of strings) - aliases to the object. Will be saved to database as AliasDB entries but returned as strings.</span>
<span class="sd"> dbref (int, read-only) - unique #id-number. Also &quot;id&quot; can be used.</span>
<span class="sd"> date_created (string) - time stamp of object creation</span>
<span class="sd"> permissions (list of strings) - list of permission strings</span>
<span class="sd"> user (User, read-only) - django User authorization object</span>
<span class="sd"> obj (Object) - game object controlled by account. &#39;character&#39; can also be used.</span>
<span class="sd"> sessions (list of Sessions) - sessions connected to this account</span>
<span class="sd"> is_superuser (bool, read-only) - if the connected user is a superuser</span>
<span class="sd"> * Handlers</span>
<span class="sd"> locks - lock-handler: use locks.add() to add new lock strings</span>
<span class="sd"> db - attribute-handler: store/retrieve database attributes on this self.db.myattr=val, val=self.db.myattr</span>
<span class="sd"> ndb - non-persistent attribute handler: same as db but does not create a database entry when storing data</span>
<span class="sd"> scripts - script-handler. Add new scripts to object with scripts.add()</span>
<span class="sd"> cmdset - cmdset-handler. Use cmdset.add() to add new cmdsets to object</span>
<span class="sd"> nicks - nick-handler. New nicks with nicks.add().</span>
<span class="sd"> * Helper methods</span>
<span class="sd"> msg(text=None, **kwargs)</span>
<span class="sd"> execute_cmd(raw_string, session=None)</span>
<span class="sd"> search(ostring, global_search=False, attribute_name=None, use_nicks=False, location=None, ignore_errors=False, account=False)</span>
<span class="sd"> is_typeclass(typeclass, exact=False)</span>
<span class="sd"> swap_typeclass(new_typeclass, clean_attributes=False, no_default=True)</span>
<span class="sd"> access(accessing_obj, access_type=&#39;read&#39;, default=False)</span>
<span class="sd"> check_permstring(permstring)</span>
<span class="sd"> * Hook methods (when re-implementation, remember methods need to have self as first arg)</span>
<span class="sd"> basetype_setup()</span>
<span class="sd"> at_account_creation()</span>
<span class="sd"> - note that the following hooks are also found on Objects and are</span>
<span class="sd"> usually handled on the character level:</span>
<span class="sd"> at_init()</span>
<span class="sd"> at_cmdset_get(**kwargs)</span>
<span class="sd"> at_first_login()</span>
<span class="sd"> at_post_login(session=None)</span>
<span class="sd"> at_disconnect()</span>
<span class="sd"> at_message_receive()</span>
<span class="sd"> at_message_send()</span>
<span class="sd"> at_server_reload()</span>
<span class="sd"> at_server_shutdown()</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">pass</span>
<span class="k">class</span> <span class="nc">Guest</span><span class="p">(</span><span class="n">DefaultGuest</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This class is used for guest logins. Unlike Accounts, Guests and their</span>
<span class="sd"> characters are deleted after disconnection.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">pass</span>
</pre></div>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../index.html">
<img class="logo" src="../../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h3>Versions</h3>
<ul>
<li><a href="../../../1.0-dev/index.html">1.0-dev (develop branch)</a></li>
<li><a href="accounts.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">typeclasses.accounts</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>

View file

@ -1,154 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>typeclasses.channels &#8212; Evennia 0.9.5 documentation</title>
<link rel="stylesheet" href="../../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/language_data.js"></script>
<link rel="shortcut icon" href="../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">typeclasses.channels</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for typeclasses.channels</h1><div class="highlight"><pre>
<span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">Channel</span>
<span class="sd">The channel class represents the out-of-character chat-room usable by</span>
<span class="sd">Accounts in-game. It is mostly overloaded to change its appearance, but</span>
<span class="sd">channels can be used to implement many different forms of message</span>
<span class="sd">distribution systems.</span>
<span class="sd">Note that sending data to channels are handled via the CMD_CHANNEL</span>
<span class="sd">syscommand (see evennia.syscmds). The sending should normally not need</span>
<span class="sd">to be modified.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">DefaultChannel</span>
<span class="k">class</span> <span class="nc">Channel</span><span class="p">(</span><span class="n">DefaultChannel</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Working methods:</span>
<span class="sd"> at_channel_creation() - called once, when the channel is created</span>
<span class="sd"> has_connection(account) - check if the given account listens to this channel</span>
<span class="sd"> connect(account) - connect account to this channel</span>
<span class="sd"> disconnect(account) - disconnect account from channel</span>
<span class="sd"> access(access_obj, access_type=&#39;listen&#39;, default=False) - check the</span>
<span class="sd"> access on this channel (default access_type is listen)</span>
<span class="sd"> delete() - delete this channel</span>
<span class="sd"> message_transform(msg, emit=False, prefix=True,</span>
<span class="sd"> sender_strings=None, external=False) - called by</span>
<span class="sd"> the comm system and triggers the hooks below</span>
<span class="sd"> msg(msgobj, header=None, senders=None, sender_strings=None,</span>
<span class="sd"> persistent=None, online=False, emit=False, external=False) - main</span>
<span class="sd"> send method, builds and sends a new message to channel.</span>
<span class="sd"> tempmsg(msg, header=None, senders=None) - wrapper for sending non-persistent</span>
<span class="sd"> messages.</span>
<span class="sd"> distribute_message(msg, online=False) - send a message to all</span>
<span class="sd"> connected accounts on channel, optionally sending only</span>
<span class="sd"> to accounts that are currently online (optimized for very large sends)</span>
<span class="sd"> Useful hooks:</span>
<span class="sd"> channel_prefix(msg, emit=False) - how the channel should be</span>
<span class="sd"> prefixed when returning to user. Returns a string</span>
<span class="sd"> format_senders(senders) - should return how to display multiple</span>
<span class="sd"> senders to a channel</span>
<span class="sd"> pose_transform(msg, sender_string) - should detect if the</span>
<span class="sd"> sender is posing, and if so, modify the string</span>
<span class="sd"> format_external(msg, senders, emit=False) - format messages sent</span>
<span class="sd"> from outside the game, like from IRC</span>
<span class="sd"> format_message(msg, emit=False) - format the message body before</span>
<span class="sd"> displaying it to the user. &#39;emit&#39; generally means that the</span>
<span class="sd"> message should not be displayed with the sender&#39;s name.</span>
<span class="sd"> pre_join_channel(joiner) - if returning False, abort join</span>
<span class="sd"> post_join_channel(joiner) - called right after successful join</span>
<span class="sd"> pre_leave_channel(leaver) - if returning False, abort leave</span>
<span class="sd"> post_leave_channel(leaver) - called right after successful leave</span>
<span class="sd"> pre_send_message(msg) - runs just before a message is sent to channel</span>
<span class="sd"> post_send_message(msg) - called just after message was sent to channel</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">pass</span>
</pre></div>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../index.html">
<img class="logo" src="../../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h3>Versions</h3>
<ul>
<li><a href="../../../1.0-dev/index.html">1.0-dev (develop branch)</a></li>
<li><a href="channels.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">typeclasses.channels</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>

View file

@ -1,126 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>typeclasses.characters &#8212; Evennia 0.9.5 documentation</title>
<link rel="stylesheet" href="../../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/language_data.js"></script>
<link rel="shortcut icon" href="../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">typeclasses.characters</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for typeclasses.characters</h1><div class="highlight"><pre>
<span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">Characters</span>
<span class="sd">Characters are (by default) Objects setup to be puppeted by Accounts.</span>
<span class="sd">They are what you &quot;see&quot; in game. The Character class in this module</span>
<span class="sd">is setup to be the &quot;default&quot; character type created by the default</span>
<span class="sd">creation commands.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">DefaultCharacter</span>
<span class="k">class</span> <span class="nc">Character</span><span class="p">(</span><span class="n">DefaultCharacter</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The Character defaults to reimplementing some of base Object&#39;s hook methods with the</span>
<span class="sd"> following functionality:</span>
<span class="sd"> at_basetype_setup - always assigns the DefaultCmdSet to this object type</span>
<span class="sd"> (important!)sets locks so character cannot be picked up</span>
<span class="sd"> and its commands only be called by itself, not anyone else.</span>
<span class="sd"> (to change things, use at_object_creation() instead).</span>
<span class="sd"> at_after_move(source_location) - Launches the &quot;look&quot; command after every move.</span>
<span class="sd"> at_post_unpuppet(account) - when Account disconnects from the Character, we</span>
<span class="sd"> store the current location in the pre_logout_location Attribute and</span>
<span class="sd"> move it to a None-location so the &quot;unpuppeted&quot; character</span>
<span class="sd"> object does not need to stay on grid. Echoes &quot;Account has disconnected&quot;</span>
<span class="sd"> to the room.</span>
<span class="sd"> at_pre_puppet - Just before Account re-connects, retrieves the character&#39;s</span>
<span class="sd"> pre_logout_location Attribute and move it back on the grid.</span>
<span class="sd"> at_post_puppet - Echoes &quot;AccountName has entered the game&quot; to the room.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">pass</span>
</pre></div>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../index.html">
<img class="logo" src="../../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h3>Versions</h3>
<ul>
<li><a href="../../../1.0-dev/index.html">1.0-dev (develop branch)</a></li>
<li><a href="characters.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">typeclasses.characters</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>

View file

@ -1,254 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>typeclasses.objects &#8212; Evennia 0.9.5 documentation</title>
<link rel="stylesheet" href="../../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/language_data.js"></script>
<link rel="shortcut icon" href="../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">typeclasses.objects</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for typeclasses.objects</h1><div class="highlight"><pre>
<span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">Object</span>
<span class="sd">The Object is the &quot;naked&quot; base class for things in the game world.</span>
<span class="sd">Note that the default Character, Room and Exit does not inherit from</span>
<span class="sd">this Object, but from their respective default implementations in the</span>
<span class="sd">evennia library. If you want to use this class as a parent to change</span>
<span class="sd">the other types, you can do so by adding this as a multiple</span>
<span class="sd">inheritance.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">DefaultObject</span>
<span class="k">class</span> <span class="nc">Object</span><span class="p">(</span><span class="n">DefaultObject</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This is the root typeclass object, implementing an in-game Evennia</span>
<span class="sd"> game object, such as having a location, being able to be</span>
<span class="sd"> manipulated or looked at, etc. If you create a new typeclass, it</span>
<span class="sd"> must always inherit from this object (or any of the other objects</span>
<span class="sd"> in this file, since they all actually inherit from BaseObject, as</span>
<span class="sd"> seen in src.object.objects).</span>
<span class="sd"> The BaseObject class implements several hooks tying into the game</span>
<span class="sd"> engine. By re-implementing these hooks you can control the</span>
<span class="sd"> system. You should never need to re-implement special Python</span>
<span class="sd"> methods, such as __init__ and especially never __getattribute__ and</span>
<span class="sd"> __setattr__ since these are used heavily by the typeclass system</span>
<span class="sd"> of Evennia and messing with them might well break things for you.</span>
<span class="sd"> * Base properties defined/available on all Objects</span>
<span class="sd"> key (string) - name of object</span>
<span class="sd"> name (string)- same as key</span>
<span class="sd"> dbref (int, read-only) - unique #id-number. Also &quot;id&quot; can be used.</span>
<span class="sd"> date_created (string) - time stamp of object creation</span>
<span class="sd"> account (Account) - controlling account (if any, only set together with</span>
<span class="sd"> sessid below)</span>
<span class="sd"> sessid (int, read-only) - session id (if any, only set together with</span>
<span class="sd"> account above). Use `sessions` handler to get the</span>
<span class="sd"> Sessions directly.</span>
<span class="sd"> location (Object) - current location. Is None if this is a room</span>
<span class="sd"> home (Object) - safety start-location</span>
<span class="sd"> has_account (bool, read-only)- will only return *connected* accounts</span>
<span class="sd"> contents (list of Objects, read-only) - returns all objects inside this</span>
<span class="sd"> object (including exits)</span>
<span class="sd"> exits (list of Objects, read-only) - returns all exits from this</span>
<span class="sd"> object, if any</span>
<span class="sd"> destination (Object) - only set if this object is an exit.</span>
<span class="sd"> is_superuser (bool, read-only) - True/False if this user is a superuser</span>
<span class="sd"> * Handlers available</span>
<span class="sd"> aliases - alias-handler: use aliases.add/remove/get() to use.</span>
<span class="sd"> permissions - permission-handler: use permissions.add/remove() to</span>
<span class="sd"> add/remove new perms.</span>
<span class="sd"> locks - lock-handler: use locks.add() to add new lock strings</span>
<span class="sd"> scripts - script-handler. Add new scripts to object with scripts.add()</span>
<span class="sd"> cmdset - cmdset-handler. Use cmdset.add() to add new cmdsets to object</span>
<span class="sd"> nicks - nick-handler. New nicks with nicks.add().</span>
<span class="sd"> sessions - sessions-handler. Get Sessions connected to this</span>
<span class="sd"> object with sessions.get()</span>
<span class="sd"> attributes - attribute-handler. Use attributes.add/remove/get.</span>
<span class="sd"> db - attribute-handler: Shortcut for attribute-handler. Store/retrieve</span>
<span class="sd"> database attributes using self.db.myattr=val, val=self.db.myattr</span>
<span class="sd"> ndb - non-persistent attribute handler: same as db but does not create</span>
<span class="sd"> a database entry when storing data</span>
<span class="sd"> * Helper methods (see src.objects.objects.py for full headers)</span>
<span class="sd"> search(ostring, global_search=False, attribute_name=None,</span>
<span class="sd"> use_nicks=False, location=None, ignore_errors=False, account=False)</span>
<span class="sd"> execute_cmd(raw_string)</span>
<span class="sd"> msg(text=None, **kwargs)</span>
<span class="sd"> msg_contents(message, exclude=None, from_obj=None, **kwargs)</span>
<span class="sd"> move_to(destination, quiet=False, emit_to_obj=None, use_destination=True)</span>
<span class="sd"> copy(new_key=None)</span>
<span class="sd"> delete()</span>
<span class="sd"> is_typeclass(typeclass, exact=False)</span>
<span class="sd"> swap_typeclass(new_typeclass, clean_attributes=False, no_default=True)</span>
<span class="sd"> access(accessing_obj, access_type=&#39;read&#39;, default=False)</span>
<span class="sd"> check_permstring(permstring)</span>
<span class="sd"> * Hooks (these are class methods, so args should start with self):</span>
<span class="sd"> basetype_setup() - only called once, used for behind-the-scenes</span>
<span class="sd"> setup. Normally not modified.</span>
<span class="sd"> basetype_posthook_setup() - customization in basetype, after the object</span>
<span class="sd"> has been created; Normally not modified.</span>
<span class="sd"> at_object_creation() - only called once, when object is first created.</span>
<span class="sd"> Object customizations go here.</span>
<span class="sd"> at_object_delete() - called just before deleting an object. If returning</span>
<span class="sd"> False, deletion is aborted. Note that all objects</span>
<span class="sd"> inside a deleted object are automatically moved</span>
<span class="sd"> to their &lt;home&gt;, they don&#39;t need to be removed here.</span>
<span class="sd"> at_init() - called whenever typeclass is cached from memory,</span>
<span class="sd"> at least once every server restart/reload</span>
<span class="sd"> at_cmdset_get(**kwargs) - this is called just before the command handler</span>
<span class="sd"> requests a cmdset from this object. The kwargs are</span>
<span class="sd"> not normally used unless the cmdset is created</span>
<span class="sd"> dynamically (see e.g. Exits).</span>
<span class="sd"> at_pre_puppet(account)- (account-controlled objects only) called just</span>
<span class="sd"> before puppeting</span>
<span class="sd"> at_post_puppet() - (account-controlled objects only) called just</span>
<span class="sd"> after completing connection account&lt;-&gt;object</span>
<span class="sd"> at_pre_unpuppet() - (account-controlled objects only) called just</span>
<span class="sd"> before un-puppeting</span>
<span class="sd"> at_post_unpuppet(account) - (account-controlled objects only) called just</span>
<span class="sd"> after disconnecting account&lt;-&gt;object link</span>
<span class="sd"> at_server_reload() - called before server is reloaded</span>
<span class="sd"> at_server_shutdown() - called just before server is fully shut down</span>
<span class="sd"> at_access(result, accessing_obj, access_type) - called with the result</span>
<span class="sd"> of a lock access check on this object. Return value</span>
<span class="sd"> does not affect check result.</span>
<span class="sd"> at_before_move(destination) - called just before moving object</span>
<span class="sd"> to the destination. If returns False, move is cancelled.</span>
<span class="sd"> announce_move_from(destination) - called in old location, just</span>
<span class="sd"> before move, if obj.move_to() has quiet=False</span>
<span class="sd"> announce_move_to(source_location) - called in new location, just</span>
<span class="sd"> after move, if obj.move_to() has quiet=False</span>
<span class="sd"> at_after_move(source_location) - always called after a move has</span>
<span class="sd"> been successfully performed.</span>
<span class="sd"> at_object_leave(obj, target_location) - called when an object leaves</span>
<span class="sd"> this object in any fashion</span>
<span class="sd"> at_object_receive(obj, source_location) - called when this object receives</span>
<span class="sd"> another object</span>
<span class="sd"> at_traverse(traversing_object, source_loc) - (exit-objects only)</span>
<span class="sd"> handles all moving across the exit, including</span>
<span class="sd"> calling the other exit hooks. Use super() to retain</span>
<span class="sd"> the default functionality.</span>
<span class="sd"> at_after_traverse(traversing_object, source_location) - (exit-objects only)</span>
<span class="sd"> called just after a traversal has happened.</span>
<span class="sd"> at_failed_traverse(traversing_object) - (exit-objects only) called if</span>
<span class="sd"> traversal fails and property err_traverse is not defined.</span>
<span class="sd"> at_msg_receive(self, msg, from_obj=None, **kwargs) - called when a message</span>
<span class="sd"> (via self.msg()) is sent to this obj.</span>
<span class="sd"> If returns false, aborts send.</span>
<span class="sd"> at_msg_send(self, msg, to_obj=None, **kwargs) - called when this objects</span>
<span class="sd"> sends a message to someone via self.msg().</span>
<span class="sd"> return_appearance(looker) - describes this object. Used by &quot;look&quot;</span>
<span class="sd"> command by default</span>
<span class="sd"> at_desc(looker=None) - called by &#39;look&#39; whenever the</span>
<span class="sd"> appearance is requested.</span>
<span class="sd"> at_get(getter) - called after object has been picked up.</span>
<span class="sd"> Does not stop pickup.</span>
<span class="sd"> at_drop(dropper) - called when this object has been dropped.</span>
<span class="sd"> at_say(speaker, message) - by default, called if an object inside this</span>
<span class="sd"> object speaks</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">pass</span>
</pre></div>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../index.html">
<img class="logo" src="../../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h3>Versions</h3>
<ul>
<li><a href="../../../1.0-dev/index.html">1.0-dev (develop branch)</a></li>
<li><a href="objects.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">typeclasses.objects</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>

View file

@ -1,5 +1,5 @@
# Toc
- [API root](api/evennia-api.rst)
- [./A voice operated elevator using events](./A-voice-operated-elevator-using-events)
- [./API refactoring](./API-refactoring)
- [./Accounts](./Accounts)

View file

@ -238,7 +238,7 @@ to accounts respectively.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.admin.CmdEmit.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['remit', 'pemit']</em><a class="headerlink" href="#evennia.commands.default.admin.CmdEmit.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['pemit', 'remit']</em><a class="headerlink" href="#evennia.commands.default.admin.CmdEmit.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -74,7 +74,7 @@ skipping, reloading etc.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.batchprocess.CmdBatchCommands.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['batchcmd', 'batchcommand']</em><a class="headerlink" href="#evennia.commands.default.batchprocess.CmdBatchCommands.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['batchcommand', 'batchcmd']</em><a class="headerlink" href="#evennia.commands.default.batchprocess.CmdBatchCommands.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -493,7 +493,7 @@ You can specify the /force switch to bypass this confirmation.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.building.CmdDestroy.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['del', 'delete']</em><a class="headerlink" href="#evennia.commands.default.building.CmdDestroy.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['delete', 'del']</em><a class="headerlink" href="#evennia.commands.default.building.CmdDestroy.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -1182,7 +1182,7 @@ server settings.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.building.CmdTypeclass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['type', 'swap', 'update', 'parent']</em><a class="headerlink" href="#evennia.commands.default.building.CmdTypeclass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['type', 'update', 'parent', 'swap']</em><a class="headerlink" href="#evennia.commands.default.building.CmdTypeclass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -1351,7 +1351,7 @@ If object is not specified, the current location is examined.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.building.CmdExamine.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['exam', 'ex']</em><a class="headerlink" href="#evennia.commands.default.building.CmdExamine.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['ex', 'exam']</em><a class="headerlink" href="#evennia.commands.default.building.CmdExamine.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -1477,7 +1477,7 @@ one is given.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.building.CmdFind.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['locate', 'search']</em><a class="headerlink" href="#evennia.commands.default.building.CmdFind.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['search', 'locate']</em><a class="headerlink" href="#evennia.commands.default.building.CmdFind.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -115,7 +115,7 @@ for that channel.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.comms.CmdDelCom.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['delchanalias', 'delaliaschan']</em><a class="headerlink" href="#evennia.commands.default.comms.CmdDelCom.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['delaliaschan', 'delchanalias']</em><a class="headerlink" href="#evennia.commands.default.comms.CmdDelCom.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -218,7 +218,7 @@ Use addcom/delcom to join and leave channels</p>
<dl class="py attribute">
<dt id="evennia.commands.default.comms.CmdChannels.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['channellist', 'chanlist', 'comlist', 'clist', 'all channels']</em><a class="headerlink" href="#evennia.commands.default.comms.CmdChannels.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['all channels', 'clist', 'chanlist', 'comlist', 'channellist']</em><a class="headerlink" href="#evennia.commands.default.comms.CmdChannels.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -194,7 +194,7 @@ for everyone to use, you need build privileges and the alias command.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.general.CmdNick.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['nickname', 'nicks']</em><a class="headerlink" href="#evennia.commands.default.general.CmdNick.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['nicks', 'nickname']</em><a class="headerlink" href="#evennia.commands.default.general.CmdNick.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -244,7 +244,7 @@ inv</p>
<dl class="py attribute">
<dt id="evennia.commands.default.general.CmdInventory.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['inv', 'i']</em><a class="headerlink" href="#evennia.commands.default.general.CmdInventory.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['i', 'inv']</em><a class="headerlink" href="#evennia.commands.default.general.CmdInventory.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -348,7 +348,7 @@ given, &lt;nr&gt; defaults to 10.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.system.CmdObjects.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['stats', 'db', 'listobjs', 'listobjects']</em><a class="headerlink" href="#evennia.commands.default.system.CmdObjects.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['listobjs', 'stats', 'listobjects', 'db']</em><a class="headerlink" href="#evennia.commands.default.system.CmdObjects.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -112,7 +112,7 @@ create “account name” “pass word”</p>
<dl class="py attribute">
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedCreate.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['cr', 'cre']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedCreate.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['cre', 'cr']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedCreate.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -162,7 +162,7 @@ version is a bit more complicated.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedQuit.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['qu', 'q']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedQuit.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['q', 'qu']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedQuit.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -251,7 +251,7 @@ for simplicity. It shows a pane of info.</p>
<dl class="py attribute">
<dt id="evennia.commands.default.unloggedin.CmdUnconnectedHelp.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['?', 'h']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedHelp.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['h', '?']</em><a class="headerlink" href="#evennia.commands.default.unloggedin.CmdUnconnectedHelp.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -597,7 +597,7 @@ inv</p>
<dl class="py attribute">
<dt id="evennia.contrib.clothing.CmdInventory.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['inv', 'i']</em><a class="headerlink" href="#evennia.contrib.clothing.CmdInventory.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['i', 'inv']</em><a class="headerlink" href="#evennia.contrib.clothing.CmdInventory.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -148,7 +148,7 @@ everyone but the person rolling.</p>
<dl class="py attribute">
<dt id="evennia.contrib.dice.CmdDice.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;dice', 'roll']</em><a class="headerlink" href="#evennia.contrib.dice.CmdDice.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['roll', '&#64;dice']</em><a class="headerlink" href="#evennia.contrib.dice.CmdDice.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -120,7 +120,7 @@ there is no object yet before the account has logged in)</p>
<dl class="py attribute">
<dt id="evennia.contrib.email_login.CmdUnconnectedCreate.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['cr', 'cre']</em><a class="headerlink" href="#evennia.contrib.email_login.CmdUnconnectedCreate.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['cre', 'cr']</em><a class="headerlink" href="#evennia.contrib.email_login.CmdUnconnectedCreate.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -170,7 +170,7 @@ version is a bit more complicated.</p>
<dl class="py attribute">
<dt id="evennia.contrib.email_login.CmdUnconnectedQuit.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['qu', 'q']</em><a class="headerlink" href="#evennia.contrib.email_login.CmdUnconnectedQuit.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['q', 'qu']</em><a class="headerlink" href="#evennia.contrib.email_login.CmdUnconnectedQuit.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -249,7 +249,7 @@ for simplicity. It shows a pane of info.</p>
<dl class="py attribute">
<dt id="evennia.contrib.email_login.CmdUnconnectedHelp.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['?', 'h']</em><a class="headerlink" href="#evennia.contrib.email_login.CmdUnconnectedHelp.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['h', '?']</em><a class="headerlink" href="#evennia.contrib.email_login.CmdUnconnectedHelp.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -51,7 +51,7 @@
<dl class="py attribute">
<dt id="evennia.contrib.ingame_python.commands.CmdCallback.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;callbacks', '&#64;callback', '&#64;calls']</em><a class="headerlink" href="#evennia.contrib.ingame_python.commands.CmdCallback.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;callback', '&#64;callbacks', '&#64;calls']</em><a class="headerlink" href="#evennia.contrib.ingame_python.commands.CmdCallback.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -36,401 +36,8 @@
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="module-evennia.contrib.ingame_python.typeclasses">
<span id="evennia-contrib-ingame-python-typeclasses"></span><h1>evennia.contrib.ingame_python.typeclasses<a class="headerlink" href="#module-evennia.contrib.ingame_python.typeclasses" title="Permalink to this headline"></a></h1>
<p>Typeclasses for the in-game Python system.</p>
<p>To use them, change your base typeclasses to inherit from the classes in this
module (EventObject, EventRoom, EventCharacter and EventExit) instead of the
default ones in evennia core.</p>
<dl class="py class">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.ingame_python.typeclasses.</code><code class="sig-name descname">EventCharacter</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventCharacter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter" title="evennia.objects.objects.DefaultCharacter"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultCharacter</span></code></a></p>
<p>Typeclass to represent a character and call event types.</p>
<dl class="py attribute">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.callbacks">
<code class="sig-name descname">callbacks</code><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventCharacter.callbacks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.callbacks" title="Permalink to this definition"></a></dt>
<dd><p>Return the CallbackHandler.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.announce_move_from">
<code class="sig-name descname">announce_move_from</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">destination</span></em>, <em class="sig-param"><span class="n">msg</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">mapping</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventCharacter.announce_move_from"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.announce_move_from" title="Permalink to this definition"></a></dt>
<dd><p>Called if the move is to be announced. This is
called while we are still standing in the old
location.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>destination</strong> (<em>Object</em>) The place we are going to.</p></li>
<li><p><strong>msg</strong> (<em>str</em><em>, </em><em>optional</em>) a replacement message.</p></li>
<li><p><strong>mapping</strong> (<em>dict</em><em>, </em><em>optional</em>) additional mapping objects.</p></li>
</ul>
</dd>
</dl>
<p>You can override this method and call its parent with a
message to simply change the default message. In the string,
you can use the following as mappings (between braces):</p>
<blockquote>
<div><p>object: the object which is moving.
exit: the exit from which the object is moving (if found).
origin: the location of the object before the move.
destination: the location of the object after moving.</p>
</div></blockquote>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.announce_move_to">
<code class="sig-name descname">announce_move_to</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">source_location</span></em>, <em class="sig-param"><span class="n">msg</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">mapping</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventCharacter.announce_move_to"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.announce_move_to" title="Permalink to this definition"></a></dt>
<dd><p>Called after the move if the move was not quiet. At this point
we are standing in the new location.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>source_location</strong> (<em>Object</em>) The place we came from</p></li>
<li><p><strong>msg</strong> (<em>str</em><em>, </em><em>optional</em>) the replacement message if location.</p></li>
<li><p><strong>mapping</strong> (<em>dict</em><em>, </em><em>optional</em>) additional mapping objects.</p></li>
</ul>
</dd>
</dl>
<p>You can override this method and call its parent with a
message to simply change the default message. In the string,
you can use the following as mappings (between braces):</p>
<blockquote>
<div><p>object: the object which is moving.
exit: the exit from which the object is moving (if found).
origin: the location of the object before the move.
destination: the location of the object after moving.</p>
</div></blockquote>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.at_before_move">
<code class="sig-name descname">at_before_move</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">destination</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventCharacter.at_before_move"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_before_move" title="Permalink to this definition"></a></dt>
<dd><p>Called just before starting to move this object to
destination.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>destination</strong> (<em>Object</em>) The object we are moving to</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>shouldmove (bool)</em> If we should move or not.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>If this method returns False/None, the move is cancelled
before it is even started.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.at_after_move">
<code class="sig-name descname">at_after_move</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">source_location</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventCharacter.at_after_move"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_after_move" title="Permalink to this definition"></a></dt>
<dd><p>Called after move has completed, regardless of quiet mode or
not. Allows changes to the object due to the location it is
now in.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>source_location</strong> (<em>Object</em>) Wwhere we came from. This may be <strong>None</strong>.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.at_object_delete">
<code class="sig-name descname">at_object_delete</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventCharacter.at_object_delete"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_object_delete" title="Permalink to this definition"></a></dt>
<dd><p>Called just before the database object is permanently
delete()d from the database. If this method returns False,
deletion is aborted.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.at_post_puppet">
<code class="sig-name descname">at_post_puppet</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventCharacter.at_post_puppet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_post_puppet" title="Permalink to this definition"></a></dt>
<dd><p>Called just after puppeting has been completed and all
Account&lt;-&gt;Object links have been established.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can use <strong>self.account</strong> and <strong>self.sessions.get()</strong> to get
account and sessions at this point; the last entry in the
list from <strong>self.sessions.get()</strong> is the latest Session
puppeting this Object.</p>
</div>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.at_pre_unpuppet">
<code class="sig-name descname">at_pre_unpuppet</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventCharacter.at_pre_unpuppet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_pre_unpuppet" title="Permalink to this definition"></a></dt>
<dd><p>Called just before beginning to un-connect a puppeting from
this Account.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can use <strong>self.account</strong> and <strong>self.sessions.get()</strong> to get
account and sessions at this point; the last entry in the
list from <strong>self.sessions.get()</strong> is the latest Session
puppeting this Object.</p>
</div>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.at_before_say">
<code class="sig-name descname">at_before_say</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">message</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventCharacter.at_before_say"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_before_say" title="Permalink to this definition"></a></dt>
<dd><p>Before the object says something.</p>
<p>This hook is by default used by the say and whisper
commands as used by this command it is called before the text
is said/whispered and can be used to customize the outgoing
text from the object. Returning <strong>None</strong> aborts the command.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>message</strong> (<em>str</em>) The suggested say/whisper text spoken by self.</p>
</dd>
<dt class="field-even">Keyword Arguments</dt>
<dd class="field-even"><ul class="simple">
<li><p><strong>whisper</strong> (<em>bool</em>) If True, this is a whisper rather than
a say. This is sent by the whisper command by default.
Other verbal commands could use this hook in similar
ways.</p></li>
<li><p><strong>receiver</strong> (<em>Object</em>) If set, this is a target for the say/whisper.</p></li>
</ul>
</dd>
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><em>message (str)</em> The (possibly modified) text to be spoken.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.at_say">
<code class="sig-name descname">at_say</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">message</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventCharacter.at_say"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_say" title="Permalink to this definition"></a></dt>
<dd><p>Display the actual say (or whisper) of self.</p>
<p>This hook should display the actual say/whisper of the object in its
location. It should both alert the object (self) and its
location that some text is spoken. The overriding of messages or
<strong>mapping</strong> allows for simple customization of the hook without
re-writing it completely.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>message</strong> (<em>str</em>) The text to be conveyed by self.</p></li>
<li><p><strong>msg_self</strong> (<em>str</em><em>, </em><em>optional</em>) The message to echo to self.</p></li>
<li><p><strong>msg_location</strong> (<em>str</em><em>, </em><em>optional</em>) The message to echo to selfs location.</p></li>
<li><p><strong>receiver</strong> (<em>Object</em><em>, </em><em>optional</em>) An eventual receiver of the message
(by default only used by whispers).</p></li>
<li><p><strong>msg_receiver</strong> (<em>str</em><em>, </em><em>optional</em>) Specific message for receiver only.</p></li>
<li><p><strong>mapping</strong> (<em>dict</em><em>, </em><em>optional</em>) Additional mapping in messages.</p></li>
</ul>
</dd>
<dt class="field-even">Keyword Arguments</dt>
<dd class="field-even"><p><strong>whisper</strong> (<em>bool</em>) If this is a whisper rather than a say. Kwargs
can be used by other verbal commands in a similar way.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>Messages can contain {} markers, which must
If used, <strong>msg_self</strong>, <strong>msg_receiver</strong> and <strong>msg_location</strong> should contain
references to other objects between braces, the way <strong>location.msg_contents</strong>
would allow. For instance:</p>
<blockquote>
<div><p>msg_self = You say: “{speech}”’
msg_location = {object} says: “{speech}”’
msg_receiver = {object} whispers: “{speech}”’</p>
</div></blockquote>
<dl class="simple">
<dt>The following mappings can be used in both messages:</dt><dd><p>object: the object speaking.
location: the location where object is.
speech: the text spoken by self.</p>
</dd>
</dl>
<p>You can use additional mappings if you want to add other
information in your messages.</p>
</dd></dl>
<dl class="py exception">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.DoesNotExist" title="evennia.objects.objects.DefaultCharacter.DoesNotExist"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultCharacter.DoesNotExist</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.MultipleObjectsReturned" title="evennia.objects.objects.DefaultCharacter.MultipleObjectsReturned"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultCharacter.MultipleObjectsReturned</span></code></a></p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.contrib.ingame_python.typeclasses.EventCharacter'</em><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.ingame_python.typeclasses.EventCharacter.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'EventCharacter'</em><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventCharacter.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.ingame_python.typeclasses.EventExit">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.ingame_python.typeclasses.</code><code class="sig-name descname">EventExit</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventExit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventExit" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultExit" title="evennia.objects.objects.DefaultExit"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultExit</span></code></a></p>
<p>Modified exit including management of events.</p>
<dl class="py attribute">
<dt id="evennia.contrib.ingame_python.typeclasses.EventExit.callbacks">
<code class="sig-name descname">callbacks</code><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventExit.callbacks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventExit.callbacks" title="Permalink to this definition"></a></dt>
<dd><p>Return the CallbackHandler.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.ingame_python.typeclasses.EventExit.at_traverse">
<code class="sig-name descname">at_traverse</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">traversing_object</span></em>, <em class="sig-param"><span class="n">target_location</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventExit.at_traverse"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventExit.at_traverse" title="Permalink to this definition"></a></dt>
<dd><p>This hook is responsible for handling the actual traversal,
normally by calling
<strong>traversing_object.move_to(target_location)</strong>. It is normally
only implemented by Exit objects. If it returns False (usually
because <strong>move_to</strong> returned False), <strong>at_after_traverse</strong> below
should not be called and instead <strong>at_failed_traverse</strong> should be
called.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>traversing_object</strong> (<em>Object</em>) Object traversing us.</p></li>
<li><p><strong>target_location</strong> (<em>Object</em>) Where target is going.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py exception">
<dt id="evennia.contrib.ingame_python.typeclasses.EventExit.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventExit.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultExit.DoesNotExist" title="evennia.objects.objects.DefaultExit.DoesNotExist"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultExit.DoesNotExist</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt id="evennia.contrib.ingame_python.typeclasses.EventExit.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventExit.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultExit.MultipleObjectsReturned" title="evennia.objects.objects.DefaultExit.MultipleObjectsReturned"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultExit.MultipleObjectsReturned</span></code></a></p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.ingame_python.typeclasses.EventExit.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.contrib.ingame_python.typeclasses.EventExit'</em><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventExit.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.ingame_python.typeclasses.EventExit.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'EventExit'</em><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventExit.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.ingame_python.typeclasses.EventObject">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.ingame_python.typeclasses.</code><code class="sig-name descname">EventObject</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventObject"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventObject" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultObject" title="evennia.objects.objects.DefaultObject"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultObject</span></code></a></p>
<p>Default object with management of events.</p>
<dl class="py attribute">
<dt id="evennia.contrib.ingame_python.typeclasses.EventObject.callbacks">
<code class="sig-name descname">callbacks</code><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventObject.callbacks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventObject.callbacks" title="Permalink to this definition"></a></dt>
<dd><p>Return the CallbackHandler.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.ingame_python.typeclasses.EventObject.at_get">
<code class="sig-name descname">at_get</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">getter</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventObject.at_get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventObject.at_get" title="Permalink to this definition"></a></dt>
<dd><p>Called by the default <strong>get</strong> command when this object has been
picked up.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>getter</strong> (<em>Object</em>) The object getting this object.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This hook cannot stop the pickup from happening. Use
permissions for that.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.ingame_python.typeclasses.EventObject.at_drop">
<code class="sig-name descname">at_drop</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">dropper</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventObject.at_drop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventObject.at_drop" title="Permalink to this definition"></a></dt>
<dd><p>Called by the default <strong>drop</strong> command when this object has been
dropped.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>dropper</strong> (<em>Object</em>) The object which just dropped this object.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This hook cannot stop the drop from happening. Use
permissions from that.</p>
</dd></dl>
<dl class="py exception">
<dt id="evennia.contrib.ingame_python.typeclasses.EventObject.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventObject.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultObject.DoesNotExist" title="evennia.objects.objects.DefaultObject.DoesNotExist"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultObject.DoesNotExist</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt id="evennia.contrib.ingame_python.typeclasses.EventObject.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventObject.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultObject.MultipleObjectsReturned" title="evennia.objects.objects.DefaultObject.MultipleObjectsReturned"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultObject.MultipleObjectsReturned</span></code></a></p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.ingame_python.typeclasses.EventObject.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.contrib.ingame_python.typeclasses.EventObject'</em><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventObject.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.ingame_python.typeclasses.EventObject.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'EventObject'</em><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventObject.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.ingame_python.typeclasses.EventRoom">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.ingame_python.typeclasses.</code><code class="sig-name descname">EventRoom</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventRoom"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventRoom" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultRoom" title="evennia.objects.objects.DefaultRoom"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultRoom</span></code></a></p>
<p>Default room with management of events.</p>
<dl class="py attribute">
<dt id="evennia.contrib.ingame_python.typeclasses.EventRoom.callbacks">
<code class="sig-name descname">callbacks</code><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventRoom.callbacks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventRoom.callbacks" title="Permalink to this definition"></a></dt>
<dd><p>Return the CallbackHandler.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.contrib.ingame_python.typeclasses.EventRoom.at_object_delete">
<code class="sig-name descname">at_object_delete</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/ingame_python/typeclasses.html#EventRoom.at_object_delete"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventRoom.at_object_delete" title="Permalink to this definition"></a></dt>
<dd><p>Called just before the database object is permanently
delete()d from the database. If this method returns False,
deletion is aborted.</p>
</dd></dl>
<dl class="py exception">
<dt id="evennia.contrib.ingame_python.typeclasses.EventRoom.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventRoom.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultRoom.DoesNotExist" title="evennia.objects.objects.DefaultRoom.DoesNotExist"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultRoom.DoesNotExist</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt id="evennia.contrib.ingame_python.typeclasses.EventRoom.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventRoom.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultRoom.MultipleObjectsReturned" title="evennia.objects.objects.DefaultRoom.MultipleObjectsReturned"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultRoom.MultipleObjectsReturned</span></code></a></p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.ingame_python.typeclasses.EventRoom.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.contrib.ingame_python.typeclasses.EventRoom'</em><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventRoom.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.ingame_python.typeclasses.EventRoom.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'EventRoom'</em><a class="headerlink" href="#evennia.contrib.ingame_python.typeclasses.EventRoom.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<div class="section" id="evennia-contrib-ingame-python-typeclasses">
<h1>evennia.contrib.ingame_python.typeclasses<a class="headerlink" href="#evennia-contrib-ingame-python-typeclasses" title="Permalink to this headline"></a></h1>
</div>

View file

@ -36,204 +36,8 @@
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="module-evennia.contrib.mapbuilder">
<span id="evennia-contrib-mapbuilder"></span><h1>evennia.contrib.mapbuilder<a class="headerlink" href="#module-evennia.contrib.mapbuilder" title="Permalink to this headline"></a></h1>
<p>Evennia World Builder</p>
<p>Contribution - Cloud_Keeper 2016</p>
<p>Build a map from a 2D ASCII map.</p>
<p>This is a command which takes two inputs:</p>
<p>≈≈≈≈≈
≈♣n♣≈ MAP_LEGEND = {(“♣”, “♠”): build_forest,
≈∩▲∩≈ (“∩”, “n”): build_mountains,
≈♠n♠≈ (“▲”): build_temple}
≈≈≈≈≈</p>
<p>A string of ASCII characters representing a map and a dictionary of functions
containing build instructions. The characters of the map are iterated over and
compared to a list of trigger characters. When a match is found the
corresponding function is executed generating the rooms, exits and objects as
defined by the users build instructions. If a character is not a match to
a provided trigger character (including spaces) it is simply skipped and the
process continues.</p>
<p>For instance, the above map represents a temple (▲) amongst mountains (n,∩)
in a forest (♣,♠) on an island surrounded by water (≈). Each character on the
first line is iterated over but as there is no match with our MAP_LEGEND it
is skipped. On the second line it finds “♣” which is a match and so the
<strong>build_forest</strong> function is called. Next the <strong>build_mountains</strong> function is
called and so on until the map is completed. Building instructions are passed
the following arguments:</p>
<blockquote>
<div><p>x - The rooms position on the maps x axis
y - The rooms position on the maps y axis
caller - The account calling the command
iteration - The current iterations number (0, 1 or 2)
room_dict - A dictionary containing room references returned by build</p>
<blockquote>
<div><p>functions where tuple coordinates are the keys (x, y).
ie room_dict[(2, 2)] will return the temple room above.</p>
</div></blockquote>
</div></blockquote>
<p>Building functions should return the room they create. By default these rooms
are used to create exits between valid adjacent rooms to the north, south,
east and west directions. This behaviour can turned off with the use of switch
arguments. In addition to turning off automatic exit generation the switches
allow the map to be iterated over a number of times. This is important for
something like custom exit building. Exits require a reference to both the
exits location and the exits destination. During the first iteration it is
possible that an exit is created pointing towards a destination that
has not yet been created resulting in error. By iterating over the map twice
the rooms can be created on the first iteration and room reliant code can be
be used on the second iteration. The iteration number and a dictionary of
references to rooms previously created is passed to the build commands.</p>
<p>Use by importing and including the command in your default_cmdsets module.
For example:</p>
<blockquote>
<div><p># mygame/commands/default_cmdsets.py</p>
<p>from evennia.contrib import mapbuilder</p>
<p></p>
<p>self.add(mapbuilder.CmdMapBuilder())</p>
</div></blockquote>
<p>You then call the command in-game using the path to the MAP and MAP_LEGEND vars
The path you provide is relative to the evennia or mygame folder.</p>
<dl class="simple">
<dt>Usage:</dt><dd><p>&#64;mapbuilder[/switch] &lt;path.to.file.MAPNAME&gt; &lt;path.to.file.MAP_LEGEND&gt;</p>
</dd>
<dt>Switches:</dt><dd><p>one - execute build instructions once without automatic exit creation.
two - execute build instructions twice without automatic exit creation.</p>
</dd>
</dl>
<p class="rubric">Example</p>
<p>&#64;mapbuilder world.gamemap.MAP world.maplegend.MAP_LEGEND
&#64;mapbuilder evennia.contrib.mapbuilder.EXAMPLE1_MAP EXAMPLE1_LEGEND
&#64;mapbuilder/two evennia.contrib.mapbuilder.EXAMPLE2_MAP EXAMPLE2_LEGEND</p>
<blockquote>
<div><p>(Legend path defaults to map path)</p>
</div></blockquote>
<p>Below are two examples showcasing the use of automatic exit generation and
custom exit generation. Whilst located, and can be used, from this module for
convenience The below example code should be in mymap.py in mygame/world.</p>
<dl class="py function">
<dt id="evennia.contrib.mapbuilder.example1_build_forest">
<code class="sig-prename descclassname">evennia.contrib.mapbuilder.</code><code class="sig-name descname">example1_build_forest</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">x</span></em>, <em class="sig-param"><span class="n">y</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/mapbuilder.html#example1_build_forest"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.mapbuilder.example1_build_forest" title="Permalink to this definition"></a></dt>
<dd><p>A basic example of build instructions. Make sure to include <a href="#id1"><span class="problematic" id="id2">**</span></a>kwargs
in the arguments and return an instance of the room for exit generation.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.contrib.mapbuilder.example1_build_mountains">
<code class="sig-prename descclassname">evennia.contrib.mapbuilder.</code><code class="sig-name descname">example1_build_mountains</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">x</span></em>, <em class="sig-param"><span class="n">y</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/mapbuilder.html#example1_build_mountains"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.mapbuilder.example1_build_mountains" title="Permalink to this definition"></a></dt>
<dd><p>A room that is a little more advanced</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.contrib.mapbuilder.example1_build_temple">
<code class="sig-prename descclassname">evennia.contrib.mapbuilder.</code><code class="sig-name descname">example1_build_temple</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">x</span></em>, <em class="sig-param"><span class="n">y</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/mapbuilder.html#example1_build_temple"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.mapbuilder.example1_build_temple" title="Permalink to this definition"></a></dt>
<dd><p>A unique room that does not need to be as general</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.contrib.mapbuilder.example2_build_forest">
<code class="sig-prename descclassname">evennia.contrib.mapbuilder.</code><code class="sig-name descname">example2_build_forest</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">x</span></em>, <em class="sig-param"><span class="n">y</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/mapbuilder.html#example2_build_forest"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.mapbuilder.example2_build_forest" title="Permalink to this definition"></a></dt>
<dd><p>A basic room</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.contrib.mapbuilder.example2_build_verticle_exit">
<code class="sig-prename descclassname">evennia.contrib.mapbuilder.</code><code class="sig-name descname">example2_build_verticle_exit</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">x</span></em>, <em class="sig-param"><span class="n">y</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/mapbuilder.html#example2_build_verticle_exit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.mapbuilder.example2_build_verticle_exit" title="Permalink to this definition"></a></dt>
<dd><p>Creates two exits to and from the two rooms north and south.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.contrib.mapbuilder.example2_build_horizontal_exit">
<code class="sig-prename descclassname">evennia.contrib.mapbuilder.</code><code class="sig-name descname">example2_build_horizontal_exit</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">x</span></em>, <em class="sig-param"><span class="n">y</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/mapbuilder.html#example2_build_horizontal_exit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.mapbuilder.example2_build_horizontal_exit" title="Permalink to this definition"></a></dt>
<dd><p>Creates two exits to and from the two rooms east and west.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.contrib.mapbuilder.build_map">
<code class="sig-prename descclassname">evennia.contrib.mapbuilder.</code><code class="sig-name descname">build_map</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">caller</span></em>, <em class="sig-param"><span class="n">game_map</span></em>, <em class="sig-param"><span class="n">legend</span></em>, <em class="sig-param"><span class="n">iterations</span><span class="o">=</span><span class="default_value">1</span></em>, <em class="sig-param"><span class="n">build_exits</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/mapbuilder.html#build_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.mapbuilder.build_map" title="Permalink to this definition"></a></dt>
<dd><p>Receives the fetched map and legend vars provided by the player.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>caller</strong> (<em>Object</em>) The creator of the map.</p></li>
<li><p><strong>game_map</strong> (<em>str</em>) An ASCII map string.</p></li>
<li><p><strong>legend</strong> (<em>dict</em>) Mapping of map symbols to object types.</p></li>
<li><p><strong>iterations</strong> (<em>int</em>) The number of iteration passes.</p></li>
<li><p><strong>build_exits</strong> (<em>bool</em>) Create exits between new rooms.</p></li>
</ul>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>The map
is iterated over character by character, comparing it to the trigger
characters in the legend var and executing the build instructions on
finding a match. The map is iterated over according to the <strong>iterations</strong>
value and exits are optionally generated between adjacent rooms according
to the <strong>build_exits</strong> value.</p>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.mapbuilder.CmdMapBuilder">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.mapbuilder.</code><code class="sig-name descname">CmdMapBuilder</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/mapbuilder.html#CmdMapBuilder"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.mapbuilder.CmdMapBuilder" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.default.muxcommand.html#evennia.commands.default.muxcommand.MuxCommand" title="evennia.commands.default.muxcommand.MuxCommand"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.commands.default.muxcommand.MuxCommand</span></code></a></p>
<p>Build a map from a 2D ASCII map.</p>
<dl class="simple">
<dt>Usage:</dt><dd><p>&#64;mapbuilder[/switch] &lt;path.to.file.MAPNAME&gt; &lt;path.to.file.MAP_LEGEND&gt;</p>
</dd>
<dt>Switches:</dt><dd><p>one - execute build instructions once without automatic exit creation
two - execute build instructions twice without automatic exit creation</p>
</dd>
</dl>
<p class="rubric">Example</p>
<p>&#64;mapbuilder world.gamemap.MAP world.maplegend.MAP_LEGEND
&#64;mapbuilder evennia.contrib.mapbuilder.EXAMPLE1_MAP EXAMPLE1_LEGEND
&#64;mapbuilder/two evennia.contrib.mapbuilder.EXAMPLE2_MAP EXAMPLE2_LEGEND</p>
<blockquote>
<div><p>(Legend path defaults to map path)</p>
</div></blockquote>
<p>This is a command which takes two inputs:
A string of ASCII characters representing a map and a dictionary of
functions containing build instructions. The characters of the map are
iterated over and compared to a list of trigger characters. When a match
is found the corresponding function is executed generating the rooms,
exits and objects as defined by the users build instructions. If a
character is not a match to a provided trigger character (including spaces)
it is simply skipped and the process continues. By default exits are
automatically generated but is turned off by switches which also determines
how many times the map is iterated over.</p>
<dl class="py attribute">
<dt id="evennia.contrib.mapbuilder.CmdMapBuilder.key">
<code class="sig-name descname">key</code><em class="property"> = '&#64;mapbuilder'</em><a class="headerlink" href="#evennia.contrib.mapbuilder.CmdMapBuilder.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.mapbuilder.CmdMapBuilder.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['&#64;buildmap']</em><a class="headerlink" href="#evennia.contrib.mapbuilder.CmdMapBuilder.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.mapbuilder.CmdMapBuilder.locks">
<code class="sig-name descname">locks</code><em class="property"> = 'cmd:superuser()'</em><a class="headerlink" href="#evennia.contrib.mapbuilder.CmdMapBuilder.locks" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.mapbuilder.CmdMapBuilder.help_category">
<code class="sig-name descname">help_category</code><em class="property"> = 'building'</em><a class="headerlink" href="#evennia.contrib.mapbuilder.CmdMapBuilder.help_category" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.mapbuilder.CmdMapBuilder.func">
<code class="sig-name descname">func</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/mapbuilder.html#CmdMapBuilder.func"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.mapbuilder.CmdMapBuilder.func" title="Permalink to this definition"></a></dt>
<dd><p>Starts the processor.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.mapbuilder.CmdMapBuilder.lock_storage">
<code class="sig-name descname">lock_storage</code><em class="property"> = 'cmd:superuser()'</em><a class="headerlink" href="#evennia.contrib.mapbuilder.CmdMapBuilder.lock_storage" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<div class="section" id="evennia-contrib-mapbuilder">
<h1>evennia.contrib.mapbuilder<a class="headerlink" href="#evennia-contrib-mapbuilder" title="Permalink to this headline"></a></h1>
</div>

View file

@ -36,113 +36,8 @@
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="module-evennia.contrib.menu_login">
<span id="evennia-contrib-menu-login"></span><h1>evennia.contrib.menu_login<a class="headerlink" href="#module-evennia.contrib.menu_login" title="Permalink to this headline"></a></h1>
<p>A login menu using EvMenu.</p>
<p>Contribution - Vincent-lg 2016, Griatch 2019 (rework for modern EvMenu)</p>
<p>This changes the Evennia login to ask for the account name and password in
sequence instead of requiring you to enter both at once.</p>
<p>To install, add this line to the settings file (<strong>mygame/server/conf/settings.py</strong>):</p>
<blockquote>
<div><p>CMDSET_UNLOGGEDIN = “evennia.contrib.menu_login.UnloggedinCmdSet”</p>
</div></blockquote>
<p>Reload the server and the new connection method will be active. Note that you must
independently change the connection screen to match this login style, by editing
<strong>mygame/server/conf/connection_screens.py</strong>.</p>
<p>This uses Evennias menu system EvMenu and is triggered by a command that is
called automatically when a new user connects.</p>
<dl class="py function">
<dt id="evennia.contrib.menu_login.node_enter_username">
<code class="sig-prename descclassname">evennia.contrib.menu_login.</code><code class="sig-name descname">node_enter_username</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">caller</span></em>, <em class="sig-param"><span class="n">raw_text</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/menu_login.html#node_enter_username"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.menu_login.node_enter_username" title="Permalink to this definition"></a></dt>
<dd><p>Start node of menu
Start login by displaying the connection screen and ask for a user name.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.contrib.menu_login.node_enter_password">
<code class="sig-prename descclassname">evennia.contrib.menu_login.</code><code class="sig-name descname">node_enter_password</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">caller</span></em>, <em class="sig-param"><span class="n">raw_string</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/menu_login.html#node_enter_password"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.menu_login.node_enter_password" title="Permalink to this definition"></a></dt>
<dd><p>Handle password input.</p>
</dd></dl>
<dl class="py function">
<dt id="evennia.contrib.menu_login.node_quit_or_login">
<code class="sig-prename descclassname">evennia.contrib.menu_login.</code><code class="sig-name descname">node_quit_or_login</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">caller</span></em>, <em class="sig-param"><span class="n">raw_text</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/menu_login.html#node_quit_or_login"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.menu_login.node_quit_or_login" title="Permalink to this definition"></a></dt>
<dd><p>Exit menu, either by disconnecting or logging in.</p>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.menu_login.UnloggedinCmdSet">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.menu_login.</code><code class="sig-name descname">UnloggedinCmdSet</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">cmdsetobj</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">key</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/menu_login.html#UnloggedinCmdSet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.menu_login.UnloggedinCmdSet" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.cmdset.html#evennia.commands.cmdset.CmdSet" title="evennia.commands.cmdset.CmdSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.commands.cmdset.CmdSet</span></code></a></p>
<p>Cmdset for the unloggedin state</p>
<dl class="py attribute">
<dt id="evennia.contrib.menu_login.UnloggedinCmdSet.key">
<code class="sig-name descname">key</code><em class="property"> = 'DefaultUnloggedin'</em><a class="headerlink" href="#evennia.contrib.menu_login.UnloggedinCmdSet.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.menu_login.UnloggedinCmdSet.priority">
<code class="sig-name descname">priority</code><em class="property"> = 0</em><a class="headerlink" href="#evennia.contrib.menu_login.UnloggedinCmdSet.priority" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.menu_login.UnloggedinCmdSet.at_cmdset_creation">
<code class="sig-name descname">at_cmdset_creation</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/menu_login.html#UnloggedinCmdSet.at_cmdset_creation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.menu_login.UnloggedinCmdSet.at_cmdset_creation" title="Permalink to this definition"></a></dt>
<dd><p>Called when cmdset is first created.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.menu_login.UnloggedinCmdSet.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.contrib.menu_login.UnloggedinCmdSet'</em><a class="headerlink" href="#evennia.contrib.menu_login.UnloggedinCmdSet.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.contrib.menu_login.CmdUnloggedinLook">
<em class="property">class </em><code class="sig-prename descclassname">evennia.contrib.menu_login.</code><code class="sig-name descname">CmdUnloggedinLook</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/menu_login.html#CmdUnloggedinLook"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.menu_login.CmdUnloggedinLook" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.commands.command.html#evennia.commands.command.Command" title="evennia.commands.command.Command"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.commands.command.Command</span></code></a></p>
<p>An unloggedin version of the look command. This is called by the server
when the account first connects. It sets up the menu before handing off
to the menus own look command.</p>
<dl class="py attribute">
<dt id="evennia.contrib.menu_login.CmdUnloggedinLook.key">
<code class="sig-name descname">key</code><em class="property"> = '__unloggedin_look_command'</em><a class="headerlink" href="#evennia.contrib.menu_login.CmdUnloggedinLook.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.menu_login.CmdUnloggedinLook.locks">
<code class="sig-name descname">locks</code><em class="property"> = 'cmd:all()'</em><a class="headerlink" href="#evennia.contrib.menu_login.CmdUnloggedinLook.locks" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.menu_login.CmdUnloggedinLook.arg_regex">
<code class="sig-name descname">arg_regex</code><em class="property"> = re.compile('^$', re.IGNORECASE)</em><a class="headerlink" href="#evennia.contrib.menu_login.CmdUnloggedinLook.arg_regex" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.contrib.menu_login.CmdUnloggedinLook.func">
<code class="sig-name descname">func</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/contrib/menu_login.html#CmdUnloggedinLook.func"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.contrib.menu_login.CmdUnloggedinLook.func" title="Permalink to this definition"></a></dt>
<dd><p>Run the menu using the nodes in this module.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.menu_login.CmdUnloggedinLook.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = []</em><a class="headerlink" href="#evennia.contrib.menu_login.CmdUnloggedinLook.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.menu_login.CmdUnloggedinLook.help_category">
<code class="sig-name descname">help_category</code><em class="property"> = 'general'</em><a class="headerlink" href="#evennia.contrib.menu_login.CmdUnloggedinLook.help_category" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.contrib.menu_login.CmdUnloggedinLook.lock_storage">
<code class="sig-name descname">lock_storage</code><em class="property"> = 'cmd:all()'</em><a class="headerlink" href="#evennia.contrib.menu_login.CmdUnloggedinLook.lock_storage" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<div class="section" id="evennia-contrib-menu-login">
<h1>evennia.contrib.menu_login<a class="headerlink" href="#evennia-contrib-menu-login" title="Permalink to this headline"></a></h1>
</div>

View file

@ -559,7 +559,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.turnbattle.tb_basic.CmdPass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['wait', 'hold']</em><a class="headerlink" href="#evennia.contrib.turnbattle.tb_basic.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['hold', 'wait']</em><a class="headerlink" href="#evennia.contrib.turnbattle.tb_basic.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -676,7 +676,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.turnbattle.tb_equip.CmdPass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['wait', 'hold']</em><a class="headerlink" href="#evennia.contrib.turnbattle.tb_equip.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['hold', 'wait']</em><a class="headerlink" href="#evennia.contrib.turnbattle.tb_equip.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -710,7 +710,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.turnbattle.tb_items.CmdPass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['wait', 'hold']</em><a class="headerlink" href="#evennia.contrib.turnbattle.tb_items.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['hold', 'wait']</em><a class="headerlink" href="#evennia.contrib.turnbattle.tb_items.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -582,7 +582,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.turnbattle.tb_magic.CmdPass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['wait', 'hold']</em><a class="headerlink" href="#evennia.contrib.turnbattle.tb_magic.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['hold', 'wait']</em><a class="headerlink" href="#evennia.contrib.turnbattle.tb_magic.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -994,7 +994,7 @@ if there are still any actions you can take.</p>
<dl class="py attribute">
<dt id="evennia.contrib.turnbattle.tb_range.CmdPass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['wait', 'hold']</em><a class="headerlink" href="#evennia.contrib.turnbattle.tb_range.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['hold', 'wait']</em><a class="headerlink" href="#evennia.contrib.turnbattle.tb_range.CmdPass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -104,7 +104,7 @@ push the lid of the button away.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorial_examples.cmdset_red_button.CmdPush.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['push', 'press button', 'press']</em><a class="headerlink" href="#evennia.contrib.tutorial_examples.cmdset_red_button.CmdPush.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['press', 'press button', 'push']</em><a class="headerlink" href="#evennia.contrib.tutorial_examples.cmdset_red_button.CmdPush.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -152,7 +152,7 @@ lid-state respectively.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorial_examples.cmdset_red_button.CmdSmashGlass.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['break lid', 'smash', 'smash lid']</em><a class="headerlink" href="#evennia.contrib.tutorial_examples.cmdset_red_button.CmdSmashGlass.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['smash', 'break lid', 'smash lid']</em><a class="headerlink" href="#evennia.contrib.tutorial_examples.cmdset_red_button.CmdSmashGlass.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -281,7 +281,7 @@ of causing the lamp to break.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorial_examples.cmdset_red_button.CmdBlindLook.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['examine', 'l', 'get', 'ex', 'listen', 'feel']</em><a class="headerlink" href="#evennia.contrib.tutorial_examples.cmdset_red_button.CmdBlindLook.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['examine', 'listen', 'ex', 'get', 'feel', 'l']</em><a class="headerlink" href="#evennia.contrib.tutorial_examples.cmdset_red_button.CmdBlindLook.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -476,7 +476,7 @@ shift green root up/down</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorial_world.objects.CmdShiftRoot.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['shiftroot', 'push', 'pull', 'move']</em><a class="headerlink" href="#evennia.contrib.tutorial_world.objects.CmdShiftRoot.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['pull', 'move', 'push', 'shiftroot']</em><a class="headerlink" href="#evennia.contrib.tutorial_world.objects.CmdShiftRoot.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -524,7 +524,7 @@ yellow/green - horizontal roots</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorial_world.objects.CmdPressButton.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['push button', 'press button', 'button']</em><a class="headerlink" href="#evennia.contrib.tutorial_world.objects.CmdPressButton.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['press button', 'push button', 'button']</em><a class="headerlink" href="#evennia.contrib.tutorial_world.objects.CmdPressButton.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -689,7 +689,7 @@ parry - forgoes your attack but will make you harder to hit on next</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorial_world.objects.CmdAttack.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['slash', 'pierce', 'kill', 'bash', 'thrust', 'chop', 'hit', 'stab', 'parry', 'defend', 'fight']</em><a class="headerlink" href="#evennia.contrib.tutorial_world.objects.CmdAttack.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['thrust', 'pierce', 'bash', 'hit', 'fight', 'defend', 'stab', 'slash', 'parry', 'chop', 'kill']</em><a class="headerlink" href="#evennia.contrib.tutorial_world.objects.CmdAttack.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -672,7 +672,7 @@ if they fall off the bridge.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorial_world.rooms.CmdBridgeHelp.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['?', 'h']</em><a class="headerlink" href="#evennia.contrib.tutorial_world.rooms.CmdBridgeHelp.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['h', '?']</em><a class="headerlink" href="#evennia.contrib.tutorial_world.rooms.CmdBridgeHelp.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
@ -819,7 +819,7 @@ to find something.</p>
<dl class="py attribute">
<dt id="evennia.contrib.tutorial_world.rooms.CmdLookDark.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['fiddle', 'l', 'search', 'feel around', 'feel']</em><a class="headerlink" href="#evennia.contrib.tutorial_world.rooms.CmdLookDark.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['search', 'feel', 'fiddle', 'l', 'feel around']</em><a class="headerlink" href="#evennia.contrib.tutorial_world.rooms.CmdLookDark.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -39,24 +39,21 @@
<div class="section" id="module-evennia.utils.ansi">
<span id="evennia-utils-ansi"></span><h1>evennia.utils.ansi<a class="headerlink" href="#module-evennia.utils.ansi" title="Permalink to this headline"></a></h1>
<p>ANSI - Gives colour to text.</p>
<p>Use the codes defined in ANSIPARSER in your text
to apply colour to text according to the ANSI standard.</p>
<p>Use the codes defined in ANSIPARSER in your text to apply colour to text
according to the ANSI standard.</p>
<p>Examples:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s2">&quot;This is |rRed text|n and this is normal again.&quot;</span>
</pre></div>
</div>
<p>Mostly you should not need to call <strong>parse_ansi()</strong> explicitly;
it is run by Evennia just before returning data to/from the
user. Depreciated example forms are available by extending
the ansi mapping.</p>
<p>Mostly you should not need to call <strong>parse_ansi()</strong> explicitly; it is run by
Evennia just before returning data to/from the user. Depreciated example forms
are available by extending the ansi mapping.</p>
<dl class="py class">
<dt id="evennia.utils.ansi.ANSIParser">
<em class="property">class </em><code class="sig-prename descclassname">evennia.utils.ansi.</code><code class="sig-name descname">ANSIParser</code><a class="reference internal" href="../_modules/evennia/utils/ansi.html#ANSIParser"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.ansi.ANSIParser" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>A class that parses ANSI markup
to ANSI command sequences</p>
<p>We also allow to escape colour codes
by prepending with an extra <a href="#id1"><span class="problematic" id="id2">|</span></a>.</p>
<p>A class that parses ANSI markup to ANSI command sequences.</p>
<p>We also allow to escape colour codes by prepending with an extra <strong>|</strong>.</p>
<dl class="py attribute">
<dt id="evennia.utils.ansi.ANSIParser.ansi_map">
<code class="sig-name descname">ansi_map</code><em class="property"> = [('|n', '\x1b[0m'), ('|/', '\r\n'), ('|-', '\t'), ('|&gt;', ' '), ('|_', ' '), ('|*', '\x1b[7m'), ('|^', '\x1b[5m'), ('|u', '\x1b[4m'), ('|r', '\x1b[1m\x1b[31m'), ('|g', '\x1b[1m\x1b[32m'), ('|y', '\x1b[1m\x1b[33m'), ('|b', '\x1b[1m\x1b[34m'), ('|m', '\x1b[1m\x1b[35m'), ('|c', '\x1b[1m\x1b[36m'), ('|w', '\x1b[1m\x1b[37m'), ('|x', '\x1b[1m\x1b[30m'), ('|R', '\x1b[22m\x1b[31m'), ('|G', '\x1b[22m\x1b[32m'), ('|Y', '\x1b[22m\x1b[33m'), ('|B', '\x1b[22m\x1b[34m'), ('|M', '\x1b[22m\x1b[35m'), ('|C', '\x1b[22m\x1b[36m'), ('|W', '\x1b[22m\x1b[37m'), ('|X', '\x1b[22m\x1b[30m'), ('|h', '\x1b[1m'), ('|H', '\x1b[22m'), ('|!R', '\x1b[31m'), ('|!G', '\x1b[32m'), ('|!Y', '\x1b[33m'), ('|!B', '\x1b[34m'), ('|!M', '\x1b[35m'), ('|!C', '\x1b[36m'), ('|!W', '\x1b[37m'), ('|!X', '\x1b[30m'), ('|[R', '\x1b[41m'), ('|[G', '\x1b[42m'), ('|[Y', '\x1b[43m'), ('|[B', '\x1b[44m'), ('|[M', '\x1b[45m'), ('|[C', '\x1b[46m'), ('|[W', '\x1b[47m'), ('|[X', '\x1b[40m')]</em><a class="headerlink" href="#evennia.utils.ansi.ANSIParser.ansi_map" title="Permalink to this definition"></a></dt>

View file

@ -79,12 +79,9 @@ target.</p></li>
<li><p><strong>nohome</strong> (<em>bool</em>) This allows the creation of objects without a
default home location; only used when creating the default
location itself or during unittests.</p></li>
<li><p><strong>attributes</strong> (<a class="reference internal" href="evennia.contrib.barter.html#evennia.contrib.barter.TradeHandler.list" title="evennia.contrib.barter.TradeHandler.list"><em>list</em></a>) <p>Tuples on the form (key, value) or (key, value, category),
(key, value, lockstring) or (key, value, lockstring, default_access).</p>
<blockquote>
<div><p>to set as Attributes on the new object.</p>
</div></blockquote>
</p></li>
<li><p><strong>attributes</strong> (<a class="reference internal" href="evennia.contrib.barter.html#evennia.contrib.barter.TradeHandler.list" title="evennia.contrib.barter.TradeHandler.list"><em>list</em></a>) Tuples on the form (key, value) or (key, value, category),
(key, value, lockstring) or (key, value, lockstring, default_access).
to set as Attributes on the new object.</p></li>
<li><p><strong>nattributes</strong> (<a class="reference internal" href="evennia.contrib.barter.html#evennia.contrib.barter.TradeHandler.list" title="evennia.contrib.barter.TradeHandler.list"><em>list</em></a>) Non-persistent tuples on the form (key, value). Note that
adding this rarely makes sense since this data will not survive a reload.</p></li>
</ul>
@ -93,8 +90,10 @@ adding this rarely makes sense since this data will not survive a reload.</p></l
<dd class="field-even"><p><em>object (Object)</em> A newly created object of the given typeclass.</p>
</dd>
<dt class="field-odd">Raises</dt>
<dd class="field-odd"><p><a class="reference internal" href="evennia.objects.models.html#evennia.objects.models.ObjectDB.DoesNotExist" title="evennia.objects.models.ObjectDB.DoesNotExist"><strong>ObjectDB.DoesNotExist</strong></a> If trying to create an Object with
<strong>location</strong> or <strong>home</strong> that cant be found.</p>
<dd class="field-odd"><ul class="simple">
<li><p><a class="reference internal" href="evennia.objects.models.html#evennia.objects.models.ObjectDB.DoesNotExist" title="evennia.objects.models.ObjectDB.DoesNotExist"><strong>ObjectDB.DoesNotExist</strong></a> If trying to create an Object with</p></li>
<li><p><strong>location</strong> </p></li>
</ul>
</dd>
</dl>
</dd></dl>

View file

@ -264,7 +264,7 @@ indentation.</p>
<dl class="py attribute">
<dt id="evennia.utils.eveditor.CmdEditorGroup.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = [':UU', ':fi', ':p', ':!', ':=', ':u', ':fd', ':&gt;', ':h', ':w', ':uu', ':s', ':y', ':dd', ':x', ':q', ':S', ':A', ':f', ':echo', ':r', ':::', ':wq', ':', '::', ':j', ':I', ':&lt;', ':DD', ':q!', ':i', ':dw']</em><a class="headerlink" href="#evennia.utils.eveditor.CmdEditorGroup.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = [':I', ':=', ':fd', '::', ':fi', ':echo', ':&gt;', ':', ':u', ':s', ':dd', ':uu', ':p', ':A', ':f', ':UU', ':&lt;', ':wq', ':q', ':!', ':i', ':::', ':S', ':h', ':q!', ':dw', ':y', ':w', ':DD', ':r', ':x', ':j']</em><a class="headerlink" href="#evennia.utils.eveditor.CmdEditorGroup.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -74,7 +74,7 @@ the <strong>caller.msg()</strong> construct every time the page is updated.</p>
<dl class="py attribute">
<dt id="evennia.utils.evmore.CmdMore.aliases">
<code class="sig-name descname">aliases</code><em class="property"> = ['next', 't', 'end', 'q', 'top', 'a', 'e', 'b', 'abort', 'n', 'back', 'quit']</em><a class="headerlink" href="#evennia.utils.evmore.CmdMore.aliases" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">aliases</code><em class="property"> = ['a', 'n', 'e', 'next', 'abort', 'quit', 'q', 't', 'end', 'top', 'b', 'back']</em><a class="headerlink" href="#evennia.utils.evmore.CmdMore.aliases" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -308,7 +308,7 @@ lines of the previous log to the start of the new log, in order
to preserve a continuous chat history for channel log files.</p>
<dl class="py attribute">
<dt id="evennia.utils.logger.EvenniaLogFile.settings">
<code class="sig-name descname">settings</code><em class="property"> = &lt;LazySettings &quot;server.conf.settings&quot;&gt;</em><a class="headerlink" href="#evennia.utils.logger.EvenniaLogFile.settings" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">settings</code><em class="property"> = &lt;LazySettings &quot;evennia.settings_default&quot;&gt;</em><a class="headerlink" href="#evennia.utils.logger.EvenniaLogFile.settings" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">

View file

@ -937,7 +937,7 @@ importing directly from <strong>path</strong> doesnt work.</p></li>
<dl class="py function">
<dt id="evennia.utils.utils.class_from_module">
<code class="sig-prename descclassname">evennia.utils.utils.</code><code class="sig-name descname">class_from_module</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">defaultpaths</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/utils.html#class_from_module"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.utils.class_from_module" title="Permalink to this definition"></a></dt>
<code class="sig-prename descclassname">evennia.utils.utils.</code><code class="sig-name descname">class_from_module</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">defaultpaths</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">fallback</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/utils/utils.html#class_from_module"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.utils.utils.class_from_module" title="Permalink to this definition"></a></dt>
<dd><p>Return a class from a module, given the modules path. This is
primarily used to convert db_typeclass_path:s to classes.</p>
<dl class="field-list simple">
@ -946,6 +946,10 @@ primarily used to convert db_typeclass_path:s to classes.</p>
<li><p><strong>path</strong> (<em>str</em>) Full Python dot-path to module.</p></li>
<li><p><strong>defaultpaths</strong> (<em>iterable</em><em>, </em><em>optional</em>) If a direct import from <strong>path</strong> fails,
try subsequent imports by prepending those paths to <strong>path</strong>.</p></li>
<li><p><strong>fallback</strong> (<em>str</em>) If all other attempts fail, use this path as a fallback.
This is intended as a last-resport. In the example of Evennia
loading, this would be a path to a default parent class in the
evennia repo itself.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
@ -959,7 +963,7 @@ try subsequent imports by prepending those paths to <strong>path</strong>.</p></
<dl class="py function">
<dt id="evennia.utils.utils.object_from_module">
<code class="sig-prename descclassname">evennia.utils.utils.</code><code class="sig-name descname">object_from_module</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">defaultpaths</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.utils.utils.object_from_module" title="Permalink to this definition"></a></dt>
<code class="sig-prename descclassname">evennia.utils.utils.</code><code class="sig-name descname">object_from_module</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">defaultpaths</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">fallback</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.utils.utils.object_from_module" title="Permalink to this definition"></a></dt>
<dd><p>Return a class from a module, given the modules path. This is
primarily used to convert db_typeclass_path:s to classes.</p>
<dl class="field-list simple">
@ -968,6 +972,10 @@ primarily used to convert db_typeclass_path:s to classes.</p>
<li><p><strong>path</strong> (<em>str</em>) Full Python dot-path to module.</p></li>
<li><p><strong>defaultpaths</strong> (<em>iterable</em><em>, </em><em>optional</em>) If a direct import from <strong>path</strong> fails,
try subsequent imports by prepending those paths to <strong>path</strong>.</p></li>
<li><p><strong>fallback</strong> (<em>str</em>) If all other attempts fail, use this path as a fallback.
This is intended as a last-resport. In the example of Evennia
loading, this would be a path to a default parent class in the
evennia repo itself.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>

View file

@ -93,7 +93,7 @@ the form.</p>
<dl class="py attribute">
<dt id="evennia.web.website.forms.AccountForm.Meta.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.web.website.forms.AccountForm.Meta.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">typeclasses.accounts.Account</span></code></p>
<dd><p>alias of <a class="reference internal" href="evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount" title="evennia.accounts.accounts.DefaultAccount"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.accounts.DefaultAccount</span></code></a></p>
</dd></dl>
<dl class="py attribute">
@ -145,7 +145,7 @@ the form.</p>
<dl class="py attribute">
<dt id="evennia.web.website.forms.ObjectForm.Meta.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.web.website.forms.ObjectForm.Meta.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">typeclasses.objects.Object</span></code></p>
<dd><p>alias of <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultObject" title="evennia.objects.objects.DefaultObject"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultObject</span></code></a></p>
</dd></dl>
<dl class="py attribute">
@ -216,7 +216,7 @@ the form.</p>
<dl class="py attribute">
<dt id="evennia.web.website.forms.CharacterForm.Meta.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.web.website.forms.CharacterForm.Meta.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">typeclasses.characters.Character</span></code></p>
<dd><p>alias of <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter" title="evennia.objects.objects.DefaultCharacter"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultCharacter</span></code></a></p>
</dd></dl>
<dl class="py attribute">

View file

@ -193,7 +193,7 @@ permissions to actually <em>do</em> things to it.</p>
<dl class="py attribute">
<dt id="evennia.web.website.views.ObjectDetailView.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.web.website.views.ObjectDetailView.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">typeclasses.objects.Object</span></code></p>
<dd><p>alias of <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultObject" title="evennia.objects.objects.DefaultObject"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultObject</span></code></a></p>
</dd></dl>
<dl class="py attribute">
@ -250,7 +250,7 @@ default title for the page.</p>
<dl class="py attribute">
<dt id="evennia.web.website.views.ObjectCreateView.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.web.website.views.ObjectCreateView.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">typeclasses.objects.Object</span></code></p>
<dd><p>alias of <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultObject" title="evennia.objects.objects.DefaultObject"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultObject</span></code></a></p>
</dd></dl>
</dd></dl>
@ -267,7 +267,7 @@ permissions to delete the requested object.</p>
<dl class="py attribute">
<dt id="evennia.web.website.views.ObjectDeleteView.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.web.website.views.ObjectDeleteView.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">typeclasses.objects.Object</span></code></p>
<dd><p>alias of <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultObject" title="evennia.objects.objects.DefaultObject"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultObject</span></code></a></p>
</dd></dl>
<dl class="py attribute">
@ -304,7 +304,7 @@ it does not update core model fields, <em>only</em> object attributes!</p>
<dl class="py attribute">
<dt id="evennia.web.website.views.ObjectUpdateView.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.web.website.views.ObjectUpdateView.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">typeclasses.objects.Object</span></code></p>
<dd><p>alias of <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultObject" title="evennia.objects.objects.DefaultObject"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultObject</span></code></a></p>
</dd></dl>
<dl class="py attribute">
@ -363,7 +363,7 @@ with Account objects instead of generic Objects or otherwise.</p>
<dl class="py attribute">
<dt id="evennia.web.website.views.AccountMixin.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.web.website.views.AccountMixin.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">typeclasses.accounts.Account</span></code></p>
<dd><p>alias of <a class="reference internal" href="evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount" title="evennia.accounts.accounts.DefaultAccount"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.accounts.accounts.DefaultAccount</span></code></a></p>
</dd></dl>
<dl class="py attribute">
@ -386,7 +386,7 @@ with Account objects instead of generic Objects or otherwise.</p>
<dl class="py attribute">
<dt id="evennia.web.website.views.AccountCreateView.success_url">
<code class="sig-name descname">success_url</code><em class="property"> = '/auth/login/'</em><a class="headerlink" href="#evennia.web.website.views.AccountCreateView.success_url" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">success_url</code><a class="headerlink" href="#evennia.web.website.views.AccountCreateView.success_url" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
@ -410,7 +410,7 @@ with Character objects instead of generic Objects or otherwise.</p>
<dl class="py attribute">
<dt id="evennia.web.website.views.CharacterMixin.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.web.website.views.CharacterMixin.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">typeclasses.characters.Character</span></code></p>
<dd><p>alias of <a class="reference internal" href="evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter" title="evennia.objects.objects.DefaultCharacter"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultCharacter</span></code></a></p>
</dd></dl>
<dl class="py attribute">
@ -421,7 +421,7 @@ with Character objects instead of generic Objects or otherwise.</p>
<dl class="py attribute">
<dt id="evennia.web.website.views.CharacterMixin.success_url">
<code class="sig-name descname">success_url</code><em class="property"> = '/characters/manage/'</em><a class="headerlink" href="#evennia.web.website.views.CharacterMixin.success_url" title="Permalink to this definition"></a></dt>
<code class="sig-name descname">success_url</code><a class="headerlink" href="#evennia.web.website.views.CharacterMixin.success_url" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
@ -622,7 +622,7 @@ with HelpEntry objects instead of generic Objects or otherwise.</p>
<dl class="py attribute">
<dt id="evennia.web.website.views.ChannelMixin.model">
<code class="sig-name descname">model</code><a class="headerlink" href="#evennia.web.website.views.ChannelMixin.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">typeclasses.channels.Channel</span></code></p>
<dd><p>alias of <a class="reference internal" href="evennia.comms.comms.html#evennia.comms.comms.DefaultChannel" title="evennia.comms.comms.DefaultChannel"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.comms.comms.DefaultChannel</span></code></a></p>
</dd></dl>
<dl class="py attribute">

View file

@ -844,10 +844,6 @@
<li><a href="api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMail.aliases">(evennia.contrib.mail.CmdMail attribute)</a>
</li>
<li><a href="api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMailCharacter.aliases">(evennia.contrib.mail.CmdMailCharacter attribute)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.CmdMapBuilder.aliases">(evennia.contrib.mapbuilder.CmdMapBuilder attribute)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.CmdUnloggedinLook.aliases">(evennia.contrib.menu_login.CmdUnloggedinLook attribute)</a>
</li>
<li><a href="api/evennia.contrib.multidescer.html#evennia.contrib.multidescer.CmdMultiDesc.aliases">(evennia.contrib.multidescer.CmdMultiDesc attribute)</a>
</li>
@ -1146,18 +1142,10 @@
<li><a href="api/evennia.server.sessionhandler.html#evennia.server.sessionhandler.ServerSessionHandler.announce_all">(evennia.server.sessionhandler.ServerSessionHandler method)</a>
</li>
</ul></li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.announce_move_from">announce_move_from() (evennia.contrib.ingame_python.typeclasses.EventCharacter method)</a>
<ul>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.announce_move_from">(evennia.objects.objects.DefaultObject method)</a>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.announce_move_from">announce_move_from() (evennia.objects.objects.DefaultObject method)</a>
</li>
</ul></li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.announce_move_to">announce_move_to() (evennia.contrib.ingame_python.typeclasses.EventCharacter method)</a>
<ul>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.announce_move_to">(evennia.objects.objects.DefaultObject method)</a>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.announce_move_to">announce_move_to() (evennia.objects.objects.DefaultObject method)</a>
</li>
</ul></li>
<li><a href="api/evennia.utils.ansi.html#evennia.utils.ansi.ANSIParser.ansi_escapes">ansi_escapes (evennia.utils.ansi.ANSIParser attribute)</a>
</li>
<li><a href="api/evennia.utils.ansi.html#evennia.utils.ansi.ANSIParser.ansi_map">ansi_map (evennia.utils.ansi.ANSIParser attribute)</a>
@ -1244,8 +1232,6 @@
<li><a href="api/evennia.contrib.clothing.html#evennia.contrib.clothing.CmdGive.arg_regex">(evennia.contrib.clothing.CmdGive attribute)</a>
</li>
<li><a href="api/evennia.contrib.clothing.html#evennia.contrib.clothing.CmdInventory.arg_regex">(evennia.contrib.clothing.CmdInventory attribute)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.CmdUnloggedinLook.arg_regex">(evennia.contrib.menu_login.CmdUnloggedinLook attribute)</a>
</li>
<li><a href="api/evennia.utils.eveditor.html#evennia.utils.eveditor.CmdEditorGroup.arg_regex">(evennia.utils.eveditor.CmdEditorGroup attribute)</a>
</li>
@ -1300,11 +1286,9 @@
</ul></li>
<li><a href="api/evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount.at_account_creation">at_account_creation() (evennia.accounts.accounts.DefaultAccount method)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_after_move">at_after_move() (evennia.contrib.ingame_python.typeclasses.EventCharacter method)</a>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.at_after_move">at_after_move() (evennia.objects.objects.DefaultCharacter method)</a>
<ul>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.at_after_move">(evennia.objects.objects.DefaultCharacter method)</a>
</li>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_after_move">(evennia.objects.objects.DefaultObject method)</a>
</li>
</ul></li>
@ -1338,11 +1322,9 @@
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_before_give">(evennia.objects.objects.DefaultObject method)</a>
</li>
</ul></li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_before_move">at_before_move() (evennia.contrib.ingame_python.typeclasses.EventCharacter method)</a>
<li><a href="api/evennia.contrib.turnbattle.tb_basic.html#evennia.contrib.turnbattle.tb_basic.TBBasicCharacter.at_before_move">at_before_move() (evennia.contrib.turnbattle.tb_basic.TBBasicCharacter method)</a>
<ul>
<li><a href="api/evennia.contrib.turnbattle.tb_basic.html#evennia.contrib.turnbattle.tb_basic.TBBasicCharacter.at_before_move">(evennia.contrib.turnbattle.tb_basic.TBBasicCharacter method)</a>
</li>
<li><a href="api/evennia.contrib.turnbattle.tb_equip.html#evennia.contrib.turnbattle.tb_equip.TBEquipCharacter.at_before_move">(evennia.contrib.turnbattle.tb_equip.TBEquipCharacter method)</a>
</li>
<li><a href="api/evennia.contrib.turnbattle.tb_items.html#evennia.contrib.turnbattle.tb_items.TBItemsCharacter.at_before_move">(evennia.contrib.turnbattle.tb_items.TBItemsCharacter method)</a>
@ -1354,11 +1336,9 @@
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_before_move">(evennia.objects.objects.DefaultObject method)</a>
</li>
</ul></li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_before_say">at_before_say() (evennia.contrib.ingame_python.typeclasses.EventCharacter method)</a>
<li><a href="api/evennia.contrib.rpsystem.html#evennia.contrib.rpsystem.ContribRPCharacter.at_before_say">at_before_say() (evennia.contrib.rpsystem.ContribRPCharacter method)</a>
<ul>
<li><a href="api/evennia.contrib.rpsystem.html#evennia.contrib.rpsystem.ContribRPCharacter.at_before_say">(evennia.contrib.rpsystem.ContribRPCharacter method)</a>
</li>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_before_say">(evennia.objects.objects.DefaultObject method)</a>
</li>
</ul></li>
@ -1386,8 +1366,6 @@
<li><a href="api/evennia.contrib.dice.html#evennia.contrib.dice.DiceCmdSet.at_cmdset_creation">(evennia.contrib.dice.DiceCmdSet method)</a>
</li>
<li><a href="api/evennia.contrib.extended_room.html#evennia.contrib.extended_room.ExtendedRoomCmdSet.at_cmdset_creation">(evennia.contrib.extended_room.ExtendedRoomCmdSet method)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.UnloggedinCmdSet.at_cmdset_creation">(evennia.contrib.menu_login.UnloggedinCmdSet method)</a>
</li>
<li><a href="api/evennia.contrib.puzzles.html#evennia.contrib.puzzles.PuzzleSystemCmdSet.at_cmdset_creation">(evennia.contrib.puzzles.PuzzleSystemCmdSet method)</a>
</li>
@ -1484,11 +1462,9 @@
<li><a href="api/evennia.server.serversession.html#evennia.server.serversession.ServerSession.at_disconnect">(evennia.server.serversession.ServerSession method)</a>
</li>
</ul></li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventObject.at_drop">at_drop() (evennia.contrib.ingame_python.typeclasses.EventObject method)</a>
<li><a href="api/evennia.contrib.turnbattle.tb_equip.html#evennia.contrib.turnbattle.tb_equip.TBEArmor.at_drop">at_drop() (evennia.contrib.turnbattle.tb_equip.TBEArmor method)</a>
<ul>
<li><a href="api/evennia.contrib.turnbattle.tb_equip.html#evennia.contrib.turnbattle.tb_equip.TBEArmor.at_drop">(evennia.contrib.turnbattle.tb_equip.TBEArmor method)</a>
</li>
<li><a href="api/evennia.contrib.turnbattle.tb_equip.html#evennia.contrib.turnbattle.tb_equip.TBEWeapon.at_drop">(evennia.contrib.turnbattle.tb_equip.TBEWeapon method)</a>
</li>
<li><a href="api/evennia.contrib.turnbattle.tb_range.html#evennia.contrib.turnbattle.tb_range.TBRangeObject.at_drop">(evennia.contrib.turnbattle.tb_range.TBRangeObject method)</a>
@ -1521,8 +1497,6 @@
<li><a href="api/evennia.contrib.clothing.html#evennia.contrib.clothing.Clothing.at_get">at_get() (evennia.contrib.clothing.Clothing method)</a>
<ul>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventObject.at_get">(evennia.contrib.ingame_python.typeclasses.EventObject method)</a>
</li>
<li><a href="api/evennia.contrib.turnbattle.tb_range.html#evennia.contrib.turnbattle.tb_range.TBRangeObject.at_get">(evennia.contrib.turnbattle.tb_range.TBRangeObject method)</a>
</li>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_get">(evennia.objects.objects.DefaultObject method)</a>
@ -1676,14 +1650,8 @@
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_object_creation">(evennia.objects.objects.DefaultObject method)</a>
</li>
</ul></li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_object_delete">at_object_delete() (evennia.contrib.ingame_python.typeclasses.EventCharacter method)</a>
<ul>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventRoom.at_object_delete">(evennia.contrib.ingame_python.typeclasses.EventRoom method)</a>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_object_delete">at_object_delete() (evennia.objects.objects.DefaultObject method)</a>
</li>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_object_delete">(evennia.objects.objects.DefaultObject method)</a>
</li>
</ul></li>
<li><a href="api/evennia.contrib.tutorial_world.rooms.html#evennia.contrib.tutorial_world.rooms.BridgeRoom.at_object_leave">at_object_leave() (evennia.contrib.tutorial_world.rooms.BridgeRoom method)</a>
<ul>
@ -1730,11 +1698,9 @@
</li>
<li><a href="api/evennia.server.server.html#evennia.server.server.Evennia.at_post_portal_sync">at_post_portal_sync() (evennia.server.server.Evennia method)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_post_puppet">at_post_puppet() (evennia.contrib.ingame_python.typeclasses.EventCharacter method)</a>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.at_post_puppet">at_post_puppet() (evennia.objects.objects.DefaultCharacter method)</a>
<ul>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.at_post_puppet">(evennia.objects.objects.DefaultCharacter method)</a>
</li>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_post_puppet">(evennia.objects.objects.DefaultObject method)</a>
</li>
</ul></li>
@ -1758,12 +1724,8 @@
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_pre_puppet">(evennia.objects.objects.DefaultObject method)</a>
</li>
</ul></li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_pre_unpuppet">at_pre_unpuppet() (evennia.contrib.ingame_python.typeclasses.EventCharacter method)</a>
<ul>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_pre_unpuppet">(evennia.objects.objects.DefaultObject method)</a>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_pre_unpuppet">at_pre_unpuppet() (evennia.objects.objects.DefaultObject method)</a>
</li>
</ul></li>
<li><a href="api/evennia.contrib.wilderness.html#evennia.contrib.wilderness.WildernessMapProvider.at_prepare_room">at_prepare_room() (evennia.contrib.wilderness.WildernessMapProvider method)</a>
</li>
<li><a href="api/evennia.typeclasses.models.html#evennia.typeclasses.models.TypedObject.at_rename">at_rename() (evennia.typeclasses.models.TypedObject method)</a>
@ -1802,12 +1764,8 @@
<li><a href="api/evennia.utils.gametime.html#evennia.utils.gametime.TimeScript.at_repeat">(evennia.utils.gametime.TimeScript method)</a>
</li>
</ul></li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.at_say">at_say() (evennia.contrib.ingame_python.typeclasses.EventCharacter method)</a>
<ul>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_say">(evennia.objects.objects.DefaultObject method)</a>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_say">at_say() (evennia.objects.objects.DefaultObject method)</a>
</li>
</ul></li>
<li><a href="api/evennia.accounts.bots.html#evennia.accounts.bots.BotStarter.at_script_creation">at_script_creation() (evennia.accounts.bots.BotStarter method)</a>
<ul>
@ -1944,11 +1902,9 @@
<li><a href="api/evennia.server.session.html#evennia.server.session.Session.at_sync">(evennia.server.session.Session method)</a>
</li>
</ul></li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventExit.at_traverse">at_traverse() (evennia.contrib.ingame_python.typeclasses.EventExit method)</a>
<li><a href="api/evennia.contrib.slow_exit.html#evennia.contrib.slow_exit.SlowExit.at_traverse">at_traverse() (evennia.contrib.slow_exit.SlowExit method)</a>
<ul>
<li><a href="api/evennia.contrib.slow_exit.html#evennia.contrib.slow_exit.SlowExit.at_traverse">(evennia.contrib.slow_exit.SlowExit method)</a>
</li>
<li><a href="api/evennia.contrib.wilderness.html#evennia.contrib.wilderness.WildernessExit.at_traverse">(evennia.contrib.wilderness.WildernessExit method)</a>
</li>
<li><a href="api/evennia.objects.objects.html#evennia.objects.objects.DefaultExit.at_traverse">(evennia.objects.objects.DefaultExit method)</a>
@ -2189,8 +2145,6 @@
<li><a href="api/evennia.utils.ansi.html#evennia.utils.ansi.ANSIParser.brightbg_sub">brightbg_sub (evennia.utils.ansi.ANSIParser attribute)</a>
</li>
<li><a href="api/evennia.server.portal.amp.html#evennia.server.portal.amp.AMPMultiConnectionProtocol.broadcast">broadcast() (evennia.server.portal.amp.AMPMultiConnectionProtocol method)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.build_map">build_map() (in module evennia.contrib.mapbuilder)</a>
</li>
<li><a href="api/evennia.commands.cmdparser.html#evennia.commands.cmdparser.build_matches">build_matches() (in module evennia.commands.cmdparser)</a>
</li>
@ -2266,16 +2220,6 @@
</li>
<li><a href="api/evennia.contrib.ingame_python.callbackhandler.html#evennia.contrib.ingame_python.callbackhandler.CallbackHandler">CallbackHandler (class in evennia.contrib.ingame_python.callbackhandler)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.callbacks">callbacks (evennia.contrib.ingame_python.typeclasses.EventCharacter attribute)</a>
<ul>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventExit.callbacks">(evennia.contrib.ingame_python.typeclasses.EventExit attribute)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventObject.callbacks">(evennia.contrib.ingame_python.typeclasses.EventObject attribute)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventRoom.callbacks">(evennia.contrib.ingame_python.typeclasses.EventRoom attribute)</a>
</li>
</ul></li>
<li><a href="api/evennia.utils.utils.html#evennia.utils.utils.calledby">calledby() (in module evennia.utils.utils)</a>
</li>
<li><a href="api/evennia.server.webserver.html#evennia.server.webserver.LockableThreadPool.callInThread">callInThread() (evennia.server.webserver.LockableThreadPool method)</a>
@ -2790,14 +2734,14 @@
</li>
<li><a href="api/evennia.commands.default.tests.html#evennia.commands.default.tests.CmdInterrupt">CmdInterrupt (class in evennia.commands.default.tests)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="api/evennia.commands.default.general.html#evennia.commands.default.general.CmdInventory">CmdInventory (class in evennia.commands.default.general)</a>
<ul>
<li><a href="api/evennia.contrib.clothing.html#evennia.contrib.clothing.CmdInventory">(class in evennia.contrib.clothing)</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="api/evennia.commands.default.comms.html#evennia.commands.default.comms.CmdIRC2Chan">CmdIRC2Chan (class in evennia.commands.default.comms)</a>
</li>
<li><a href="api/evennia.commands.default.comms.html#evennia.commands.default.comms.CmdIRCStatus">CmdIRCStatus (class in evennia.commands.default.comms)</a>
@ -2827,8 +2771,6 @@
<li><a href="api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMail">CmdMail (class in evennia.contrib.mail)</a>
</li>
<li><a href="api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMailCharacter">CmdMailCharacter (class in evennia.contrib.mail)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.CmdMapBuilder">CmdMapBuilder (class in evennia.contrib.mapbuilder)</a>
</li>
<li><a href="api/evennia.contrib.rpsystem.html#evennia.contrib.rpsystem.CmdMask">CmdMask (class in evennia.contrib.rpsystem)</a>
</li>
@ -3095,8 +3037,6 @@
<li><a href="api/evennia.contrib.clothing.html#evennia.contrib.clothing.CmdUncover">CmdUncover (class in evennia.contrib.clothing)</a>
</li>
<li><a href="api/evennia.commands.default.building.html#evennia.commands.default.building.CmdUnLink">CmdUnLink (class in evennia.commands.default.building)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.CmdUnloggedinLook">CmdUnloggedinLook (class in evennia.contrib.menu_login)</a>
</li>
<li><a href="api/evennia.contrib.turnbattle.tb_equip.html#evennia.contrib.turnbattle.tb_equip.CmdUnwield">CmdUnwield (class in evennia.contrib.turnbattle.tb_equip)</a>
</li>
@ -4478,13 +4418,6 @@
<ul>
<li><a href="api/evennia.contrib.ingame_python.tests.html#module-evennia.contrib.ingame_python.tests">module</a>
</li>
</ul></li>
<li>
evennia.contrib.ingame_python.typeclasses
<ul>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#module-evennia.contrib.ingame_python.typeclasses">module</a>
</li>
</ul></li>
<li>
@ -4499,20 +4432,6 @@
<ul>
<li><a href="api/evennia.contrib.mail.html#module-evennia.contrib.mail">module</a>
</li>
</ul></li>
<li>
evennia.contrib.mapbuilder
<ul>
<li><a href="api/evennia.contrib.mapbuilder.html#module-evennia.contrib.mapbuilder">module</a>
</li>
</ul></li>
<li>
evennia.contrib.menu_login
<ul>
<li><a href="api/evennia.contrib.menu_login.html#module-evennia.contrib.menu_login">module</a>
</li>
</ul></li>
<li>
@ -4900,6 +4819,8 @@
<li><a href="api/evennia.scripts.monitorhandler.html#module-evennia.scripts.monitorhandler">module</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li>
evennia.scripts.scripthandler
@ -4921,8 +4842,6 @@
<li><a href="api/evennia.scripts.taskhandler.html#module-evennia.scripts.taskhandler">module</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li>
evennia.scripts.tickerhandler
@ -5668,36 +5587,12 @@
<li><a href="api/evennia.server.validators.html#evennia.server.validators.EvenniaUsernameAvailabilityValidator">EvenniaUsernameAvailabilityValidator (class in evennia.server.validators)</a>
</li>
<li><a href="api/evennia.web.website.tests.html#evennia.web.website.tests.EvenniaWebTest">EvenniaWebTest (class in evennia.web.website.tests)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter">EventCharacter (class in evennia.contrib.ingame_python.typeclasses)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.DoesNotExist">EventCharacter.DoesNotExist</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.MultipleObjectsReturned">EventCharacter.MultipleObjectsReturned</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventExit">EventExit (class in evennia.contrib.ingame_python.typeclasses)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventExit.DoesNotExist">EventExit.DoesNotExist</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventExit.MultipleObjectsReturned">EventExit.MultipleObjectsReturned</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.scripts.html#evennia.contrib.ingame_python.scripts.EventHandler">EventHandler (class in evennia.contrib.ingame_python.scripts)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.scripts.html#evennia.contrib.ingame_python.scripts.EventHandler.DoesNotExist">EventHandler.DoesNotExist</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.scripts.html#evennia.contrib.ingame_python.scripts.EventHandler.MultipleObjectsReturned">EventHandler.MultipleObjectsReturned</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventObject">EventObject (class in evennia.contrib.ingame_python.typeclasses)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventObject.DoesNotExist">EventObject.DoesNotExist</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventObject.MultipleObjectsReturned">EventObject.MultipleObjectsReturned</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventRoom">EventRoom (class in evennia.contrib.ingame_python.typeclasses)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventRoom.DoesNotExist">EventRoom.DoesNotExist</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventRoom.MultipleObjectsReturned">EventRoom.MultipleObjectsReturned</a>
</li>
<li><a href="api/evennia.utils.evform.html#evennia.utils.evform.EvForm">EvForm (class in evennia.utils.evform)</a>
</li>
@ -5712,18 +5607,6 @@
<li><a href="api/evennia.utils.evmore.html#evennia.utils.evmore.EvMore">EvMore (class in evennia.utils.evmore)</a>
</li>
<li><a href="api/evennia.utils.evtable.html#evennia.utils.evtable.EvTable">EvTable (class in evennia.utils.evtable)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.example1_build_forest">example1_build_forest() (in module evennia.contrib.mapbuilder)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.example1_build_mountains">example1_build_mountains() (in module evennia.contrib.mapbuilder)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.example1_build_temple">example1_build_temple() (in module evennia.contrib.mapbuilder)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.example2_build_forest">example2_build_forest() (in module evennia.contrib.mapbuilder)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.example2_build_horizontal_exit">example2_build_horizontal_exit() (in module evennia.contrib.mapbuilder)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.example2_build_verticle_exit">example2_build_verticle_exit() (in module evennia.contrib.mapbuilder)</a>
</li>
<li><a href="api/evennia.commands.default.system.html#evennia.commands.default.system.CmdScripts.excluded_typeclass_paths">excluded_typeclass_paths (evennia.commands.default.system.CmdScripts attribute)</a>
</li>
@ -6249,10 +6132,6 @@
<li><a href="api/evennia.contrib.ingame_python.commands.html#evennia.contrib.ingame_python.commands.CmdCallback.func">(evennia.contrib.ingame_python.commands.CmdCallback method)</a>
</li>
<li><a href="api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMail.func">(evennia.contrib.mail.CmdMail method)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.CmdMapBuilder.func">(evennia.contrib.mapbuilder.CmdMapBuilder method)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.CmdUnloggedinLook.func">(evennia.contrib.menu_login.CmdUnloggedinLook method)</a>
</li>
<li><a href="api/evennia.contrib.multidescer.html#evennia.contrib.multidescer.CmdMultiDesc.func">(evennia.contrib.multidescer.CmdMultiDesc method)</a>
</li>
@ -7295,10 +7174,6 @@
<li><a href="api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMail.help_category">(evennia.contrib.mail.CmdMail attribute)</a>
</li>
<li><a href="api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMailCharacter.help_category">(evennia.contrib.mail.CmdMailCharacter attribute)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.CmdMapBuilder.help_category">(evennia.contrib.mapbuilder.CmdMapBuilder attribute)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.CmdUnloggedinLook.help_category">(evennia.contrib.menu_login.CmdUnloggedinLook attribute)</a>
</li>
<li><a href="api/evennia.contrib.multidescer.html#evennia.contrib.multidescer.CmdMultiDesc.help_category">(evennia.contrib.multidescer.CmdMultiDesc attribute)</a>
</li>
@ -8193,12 +8068,6 @@
<li><a href="api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMail.key">(evennia.contrib.mail.CmdMail attribute)</a>
</li>
<li><a href="api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMailCharacter.key">(evennia.contrib.mail.CmdMailCharacter attribute)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.CmdMapBuilder.key">(evennia.contrib.mapbuilder.CmdMapBuilder attribute)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.CmdUnloggedinLook.key">(evennia.contrib.menu_login.CmdUnloggedinLook attribute)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.UnloggedinCmdSet.key">(evennia.contrib.menu_login.UnloggedinCmdSet attribute)</a>
</li>
<li><a href="api/evennia.contrib.multidescer.html#evennia.contrib.multidescer.CmdMultiDesc.key">(evennia.contrib.multidescer.CmdMultiDesc attribute)</a>
</li>
@ -8939,10 +8808,6 @@
<li><a href="api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMail.lock_storage">(evennia.contrib.mail.CmdMail attribute)</a>
</li>
<li><a href="api/evennia.contrib.mail.html#evennia.contrib.mail.CmdMailCharacter.lock_storage">(evennia.contrib.mail.CmdMailCharacter attribute)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.CmdMapBuilder.lock_storage">(evennia.contrib.mapbuilder.CmdMapBuilder attribute)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.CmdUnloggedinLook.lock_storage">(evennia.contrib.menu_login.CmdUnloggedinLook attribute)</a>
</li>
<li><a href="api/evennia.contrib.multidescer.html#evennia.contrib.multidescer.CmdMultiDesc.lock_storage">(evennia.contrib.multidescer.CmdMultiDesc attribute)</a>
</li>
@ -9411,10 +9276,6 @@
<li><a href="api/evennia.contrib.gendersub.html#evennia.contrib.gendersub.SetGender.locks">(evennia.contrib.gendersub.SetGender attribute)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.commands.html#evennia.contrib.ingame_python.commands.CmdCallback.locks">(evennia.contrib.ingame_python.commands.CmdCallback attribute)</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#evennia.contrib.mapbuilder.CmdMapBuilder.locks">(evennia.contrib.mapbuilder.CmdMapBuilder attribute)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.CmdUnloggedinLook.locks">(evennia.contrib.menu_login.CmdUnloggedinLook attribute)</a>
</li>
<li><a href="api/evennia.contrib.multidescer.html#evennia.contrib.multidescer.CmdMultiDesc.locks">(evennia.contrib.multidescer.CmdMultiDesc attribute)</a>
</li>
@ -9946,16 +9807,10 @@
<li><a href="api/evennia.contrib.ingame_python.scripts.html#module-evennia.contrib.ingame_python.scripts">evennia.contrib.ingame_python.scripts</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.tests.html#module-evennia.contrib.ingame_python.tests">evennia.contrib.ingame_python.tests</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#module-evennia.contrib.ingame_python.typeclasses">evennia.contrib.ingame_python.typeclasses</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.utils.html#module-evennia.contrib.ingame_python.utils">evennia.contrib.ingame_python.utils</a>
</li>
<li><a href="api/evennia.contrib.mail.html#module-evennia.contrib.mail">evennia.contrib.mail</a>
</li>
<li><a href="api/evennia.contrib.mapbuilder.html#module-evennia.contrib.mapbuilder">evennia.contrib.mapbuilder</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#module-evennia.contrib.menu_login">evennia.contrib.menu_login</a>
</li>
<li><a href="api/evennia.contrib.multidescer.html#module-evennia.contrib.multidescer">evennia.contrib.multidescer</a>
</li>
@ -10504,6 +10359,8 @@
</li>
<li><a href="api/evennia.server.portal.mxp.html#evennia.server.portal.mxp.Mxp.no_mxp">no_mxp() (evennia.server.portal.mxp.Mxp method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="api/evennia.server.portal.naws.html#evennia.server.portal.naws.Naws.no_naws">no_naws() (evennia.server.portal.naws.Naws method)</a>
</li>
<li><a href="api/evennia.commands.cmdset.html#evennia.commands.cmdset.CmdSet.no_objs">no_objs (evennia.commands.cmdset.CmdSet attribute)</a>
@ -10520,17 +10377,11 @@
<li><a href="api/evennia.utils.evmenu.html#evennia.utils.evmenu.InputCmdSet.no_objs">(evennia.utils.evmenu.InputCmdSet attribute)</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="api/evennia.prototypes.menus.html#evennia.prototypes.menus.node_apply_diff">node_apply_diff() (in module evennia.prototypes.menus)</a>
</li>
<li><a href="api/evennia.utils.evmenu.html#evennia.utils.evmenu.EvMenu.node_border_char">node_border_char (evennia.utils.evmenu.EvMenu attribute)</a>
</li>
<li><a href="api/evennia.prototypes.menus.html#evennia.prototypes.menus.node_destination">node_destination() (in module evennia.prototypes.menus)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.node_enter_password">node_enter_password() (in module evennia.contrib.menu_login)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.node_enter_username">node_enter_username() (in module evennia.contrib.menu_login)</a>
</li>
<li><a href="api/evennia.prototypes.menus.html#evennia.prototypes.menus.node_examine_entity">node_examine_entity() (in module evennia.prototypes.menus)</a>
</li>
@ -10561,8 +10412,6 @@
<li><a href="api/evennia.prototypes.menus.html#evennia.prototypes.menus.node_prototype_save">node_prototype_save() (in module evennia.prototypes.menus)</a>
</li>
<li><a href="api/evennia.prototypes.menus.html#evennia.prototypes.menus.node_prototype_spawn">node_prototype_spawn() (in module evennia.prototypes.menus)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.node_quit_or_login">node_quit_or_login() (in module evennia.contrib.menu_login)</a>
</li>
<li><a href="api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.node_start">node_start() (in module evennia.server.connection_wizard)</a>
</li>
@ -11058,16 +10907,6 @@
<li><a href="api/evennia.contrib.ingame_python.scripts.html#evennia.contrib.ingame_python.scripts.EventHandler.path">(evennia.contrib.ingame_python.scripts.EventHandler attribute)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.scripts.html#evennia.contrib.ingame_python.scripts.TimeEventScript.path">(evennia.contrib.ingame_python.scripts.TimeEventScript attribute)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.path">(evennia.contrib.ingame_python.typeclasses.EventCharacter attribute)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventExit.path">(evennia.contrib.ingame_python.typeclasses.EventExit attribute)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventObject.path">(evennia.contrib.ingame_python.typeclasses.EventObject attribute)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventRoom.path">(evennia.contrib.ingame_python.typeclasses.EventRoom attribute)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.UnloggedinCmdSet.path">(evennia.contrib.menu_login.UnloggedinCmdSet attribute)</a>
</li>
<li><a href="api/evennia.contrib.puzzles.html#evennia.contrib.puzzles.PuzzleRecipe.path">(evennia.contrib.puzzles.PuzzleRecipe attribute)</a>
</li>
@ -11396,8 +11235,6 @@
<li><a href="api/evennia.commands.default.cmdset_unloggedin.html#evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet.priority">(evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet attribute)</a>
</li>
<li><a href="api/evennia.contrib.building_menu.html#evennia.contrib.building_menu.BuildingMenuCmdSet.priority">(evennia.contrib.building_menu.BuildingMenuCmdSet attribute)</a>
</li>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.UnloggedinCmdSet.priority">(evennia.contrib.menu_login.UnloggedinCmdSet attribute)</a>
</li>
<li><a href="api/evennia.contrib.tutorial_world.intro_menu.html#evennia.contrib.tutorial_world.intro_menu.DemoCommandSetComms.priority">(evennia.contrib.tutorial_world.intro_menu.DemoCommandSetComms attribute)</a>
</li>
@ -13264,12 +13101,12 @@
</li>
<li><a href="api/evennia.contrib.tutorial_examples.tests.html#evennia.contrib.tutorial_examples.tests.TestBodyFunctions.test_send_random_message">test_send_random_message() (evennia.contrib.tutorial_examples.tests.TestBodyFunctions method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestSystem.test_server_load">test_server_load() (evennia.commands.default.tests.TestSystem method)</a>
</li>
<li><a href="api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestAccount.test_sessions">test_sessions() (evennia.commands.default.tests.TestAccount method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="api/evennia.web.utils.tests.html#evennia.web.utils.tests.TestGeneralContext.test_set_game_name_and_slogan">test_set_game_name_and_slogan() (evennia.web.utils.tests.TestGeneralContext method)</a>
</li>
<li><a href="api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestHelp.test_set_help">test_set_help() (evennia.commands.default.tests.TestHelp method)</a>
@ -13556,14 +13393,6 @@
<li><a href="api/evennia.contrib.ingame_python.scripts.html#evennia.contrib.ingame_python.scripts.EventHandler.typename">(evennia.contrib.ingame_python.scripts.EventHandler attribute)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.scripts.html#evennia.contrib.ingame_python.scripts.TimeEventScript.typename">(evennia.contrib.ingame_python.scripts.TimeEventScript attribute)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventCharacter.typename">(evennia.contrib.ingame_python.typeclasses.EventCharacter attribute)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventExit.typename">(evennia.contrib.ingame_python.typeclasses.EventExit attribute)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventObject.typename">(evennia.contrib.ingame_python.typeclasses.EventObject attribute)</a>
</li>
<li><a href="api/evennia.contrib.ingame_python.typeclasses.html#evennia.contrib.ingame_python.typeclasses.EventRoom.typename">(evennia.contrib.ingame_python.typeclasses.EventRoom attribute)</a>
</li>
<li><a href="api/evennia.contrib.puzzles.html#evennia.contrib.puzzles.PuzzleRecipe.typename">(evennia.contrib.puzzles.PuzzleRecipe attribute)</a>
</li>
@ -13747,11 +13576,7 @@
<li><a href="api/evennia.utils.test_resources.html#evennia.utils.test_resources.unload_module">unload_module() (in module evennia.utils.test_resources)</a>
</li>
<li><a href="api/evennia.commands.default.cmdset_unloggedin.html#evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet">UnloggedinCmdSet (class in evennia.commands.default.cmdset_unloggedin)</a>
<ul>
<li><a href="api/evennia.contrib.menu_login.html#evennia.contrib.menu_login.UnloggedinCmdSet">(class in evennia.contrib.menu_login)</a>
</li>
</ul></li>
<li><a href="api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.unmonitor">unmonitor() (in module evennia.server.inputfuncs)</a>
</li>
<li><a href="api/evennia.comms.comms.html#evennia.comms.comms.DefaultChannel.unmute">unmute() (evennia.comms.comms.DefaultChannel method)</a>
@ -13782,10 +13607,10 @@
<li><a href="api/evennia.utils.utils.html#evennia.utils.utils.LimitedSizeOrderedDict.update">(evennia.utils.utils.LimitedSizeOrderedDict method)</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="api/evennia.utils.eveditor.html#evennia.utils.eveditor.EvEditor.update_buffer">update_buffer() (evennia.utils.eveditor.EvEditor method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="api/evennia.utils.idmapper.models.html#evennia.utils.idmapper.models.update_cached_instance">update_cached_instance() (in module evennia.utils.idmapper.models)</a>
</li>
<li><a href="api/evennia.contrib.extended_room.html#evennia.contrib.extended_room.ExtendedRoom.update_current_description">update_current_description() (evennia.contrib.extended_room.ExtendedRoom method)</a>

Binary file not shown.

View file

@ -321,11 +321,6 @@
<td>&#160;&#160;&#160;
<a href="api/evennia.contrib.ingame_python.tests.html#module-evennia.contrib.ingame_python.tests"><code class="xref">evennia.contrib.ingame_python.tests</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="api/evennia.contrib.ingame_python.typeclasses.html#module-evennia.contrib.ingame_python.typeclasses"><code class="xref">evennia.contrib.ingame_python.typeclasses</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
@ -336,16 +331,6 @@
<td>&#160;&#160;&#160;
<a href="api/evennia.contrib.mail.html#module-evennia.contrib.mail"><code class="xref">evennia.contrib.mail</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="api/evennia.contrib.mapbuilder.html#module-evennia.contrib.mapbuilder"><code class="xref">evennia.contrib.mapbuilder</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="api/evennia.contrib.menu_login.html#module-evennia.contrib.menu_login"><code class="xref">evennia.contrib.menu_login</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;

File diff suppressed because one or more lines are too long

View file

@ -40,6 +40,7 @@
<h1>Toc<a class="headerlink" href="#toc" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="api/evennia-api.html">API root</a></li>
<li class="toctree-l1"><a class="reference internal" href="A-voice-operated-elevator-using-events.html">./A voice operated elevator using events</a></li>
<li class="toctree-l1"><a class="reference internal" href="API-refactoring.html">./API refactoring</a></li>
<li class="toctree-l1"><a class="reference internal" href="Accounts.html">./Accounts</a></li>

View file

@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: d44b09e1b0e25f0a3dfdb072c1a7756a
config: 627e7fafcf163fe3b617dfb0e5e8024e
tags: 645f666f9bcd5a90fca523b33c5a78b7

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Coding Introduction</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -225,7 +226,6 @@ chat</a> are also there for you.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -242,6 +242,7 @@ chat</a> are also there for you.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Coding Introduction</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -37,6 +37,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Coding and development help</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -136,7 +137,6 @@ to you, but some things may still be useful.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -159,6 +159,7 @@ to you, but some things may still be useful.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Coding and development help</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Continuous Integration</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -403,7 +404,6 @@ build steps could be added or removed at this point, adding some features like U
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -420,6 +420,7 @@ build steps could be added or removed at this point, adding some features like U
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Continuous Integration</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Debugging</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -359,7 +360,6 @@ topic here</a>.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -376,6 +376,7 @@ topic here</a>.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Debugging</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Things to remember about the flat API</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -112,7 +113,6 @@ package imports from.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -129,6 +129,7 @@ package imports from.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Things to remember about the flat API</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Profiling</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -202,7 +203,6 @@ course hard to actually mimic human user behavior. For this, actual real-game te
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -219,6 +219,7 @@ course hard to actually mimic human user behavior. For this, actual real-game te
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Profiling</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Quirks</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -197,7 +198,6 @@ instructions, use the following command to fix it:</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -214,6 +214,7 @@ instructions, use the following command to fix it:</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Quirks</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Setting up PyCharm</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -201,7 +202,6 @@ still running in interactive mode.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -218,6 +218,7 @@ still running in interactive mode.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Setting up PyCharm</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Unit Testing</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -575,7 +576,6 @@ will get much more information to help you fix the bug.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -592,6 +592,7 @@ will get much more information to help you fix the bug.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Unit Testing</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Updating Your Game</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -211,7 +212,6 @@ you then just run <code class="docutils literal notranslate"><span class="pre">e
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -228,6 +228,7 @@ you then just run <code class="docutils literal notranslate"><span class="pre">e
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Updating Your Game</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Using Travis</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -115,7 +116,6 @@ fitting your game.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -132,6 +132,7 @@ fitting your game.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Using Travis</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Version Control</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -532,7 +533,6 @@ understand the underlying ideas behind GIT
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -549,6 +549,7 @@ understand the underlying ideas behind GIT
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Version Control</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Accounts</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -187,7 +188,6 @@ any.</p></li>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -204,6 +204,7 @@ any.</p></li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Accounts</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Attributes</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -516,7 +517,6 @@ those will check for the <code class="docutils literal notranslate"><span class=
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -533,6 +533,7 @@ those will check for the <code class="docutils literal notranslate"><span class=
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Attributes</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Batch Code Processor</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -373,7 +374,6 @@ executed. When the code runs it has no knowledge of what file those strings wher
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -390,6 +390,7 @@ executed. When the code runs it has no knowledge of what file those strings wher
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Batch Code Processor</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Batch Command Processor</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -297,7 +298,6 @@ mode instead, see its readme for install instructions.</p></li>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -314,6 +314,7 @@ mode instead, see its readme for install instructions.</p></li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Batch Command Processor</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Batch Processors</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -151,7 +152,6 @@ allowed.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -168,6 +168,7 @@ allowed.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Batch Processors</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Bootstrap Components and Utilities</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -185,7 +186,6 @@ over <a class="reference internal" href="../Howto/Web-Character-Generation.html"
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -202,6 +202,7 @@ over <a class="reference internal" href="../Howto/Web-Character-Generation.html"
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Bootstrap Components and Utilities</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Channels</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -74,7 +75,6 @@
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -91,6 +91,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Channels</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Coding Utils</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -442,7 +443,6 @@ instructions.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -459,6 +459,7 @@ instructions.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Coding Utils</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Command Sets</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -487,7 +488,6 @@ commands having any combination of the keys and/or aliases “kick”, “punch
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -504,6 +504,7 @@ commands having any combination of the keys and/or aliases “kick”, “punch
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Command Sets</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Command System</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -83,7 +84,6 @@
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -100,6 +100,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Command System</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Commands</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -860,7 +861,6 @@ on.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -877,6 +877,7 @@ on.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Commands</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Communications</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -198,7 +199,6 @@ for channel communication (since the default ChannelCommand instead logs to a fi
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -215,6 +215,7 @@ for channel communication (since the default ChannelCommand instead logs to a fi
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Communications</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -37,6 +37,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Core Components</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -178,7 +179,6 @@ than, the doc-strings of each component in the <a class="reference internal" hre
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -201,6 +201,7 @@ than, the doc-strings of each component in the <a class="reference internal" hre
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Core Components</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Connection Screen</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -113,7 +114,6 @@ tutorial section on how to add new commands to a default command set.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -130,6 +130,7 @@ tutorial section on how to add new commands to a default command set.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Connection Screen</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">EvEditor</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -321,7 +322,6 @@ editor can be useful if you want to test the code you have typed but add new lin
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -338,6 +338,7 @@ editor can be useful if you want to test the code you have typed but add new lin
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">EvEditor</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">EvMenu</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -1351,7 +1352,6 @@ until the exit node.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -1368,6 +1368,7 @@ until the exit node.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">EvMenu</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">EvMore</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -114,7 +115,6 @@ paging.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -131,6 +131,7 @@ paging.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">EvMore</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Help System</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -213,7 +214,6 @@ definition</span></a>:</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -230,6 +230,7 @@ definition</span></a>:</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Help System</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Inputfuncs</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -274,7 +275,6 @@ add more. By default the following fields/attributes can be monitored:</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -291,6 +291,7 @@ add more. By default the following fields/attributes can be monitored:</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Inputfuncs</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Locks</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -624,7 +625,6 @@ interface. Its stand-alone from the permissions described above.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -641,6 +641,7 @@ interface. Its stand-alone from the permissions described above.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Locks</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">MonitorHandler</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -171,7 +172,6 @@ the monitor to remove:</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -188,6 +188,7 @@ the monitor to remove:</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">MonitorHandler</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Nicks</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -210,7 +211,6 @@ basically the unchanged strings you enter to the <code class="docutils literal n
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -227,6 +227,7 @@ basically the unchanged strings you enter to the <code class="docutils literal n
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Nicks</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Objects</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -279,7 +280,6 @@ and display this as an error message. If this is not found, the Exit will instea
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -296,6 +296,7 @@ and display this as an error message. If this is not found, the Exit will instea
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Objects</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Outputfuncs</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -74,7 +75,6 @@
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -91,6 +91,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Outputfuncs</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Portal And Server</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -82,7 +83,6 @@ This allows the two programs to communicate seamlessly.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -99,6 +99,7 @@ This allows the two programs to communicate seamlessly.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Portal And Server</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Spawner and Prototypes</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -411,7 +412,6 @@ the api docs</a>.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -428,6 +428,7 @@ the api docs</a>.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Spawner and Prototypes</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Scripts</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -512,7 +513,6 @@ tutorial</a>.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -529,6 +529,7 @@ tutorial</a>.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Scripts</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Server Conf</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -184,7 +185,6 @@ know about if you are an Evennia developer.</p>
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -201,6 +201,7 @@ know about if you are an Evennia developer.</p>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Server Conf</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Server component</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -74,7 +75,6 @@
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -91,6 +91,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Server component</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

View file

@ -29,6 +29,7 @@
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Sessions</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
@ -264,7 +265,6 @@ module for details on the capabilities of the <code class="docutils literal notr
<li><a href="../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
@ -281,6 +281,7 @@ module for details on the capabilities of the <code class="docutils literal notr
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">Sessions</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.

Some files were not shown because too many files have changed in this diff Show more