evennia/docs/latest/api/evennia.scripts.scripts.html
Evennia docbuilder action 4544902e08 Updated HTML docs.
2026-02-15 17:42:43 +00:00

1826 lines
No EOL
185 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en" data-content_root="../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>evennia.scripts.scripts &#8212; Evennia latest documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=d75fae25" />
<link rel="stylesheet" type="text/css" href="../_static/nature.css?v=279e0f84" />
<link rel="stylesheet" type="text/css" href="../_static/custom.css?v=e4a91a55" />
<script src="../_static/documentation_options.js?v=c6e86fd7"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="evennia.scripts.taskhandler" href="evennia.scripts.taskhandler.html" />
<link rel="prev" title="evennia.scripts.scripthandler" href="evennia.scripts.scripthandler.html" />
</head><body>
<div class="related" role="navigation" aria-label="Related">
<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="right" >
<a href="evennia.scripts.taskhandler.html" title="evennia.scripts.taskhandler"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.scripts.scripthandler.html" title="evennia.scripts.scripthandler"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.scripts.html" accesskey="U">evennia.scripts</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.scripts.scripts</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.scripts.scripts">
<span id="evennia-scripts-scripts"></span><h1>evennia.scripts.scripts<a class="headerlink" href="#module-evennia.scripts.scripts" title="Link to this heading"></a></h1>
<p>This module defines Scripts, out-of-character entities that can store
data both on themselves and on other objects while also having the
ability to run timers.</p>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.scripts.scripts.</span></span><span class="sig-name descname"><span class="pre">DefaultScript</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DefaultScript"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.scripts.scripts.ScriptBase" title="evennia.scripts.scripts.ScriptBase"><code class="xref py py-class docutils literal notranslate"><span class="pre">ScriptBase</span></code></a></p>
<p>This is the base TypeClass for all Scripts. Scripts describe
all entities/systems without a physical existence in the game world
that require database storage (like an economic system or
combat tracker). They
can also have a timer/ticker component.</p>
<p>A script type is customized by redefining some or all of its hook
methods and variables.</p>
<ul class="simple">
<li><p>available properties (check docs for full listing, this could be
outdated).</p></li>
</ul>
<blockquote>
<div><p>key (string) - name of object
name (string)- same as key
aliases (list of strings) - aliases to the object. Will be saved</p>
<blockquote>
<div><p>to database as AliasDB entries but returned as strings.</p>
</div></blockquote>
<p>dbref (int, read-only) - unique #id-number. Also “id” can be used.
date_created (string) - time stamp of object creation
permissions (list of strings) - list of permission strings</p>
<p>desc (string) - optional description of script, shown in listings
obj (Object) - optional object that this script is connected to</p>
<blockquote>
<div><p>and acts on (set automatically by obj.scripts.add())</p>
</div></blockquote>
<dl class="simple">
<dt>interval (int) - how often script should run, in seconds. &lt;0 turns</dt><dd><p>off ticker</p>
</dd>
<dt>start_delay (bool) - if the script should start repeating right away or</dt><dd><p>wait self.interval seconds</p>
</dd>
<dt>repeats (int) - how many times the script should repeat before</dt><dd><p>stopping. 0 means infinite repeats</p>
</dd>
</dl>
<p>persistent (bool) - if script should survive a server shutdown or not
is_active (bool) - if script is currently running</p>
</div></blockquote>
<ul class="simple">
<li><p>Handlers</p></li>
</ul>
<blockquote>
<div><p>locks - lock-handler: use locks.add() to add new lock strings
db - attribute-handler: store/retrieve database attributes on this</p>
<blockquote>
<div><p>self.db.myattr=val, val=self.db.myattr</p>
</div></blockquote>
<dl class="simple">
<dt>ndb - non-persistent attribute handler: same as db but does not</dt><dd><p>create a database entry when storing data</p>
</dd>
</dl>
</div></blockquote>
<ul class="simple">
<li><p>Helper methods</p></li>
</ul>
<blockquote>
<div><p>create(key, <a href="#id1"><span class="problematic" id="id2">**</span></a>kwargs)
start() - start script (this usually happens automatically at creation</p>
<blockquote>
<div><p>and obj.script.add() etc)</p>
</div></blockquote>
<p>stop() - stop script, and delete it
pause() - put the script on hold, until unpause() is called. If script</p>
<blockquote>
<div><p>is persistent, the pause state will survive a shutdown.</p>
</div></blockquote>
<dl class="simple">
<dt>unpause() - restart a previously paused script. The script will continue</dt><dd><p>from the paused timer (but at_start() will be called).</p>
</dd>
<dt>time_until_next_repeat() - if a timed script (interval&gt;0), returns time</dt><dd><p>until next tick</p>
</dd>
</dl>
</div></blockquote>
<ul class="simple">
<li><p>Hook methods (should also include self as the first argument):</p></li>
</ul>
<blockquote>
<div><dl>
<dt>at_script_creation() - called only once, when an object of this</dt><dd><p>class is first created.</p>
</dd>
<dt>is_valid() - is called to check if the script is valid to be running</dt><dd><blockquote>
<div><p>at the current time. If is_valid() returns False, the running
script is stopped and removed from the game. You can use this
to check state changes (i.e. an script tracking some combat
stats at regular intervals is only valid to run while there is
actual combat going on).</p>
</div></blockquote>
<dl class="simple">
<dt>at_start() - Called every time the script is started, which for persistent</dt><dd><p>scripts is at least once every server start. Note that this is
unaffected by self.delay_start, which only delays the first
call to at_repeat().</p>
</dd>
<dt>at_repeat() - Called every self.interval seconds. It will be called</dt><dd><p>immediately upon launch unless self.delay_start is True, which
will delay the first call of this method by self.interval
seconds. If self.interval==0, this method will never
be called.</p>
</dd>
</dl>
<p>at_pause()
at_stop() - Called as the script object is stopped and is about to be</p>
<blockquote>
<div><p>removed from the game, e.g. because is_valid() returned False.</p>
</div></blockquote>
<p>at_script_delete()
at_server_reload() - Called when server reloads. Can be used to</p>
<blockquote>
<div><p>save temporary variables you want should survive a reload.</p>
</div></blockquote>
<p>at_server_shutdown() - called at a full server shutdown.
at_server_start()</p>
</dd>
</dl>
</div></blockquote>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.create">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">create</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DefaultScript.create"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.create" title="Link to this definition"></a></dt>
<dd><p>Provides a passthrough interface to the utils.create_script() function.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>key</strong> (<em>str</em>) Name of the new object.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><em>object (Object)</em> A newly created object of the given typeclass.
errors (list): A list of errors in string form, if any.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.at_script_creation">
<span class="sig-name descname"><span class="pre">at_script_creation</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_script_creation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.at_script_creation" title="Link to this definition"></a></dt>
<dd><p>Only called once, when script is first created.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.is_valid">
<span class="sig-name descname"><span class="pre">is_valid</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DefaultScript.is_valid"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.is_valid" title="Link to this definition"></a></dt>
<dd><p>Is called to check if the scripts timer is valid to run at this time.
Should return a boolean. If False, the timer will be stopped.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.at_start">
<span class="sig-name descname"><span class="pre">at_start</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_start"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.at_start" title="Link to this definition"></a></dt>
<dd><p>Called whenever the script timer is started, which for persistent
timed scripts is at least once every server start. It will also be
called when starting again after a pause (including after a
server reload).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.at_repeat">
<span class="sig-name descname"><span class="pre">at_repeat</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_repeat"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.at_repeat" title="Link to this definition"></a></dt>
<dd><p>Called repeatedly if this Script is set to repeat regularly.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.at_pause">
<span class="sig-name descname"><span class="pre">at_pause</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">manual_pause</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_pause"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.at_pause" title="Link to this definition"></a></dt>
<dd><p>Called when this scripts timer pauses.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>manual_pause</strong> (<em>bool</em>) If set, pausing was done by a direct call. The
non-manual pause indicates the script was paused as part of
the server reload.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.at_stop">
<span class="sig-name descname"><span class="pre">at_stop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_stop"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.at_stop" title="Link to this definition"></a></dt>
<dd><p>Called whenever when its time for this scripts timer to stop (either
because is_valid returned False, it ran out of iterations or it was manuallys
stopped.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.at_script_delete">
<span class="sig-name descname"><span class="pre">at_script_delete</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_script_delete"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.at_script_delete" title="Link to this definition"></a></dt>
<dd><p>Called when the Script is deleted, before stopping the timer.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>bool</em> If False, the deletion is aborted.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.at_server_reload">
<span class="sig-name descname"><span class="pre">at_server_reload</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_server_reload"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.at_server_reload" title="Link to this definition"></a></dt>
<dd><p>This hook is called whenever the server is shutting down for
restart/reboot. If you want to, for example, save
non-persistent properties across a restart, this is the place
to do it.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.at_server_shutdown">
<span class="sig-name descname"><span class="pre">at_server_shutdown</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_server_shutdown"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.at_server_shutdown" title="Link to this definition"></a></dt>
<dd><p>This hook is called whenever the server is shutting down fully
(i.e. not for a restart).</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.at_server_start">
<span class="sig-name descname"><span class="pre">at_server_start</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DefaultScript.at_server_start"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.at_server_start" title="Link to this definition"></a></dt>
<dd><p>This hook is called after the server has started. It can be used to add
post-startup setup for Scripts without a timer component (for which at_start
could be used).</p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.DoesNotExist">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">DoesNotExist</span></span><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.DoesNotExist" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.DoesNotExist" title="evennia.scripts.scripts.ScriptBase.DoesNotExist"><code class="xref py py-class docutils literal notranslate"><span class="pre">DoesNotExist</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.MultipleObjectsReturned">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">MultipleObjectsReturned</span></span><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.MultipleObjectsReturned" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.MultipleObjectsReturned" title="evennia.scripts.scripts.ScriptBase.MultipleObjectsReturned"><code class="xref py py-class docutils literal notranslate"><span class="pre">MultipleObjectsReturned</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.NotUpdated">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">NotUpdated</span></span><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.NotUpdated" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.NotUpdated" title="evennia.scripts.scripts.ScriptBase.NotUpdated"><code class="xref py py-class docutils literal notranslate"><span class="pre">NotUpdated</span></code></a></p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.path">
<span class="sig-name descname"><span class="pre">path</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'evennia.scripts.scripts.DefaultScript'</span></em><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.path" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DefaultScript.typename">
<span class="sig-name descname"><span class="pre">typename</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'DefaultScript'</span></em><a class="headerlink" href="#evennia.scripts.scripts.DefaultScript.typename" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DoNothing">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.scripts.scripts.</span></span><span class="sig-name descname"><span class="pre">DoNothing</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DoNothing"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DoNothing" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.scripts.scripts.DefaultScript" title="evennia.scripts.scripts.DefaultScript"><code class="xref py py-class docutils literal notranslate"><span class="pre">DefaultScript</span></code></a></p>
<p>A script that does nothing. Used as default fallback.</p>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DoNothing.at_script_creation">
<span class="sig-name descname"><span class="pre">at_script_creation</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#DoNothing.at_script_creation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.DoNothing.at_script_creation" title="Link to this definition"></a></dt>
<dd><p>Setup the script</p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DoNothing.DoesNotExist">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">DoesNotExist</span></span><a class="headerlink" href="#evennia.scripts.scripts.DoNothing.DoesNotExist" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.DoesNotExist" title="evennia.scripts.scripts.DefaultScript.DoesNotExist"><code class="xref py py-class docutils literal notranslate"><span class="pre">DoesNotExist</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DoNothing.MultipleObjectsReturned">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">MultipleObjectsReturned</span></span><a class="headerlink" href="#evennia.scripts.scripts.DoNothing.MultipleObjectsReturned" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.MultipleObjectsReturned" title="evennia.scripts.scripts.DefaultScript.MultipleObjectsReturned"><code class="xref py py-class docutils literal notranslate"><span class="pre">MultipleObjectsReturned</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DoNothing.NotUpdated">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">NotUpdated</span></span><a class="headerlink" href="#evennia.scripts.scripts.DoNothing.NotUpdated" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.NotUpdated" title="evennia.scripts.scripts.DefaultScript.NotUpdated"><code class="xref py py-class docutils literal notranslate"><span class="pre">NotUpdated</span></code></a></p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DoNothing.path">
<span class="sig-name descname"><span class="pre">path</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'evennia.scripts.scripts.DoNothing'</span></em><a class="headerlink" href="#evennia.scripts.scripts.DoNothing.path" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.DoNothing.typename">
<span class="sig-name descname"><span class="pre">typename</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'DoNothing'</span></em><a class="headerlink" href="#evennia.scripts.scripts.DoNothing.typename" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Store">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.scripts.scripts.</span></span><span class="sig-name descname"><span class="pre">Store</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#Store"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Store" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.scripts.scripts.DefaultScript" title="evennia.scripts.scripts.DefaultScript"><code class="xref py py-class docutils literal notranslate"><span class="pre">DefaultScript</span></code></a></p>
<p>Simple storage script</p>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Store.at_script_creation">
<span class="sig-name descname"><span class="pre">at_script_creation</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#Store.at_script_creation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Store.at_script_creation" title="Link to this definition"></a></dt>
<dd><p>Setup the script</p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Store.DoesNotExist">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">DoesNotExist</span></span><a class="headerlink" href="#evennia.scripts.scripts.Store.DoesNotExist" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.DoesNotExist" title="evennia.scripts.scripts.DefaultScript.DoesNotExist"><code class="xref py py-class docutils literal notranslate"><span class="pre">DoesNotExist</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Store.MultipleObjectsReturned">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">MultipleObjectsReturned</span></span><a class="headerlink" href="#evennia.scripts.scripts.Store.MultipleObjectsReturned" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.MultipleObjectsReturned" title="evennia.scripts.scripts.DefaultScript.MultipleObjectsReturned"><code class="xref py py-class docutils literal notranslate"><span class="pre">MultipleObjectsReturned</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Store.NotUpdated">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">NotUpdated</span></span><a class="headerlink" href="#evennia.scripts.scripts.Store.NotUpdated" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.NotUpdated" title="evennia.scripts.scripts.DefaultScript.NotUpdated"><code class="xref py py-class docutils literal notranslate"><span class="pre">NotUpdated</span></code></a></p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Store.path">
<span class="sig-name descname"><span class="pre">path</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'evennia.scripts.scripts.Store'</span></em><a class="headerlink" href="#evennia.scripts.scripts.Store.path" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Store.typename">
<span class="sig-name descname"><span class="pre">typename</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'Store'</span></em><a class="headerlink" href="#evennia.scripts.scripts.Store.typename" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.scripts.scripts.</span></span><span class="sig-name descname"><span class="pre">Deferred</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">canceller</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Awaitable</span></code>[<code class="xref py py-obj docutils literal notranslate"><span class="pre">_SelfResultT</span></code>]</p>
<p>This is a callback which will be put off until later.</p>
<p>Why do we want this? Well, in cases where a function in a threaded
program would block until it gets a result, for Twisted it should
not block. Instead, it should return a L{Deferred}.</p>
<p>This can be implemented for protocols that run over the network by
writing an asynchronous protocol for L{twisted.internet}. For methods
that come from outside packages that are not under our control, we use
threads (see for example L{twisted.enterprise.adbapi}).</p>
<p>For more information about Deferreds, see doc/core/howto/defer.html or
U{<a class="reference external" href="http://twistedmatrix.com/documents/current/core/howto/defer.html">http://twistedmatrix.com/documents/current/core/howto/defer.html</a>}</p>
<p>When creating a Deferred, you may provide a canceller function, which
will be called by d.cancel() to let you do any clean-up necessary if the
user decides not to wait for the deferred to complete.</p>
<dl class="simple">
<dt>&#64;ivar called: A flag which is C{False} until either C{callback} or</dt><dd><p>C{errback} is called and afterwards always C{True}.</p>
</dd>
<dt>&#64;ivar paused: A counter of how many unmatched C{pause} calls have been made</dt><dd><p>on this instance.</p>
</dd>
<dt>&#64;ivar _suppressAlreadyCalled: A flag used by the cancellation mechanism</dt><dd><p>which is C{True} if the Deferred has no canceller and has been
cancelled, C{False} otherwise. If C{True}, it can be expected that
C{callback} or C{errback} will eventually be called and the result
should be silently discarded.</p>
</dd>
<dt>&#64;ivar _runningCallbacks: A flag which is C{True} while this instance is</dt><dd><p>executing its callback chain, used to stop recursive execution of
L{_runCallbacks}</p>
</dd>
<dt>&#64;ivar _chainedTo: If this L{Deferred} is waiting for the result of another</dt><dd><p>L{Deferred}, this is a reference to the other Deferred. Otherwise,
L{None}.</p>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.__init__">
<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">canceller</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.__init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.__init__" title="Link to this definition"></a></dt>
<dd><p>Initialize a L{Deferred}.</p>
<dl>
<dt>&#64;param canceller: a callable used to stop the pending operation</dt><dd><p>scheduled by this L{Deferred} when L{Deferred.cancel} is invoked.
The canceller will be passed the deferred whose cancellation is
requested (i.e., C{self}).</p>
<p>If a canceller is not given, or does not invoke its arguments
C{callback} or C{errback} method, L{Deferred.cancel} will
invoke L{Deferred.errback} with a L{CancelledError}.</p>
<p>Note that if a canceller is not given, C{callback} or
C{errback} may still be invoked exactly once, even though
defer.py will have already invoked C{errback}, as described
above. This allows clients of code which returns a L{Deferred}
to cancel it without requiring the L{Deferred} instantiator to
provide any specific implementation support for cancellation.
New in 10.1.</p>
</dd>
<dt>&#64;type canceller: a 1-argument callable which takes a L{Deferred}. The</dt><dd><p>return result is ignored.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.addBoth">
<span class="sig-name descname"><span class="pre">addBoth</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">callback</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.addBoth"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.addBoth" title="Link to this definition"></a></dt>
<dd><p>Convenience method for adding a single callable as both a callback
and an errback.</p>
<p>See L{addCallbacks}.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.addCallback">
<span class="sig-name descname"><span class="pre">addCallback</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">callback</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.addCallback"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.addCallback" title="Link to this definition"></a></dt>
<dd><p>Convenience method for adding just a callback.</p>
<p>See L{addCallbacks}.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.addCallbacks">
<span class="sig-name descname"><span class="pre">addCallbacks</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">callback</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">_NextResultT</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">_NextResultT</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Failure</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">_NextResultT</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">_NextResultT</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Failure</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">errback</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">_NextResultT</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">_NextResultT</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Failure</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">_NextResultT</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">_NextResultT</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Failure</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">callbackArgs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">()</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">callbackKeywords</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Mapping</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">mappingproxy({})</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">errbackArgs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">object</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">()</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">errbackKeywords</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Mapping</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">object</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">mappingproxy({})</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">_NextResultT</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.addCallbacks"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.addCallbacks" title="Link to this definition"></a></dt>
<dd><p>Add a pair of callbacks (success and error) to this L{Deferred}.</p>
<p>These will be executed when the master callback is run.</p>
<dl class="simple">
<dt>&#64;note: The signature of this function was designed many years before</dt><dd><p>PEP 612; ParamSpec provides no mechanism to annotate parameters
like C{callbackArgs}; this is therefore inherently less type-safe
than calling C{addCallback} and C{addErrback} separately.</p>
</dd>
</dl>
<p>&#64;return: C{self}.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.addErrback">
<span class="sig-name descname"><span class="pre">addErrback</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">errback</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Any</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.addErrback"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.addErrback" title="Link to this definition"></a></dt>
<dd><p>Convenience method for adding just an errback.</p>
<p>See L{addCallbacks}.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.addTimeout">
<span class="sig-name descname"><span class="pre">addTimeout</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">timeout:</span> <span class="pre">float,</span> <span class="pre">clock:</span> <span class="pre">&lt;InterfaceClass</span> <span class="pre">twisted.internet.interfaces.IReactorTime&gt;,</span> <span class="pre">onTimeoutCancel:</span> <span class="pre">~typing.Callable[[~twisted.internet.defer._SelfResultT</span> <span class="pre">|</span> <span class="pre">~twisted.python.failure.Failure,</span> <span class="pre">float],</span> <span class="pre">~twisted.internet.defer._NextResultT</span> <span class="pre">|</span> <span class="pre">~twisted.python.failure.Failure]</span> <span class="pre">|</span> <span class="pre">None</span> <span class="pre">=</span> <span class="pre">None</span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">_SelfResultT</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">_NextResultT</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.addTimeout"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.addTimeout" title="Link to this definition"></a></dt>
<dd><p>Time out this L{Deferred} by scheduling it to be cancelled after
C{timeout} seconds.</p>
<p>The timeout encompasses all the callbacks and errbacks added to this
L{defer.Deferred} before the call to L{addTimeout}, and none added
after the call.</p>
<p>If this L{Deferred} gets timed out, it errbacks with a L{TimeoutError},
unless a cancelable function was passed to its initialization or unless
a different C{onTimeoutCancel} callable is provided.</p>
<dl class="simple">
<dt>&#64;param timeout: number of seconds to wait before timing out this</dt><dd><p>L{Deferred}</p>
</dd>
</dl>
<p>&#64;param clock: The object which will be used to schedule the timeout.
&#64;param onTimeoutCancel: A callable which is called immediately after</p>
<blockquote>
<div><p>this L{Deferred} times out, and not if this L{Deferred} is
otherwise cancelled before the timeout. It takes an arbitrary
value, which is the value of this L{Deferred} at that exact point
in time (probably a L{CancelledError} L{Failure}), and the
C{timeout}. The default callable (if C{None} is provided) will
translate a L{CancelledError} L{Failure} into a L{TimeoutError}.</p>
</div></blockquote>
<p>&#64;return: C{self}.</p>
<p>&#64;since: 16.5</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.asFuture">
<span class="sig-name descname"><span class="pre">asFuture</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">loop</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">AbstractEventLoop</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Future</span><span class="p"><span class="pre">[</span></span><span class="pre">_SelfResultT</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.asFuture"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.asFuture" title="Link to this definition"></a></dt>
<dd><p>Adapt this L{Deferred} into a L{Future} which is bound to C{loop}.</p>
<dl class="simple">
<dt>&#64;note: converting a L{Deferred} to an L{Future} consumes both</dt><dd><p>its result and its errors, so this method implicitly converts
C{self} into a L{Deferred} firing with L{None}, regardless of what
its result previously would have been.</p>
</dd>
</dl>
<p>&#64;since: Twisted 17.5.0</p>
<p>&#64;param loop: The L{asyncio} event loop to bind the L{Future} to.</p>
<p>&#64;return: A L{Future} which will fire when the L{Deferred} fires.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.callback">
<span class="sig-name descname"><span class="pre">callback</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">result</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">_SelfResultT</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Failure</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.callback"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.callback" title="Link to this definition"></a></dt>
<dd><p>Run all success callbacks that have been added to this L{Deferred}.</p>
<p>Each callback will have its result passed as the first argument to
the next; this way, the callbacks act as a processing chain. If
the success-callback returns a L{Failure} or raises an L{Exception},
processing will continue on the <em>error</em> callback chain. If a
callback (or errback) returns another L{Deferred}, this L{Deferred}
will be chained to it (and further callbacks will not run until that
L{Deferred} has a result).</p>
<p>An instance of L{Deferred} may only have either L{callback} or
L{errback} called on it, and only once.</p>
<dl class="simple">
<dt>&#64;param result: The object which will be passed to the first callback</dt><dd><p>added to this L{Deferred} (via L{addCallback}), unless C{result} is
a L{Failure}, in which case the behavior is the same as calling
C{errback(result)}.</p>
</dd>
<dt>&#64;raise AlreadyCalledError: If L{callback} or L{errback} has already been</dt><dd><p>called on this L{Deferred}.</p>
</dd>
</dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.called">
<span class="sig-name descname"><span class="pre">called</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="headerlink" href="#evennia.scripts.scripts.Deferred.called" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.cancel">
<span class="sig-name descname"><span class="pre">cancel</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.cancel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.cancel" title="Link to this definition"></a></dt>
<dd><p>Cancel this L{Deferred}.</p>
<p>If the L{Deferred} has not yet had its C{errback} or C{callback} method
invoked, call the canceller function provided to the constructor. If
that function does not invoke C{callback} or C{errback}, or if no
canceller function was provided, errback with L{CancelledError}.</p>
<p>If this L{Deferred} is waiting on another L{Deferred}, forward the
cancellation to the other L{Deferred}.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.chainDeferred">
<span class="sig-name descname"><span class="pre">chainDeferred</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">d</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">_SelfResultT</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.chainDeferred"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.chainDeferred" title="Link to this definition"></a></dt>
<dd><p>Chain another L{Deferred} to this L{Deferred}.</p>
<p>This method adds callbacks to this L{Deferred} to call C{d}s callback
or errback, as appropriate. It is merely a shorthand way of performing
the following:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">d1</span><span class="o">.</span><span class="n">addCallbacks</span><span class="p">(</span><span class="n">d2</span><span class="o">.</span><span class="n">callback</span><span class="p">,</span> <span class="n">d2</span><span class="o">.</span><span class="n">errback</span><span class="p">)</span>
</pre></div>
</div>
<p>When you chain a deferred C{d2} to another deferred C{d1} with
C{d1.chainDeferred(d2)}, you are making C{d2} participate in the
callback chain of C{d1}.
Thus any event that fires C{d1} will also fire C{d2}.
However, the converse is B{not} true; if C{d2} is fired, C{d1} will not
be affected.</p>
<p>Note that unlike the case where chaining is caused by a L{Deferred}
being returned from a callback, it is possible to cause the call
stack size limit to be exceeded by chaining many L{Deferred}s
together with C{chainDeferred}.</p>
<p>&#64;return: C{self}.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.debug">
<span class="sig-name descname"><span class="pre">debug</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="headerlink" href="#evennia.scripts.scripts.Deferred.debug" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.errback">
<span class="sig-name descname"><span class="pre">errback</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">fail</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Failure</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">BaseException</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.errback"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.errback" title="Link to this definition"></a></dt>
<dd><p>Run all error callbacks that have been added to this L{Deferred}.</p>
<p>Each callback will have its result passed as the first
argument to the next; this way, the callbacks act as a
processing chain. Also, if the error-callback returns a non-Failure
or doesnt raise an L{Exception}, processing will continue on the
<em>success</em>-callback chain.</p>
<p>If the argument thats passed to me is not a L{Failure} instance,
it will be embedded in one. If no argument is passed, a
L{Failure} instance will be created based on the current
traceback stack.</p>
<p>Passing a string as <a href="#id3"><span class="problematic" id="id4">**</span></a>fail is deprecated, and will be punished with
a warning message.</p>
<p>An instance of L{Deferred} may only have either L{callback} or
L{errback} called on it, and only once.</p>
<dl class="simple">
<dt>&#64;param fail: The L{Failure} object which will be passed to the first</dt><dd><p>errback added to this L{Deferred} (via L{addErrback}).
Alternatively, a L{Exception} instance from which a L{Failure} will
be constructed (with no traceback) or L{None} to create a L{Failure}
instance from the current exception state (with a traceback).</p>
</dd>
<dt>&#64;raise AlreadyCalledError: If L{callback} or L{errback} has already been</dt><dd><p>called on this L{Deferred}.</p>
</dd>
<dt>&#64;raise NoCurrentExceptionError: If C{fail} is L{None} but there is</dt><dd><p>no current exception state.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.fromCoroutine">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">fromCoroutine</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">coro</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Coroutine</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">_T</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Generator</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">_T</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">_T</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.fromCoroutine"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.fromCoroutine" title="Link to this definition"></a></dt>
<dd><p>Schedule the execution of a coroutine that awaits on L{Deferred}s,
wrapping it in a L{Deferred} that will fire on success/failure of the
coroutine.</p>
<p>Coroutine functions return a coroutine object, similar to how
generators work. This function turns that coroutine into a Deferred,
meaning that it can be used in regular Twisted code. For example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">treq</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">twisted.internet.defer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Deferred</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">twisted.internet.task</span><span class="w"> </span><span class="kn">import</span> <span class="n">react</span>
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">crawl</span><span class="p">(</span><span class="n">pages</span><span class="p">):</span>
<span class="n">results</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">page</span> <span class="ow">in</span> <span class="n">pages</span><span class="p">:</span>
<span class="n">results</span><span class="p">[</span><span class="n">page</span><span class="p">]</span> <span class="o">=</span> <span class="k">await</span> <span class="n">treq</span><span class="o">.</span><span class="n">content</span><span class="p">(</span><span class="k">await</span> <span class="n">treq</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">page</span><span class="p">))</span>
<span class="k">return</span> <span class="n">results</span>
<span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">reactor</span><span class="p">):</span>
<span class="n">pages</span> <span class="o">=</span> <span class="p">[</span>
<span class="s2">&quot;http://localhost:8080&quot;</span>
<span class="p">]</span>
<span class="n">d</span> <span class="o">=</span> <span class="n">Deferred</span><span class="o">.</span><span class="n">fromCoroutine</span><span class="p">(</span><span class="n">crawl</span><span class="p">(</span><span class="n">pages</span><span class="p">))</span>
<span class="n">d</span><span class="o">.</span><span class="n">addCallback</span><span class="p">(</span><span class="nb">print</span><span class="p">)</span>
<span class="k">return</span> <span class="n">d</span>
<span class="n">react</span><span class="p">(</span><span class="n">main</span><span class="p">)</span>
</pre></div>
</div>
<p>&#64;since: Twisted 21.2.0</p>
<p>&#64;param coro: The coroutine object to schedule.</p>
<p>&#64;raise ValueError: If C{coro} is not a coroutine or generator.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.fromFuture">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">fromFuture</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">future</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Future</span><span class="p"><span class="pre">[</span></span><span class="pre">_SelfResultT</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">_SelfResultT</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.fromFuture"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.fromFuture" title="Link to this definition"></a></dt>
<dd><p>Adapt a L{Future} to a L{Deferred}.</p>
<dl class="simple">
<dt>&#64;note: This creates a L{Deferred} from a L{Future}, I{not} from</dt><dd><p>a C{coroutine}; in other words, you will need to call
L{asyncio.ensure_future}, L{asyncio.loop.create_task} or create an
L{asyncio.Task} yourself to get from a C{coroutine} to a
L{Future} if what you have is an awaitable coroutine and
not a L{Future}. (The length of this list of techniques is
exactly why we have left it to the caller!)</p>
</dd>
</dl>
<p>&#64;since: Twisted 17.5.0</p>
<p>&#64;param future: The L{Future} to adapt.</p>
<p>&#64;return: A L{Deferred} which will fire when the L{Future} fires.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.pause">
<span class="sig-name descname"><span class="pre">pause</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.pause"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.pause" title="Link to this definition"></a></dt>
<dd><p>Stop processing on a L{Deferred} until L{unpause}() is called.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.paused">
<span class="sig-name descname"><span class="pre">paused</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0</span></em><a class="headerlink" href="#evennia.scripts.scripts.Deferred.paused" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.Deferred.unpause">
<span class="sig-name descname"><span class="pre">unpause</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#Deferred.unpause"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.Deferred.unpause" title="Link to this definition"></a></dt>
<dd><p>Process all callbacks made since L{pause}() was called.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ExtendedLoopingCall">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.scripts.scripts.</span></span><span class="sig-name descname"><span class="pre">ExtendedLoopingCall</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">object</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">a</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">object</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">object</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ExtendedLoopingCall"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ExtendedLoopingCall" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.scripts.scripts.LoopingCall" title="twisted.internet.task.LoopingCall"><code class="xref py py-class docutils literal notranslate"><span class="pre">LoopingCall</span></code></a></p>
<p>Custom child of LoopingCall that can start at a delay different than
<strong>self.interval</strong> and self.count=0. This allows it to support pausing
by resuming at a later period.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ExtendedLoopingCall.start_delay">
<span class="sig-name descname"><span class="pre">start_delay</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#evennia.scripts.scripts.ExtendedLoopingCall.start_delay" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ExtendedLoopingCall.callcount">
<span class="sig-name descname"><span class="pre">callcount</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">0</span></em><a class="headerlink" href="#evennia.scripts.scripts.ExtendedLoopingCall.callcount" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ExtendedLoopingCall.start">
<span class="sig-name descname"><span class="pre">start</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">interval</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">now</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">start_delay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">count_start</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ExtendedLoopingCall.start"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ExtendedLoopingCall.start" title="Link to this definition"></a></dt>
<dd><p>Start running function every interval seconds.</p>
<p>This overloads the LoopingCall default by offering the
start_delay keyword and ability to repeat.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>interval</strong> (<em>int</em>) Repeat interval in seconds.</p></li>
<li><p><strong>now</strong> (<em>bool</em><em>, </em><em>optional</em>) Whether to start immediately or after
<strong>start_delay</strong> seconds.</p></li>
<li><p><strong>start_delay</strong> (<em>int</em><em>, </em><em>optional</em>) This only applies is <strong>now=False</strong>. It gives
number of seconds to wait before starting. If <strong>None</strong>, use
<strong>interval</strong> as this value instead. Internally, this is used as a
way to start with a variable start time after a pause.</p></li>
<li><p><strong>count_start</strong> (<em>int</em>) Number of repeats to start at. The count
goes up every time the system repeats. This is used to
implement something repeating <strong>N</strong> number of times etc.</p></li>
</ul>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><ul class="simple">
<li><p><strong>AssertError</strong> if trying to start a task which is already running.</p></li>
<li><p><strong>ValueError</strong> If interval is set to an invalid value &lt; 0.</p></li>
</ul>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>As opposed to Twisteds inbuilt count mechanism, this
system will count also if force_repeat() was called rather
than just the number of <strong>interval</strong> seconds since the start.
This allows us to force-step through a limited number of
steps if we want.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ExtendedLoopingCall.force_repeat">
<span class="sig-name descname"><span class="pre">force_repeat</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ExtendedLoopingCall.force_repeat"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ExtendedLoopingCall.force_repeat" title="Link to this definition"></a></dt>
<dd><p>Force-fire the callback</p>
<dl class="field-list simple">
<dt class="field-odd">Raises<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>AssertionError</strong> When trying to force a task that is not
running.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ExtendedLoopingCall.next_call_time">
<span class="sig-name descname"><span class="pre">next_call_time</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ExtendedLoopingCall.next_call_time"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ExtendedLoopingCall.next_call_time" title="Link to this definition"></a></dt>
<dd><p>Get the next call time. This also takes the eventual effect
of start_delay into account.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>int or None</em> </p>
<dl class="simple">
<dt>The time in seconds until the next call. This</dt><dd><p>takes <strong>start_delay</strong> into account. Returns <strong>None</strong> if
the task is not running.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.scripts.scripts.LoopingCall">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.scripts.scripts.</span></span><span class="sig-name descname"><span class="pre">LoopingCall</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">object</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">a</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">object</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">object</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/twisted/internet/task.html#LoopingCall"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.LoopingCall" title="Link 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>Call a function repeatedly.</p>
<p>If C{f} returns a deferred, rescheduling will not take place until the
deferred has fired. The result value is ignored.</p>
<p>&#64;ivar f: The function to call.
&#64;ivar a: A tuple of arguments to pass the function.
&#64;ivar kw: A dictionary of keyword arguments to pass to the function.
&#64;ivar clock: A provider of</p>
<blockquote>
<div><p>L{twisted.internet.interfaces.IReactorTime}. The default is
L{twisted.internet.reactor}. Feel free to set this to
something else, but it probably ought to be set <em>before</em>
calling L{start}.</p>
</div></blockquote>
<dl class="simple">
<dt>&#64;ivar running: A flag which is C{True} while C{f} is scheduled to be called</dt><dd><p>(or is currently being called). It is set to C{True} when L{start} is
called and set to C{False} when L{stop} is called or if C{f} raises an
exception. In either case, it will be C{False} by the time the
C{Deferred} returned by L{start} fires its callback or errback.</p>
</dd>
<dt>&#64;ivar _realLastTime: When counting skips, the time at which the skip</dt><dd><p>counter was last invoked.</p>
</dd>
<dt>&#64;ivar _runAtStart: A flag indicating whether the now argument was passed</dt><dd><p>to L{LoopingCall.start}.</p>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.LoopingCall.__init__">
<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">...</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">object</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">a</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">object</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">object</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/twisted/internet/task.html#LoopingCall.__init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.LoopingCall.__init__" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.LoopingCall.call">
<span class="sig-name descname"><span class="pre">call</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">&lt;InterfaceClass</span> <span class="pre">twisted.internet.interfaces.IDelayedCall&gt;</span> <span class="pre">|</span> <span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#evennia.scripts.scripts.LoopingCall.call" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.scripts.scripts.LoopingCall.deferred">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">deferred</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall" title="twisted.internet.task.LoopingCall"><span class="pre">LoopingCall</span></a><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#evennia.scripts.scripts.LoopingCall.deferred" title="Link to this definition"></a></dt>
<dd><p>DEPRECATED. L{Deferred} fired when loop stops or fails.</p>
<p>Use the L{Deferred} returned by L{LoopingCall.start}.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.LoopingCall.interval">
<span class="sig-name descname"><span class="pre">interval</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#evennia.scripts.scripts.LoopingCall.interval" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.LoopingCall.reset">
<span class="sig-name descname"><span class="pre">reset</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/twisted/internet/task.html#LoopingCall.reset"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.LoopingCall.reset" title="Link to this definition"></a></dt>
<dd><p>Skip the next iteration and reset the timer.</p>
<p>&#64;since: 11.1</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.LoopingCall.running">
<span class="sig-name descname"><span class="pre">running</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">False</span></em><a class="headerlink" href="#evennia.scripts.scripts.LoopingCall.running" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.LoopingCall.start">
<span class="sig-name descname"><span class="pre">start</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">interval</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">float</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">now</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall" title="twisted.internet.task.LoopingCall"><span class="pre">LoopingCall</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../_modules/twisted/internet/task.html#LoopingCall.start"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.LoopingCall.start" title="Link to this definition"></a></dt>
<dd><p>Start running function every interval seconds.</p>
<p>&#64;param interval: The number of seconds between calls. May be
less than one. Precision will depend on the underlying
platform, the available hardware, and the load on the system.</p>
<p>&#64;param now: If True, run this call right now. Otherwise, wait
until the interval has elapsed before beginning.</p>
<p>&#64;return: A Deferred whose callback will be invoked with
C{self} when C{self.stop} is called, or whose errback will be
invoked when the function raises an exception or returned a
deferred that has its errback invoked.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.LoopingCall.starttime">
<span class="sig-name descname"><span class="pre">starttime</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#evennia.scripts.scripts.LoopingCall.starttime" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.LoopingCall.stop">
<span class="sig-name descname"><span class="pre">stop</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/twisted/internet/task.html#LoopingCall.stop"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.LoopingCall.stop" title="Link to this definition"></a></dt>
<dd><p>Stop running function.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.LoopingCall.withCount">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">withCount</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">countCallable</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Callable</span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">object</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall" title="twisted.internet.task.LoopingCall"><span class="pre">LoopingCall</span></a></span></span><a class="reference internal" href="../_modules/twisted/internet/task.html#LoopingCall.withCount"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.LoopingCall.withCount" title="Link to this definition"></a></dt>
<dd><p>An alternate constructor for L{LoopingCall} that makes available the
number of calls which should have occurred since it was last invoked.</p>
<p>Note that this number is an C{int} value; It represents the discrete
number of calls that should have been made. For example, if you are
using a looping call to display an animation with discrete frames, this
number would be the number of frames to advance.</p>
<p>The count is normally 1, but can be higher. For example, if the reactor
is blocked and takes too long to invoke the L{LoopingCall}, a Deferred
returned from a previous call is not fired before an interval has
elapsed, or if the callable itself blocks for longer than an interval,
preventing I{itself} from being called.</p>
<p>When running with an interval of 0, count will be always 1.</p>
<dl class="simple">
<dt>&#64;param countCallable: A callable that will be invoked each time the</dt><dd><p>resulting LoopingCall is run, with an integer specifying the number
of calls that should have been invoked.</p>
</dd>
<dt>&#64;return: An instance of L{LoopingCall} with call counting enabled,</dt><dd><p>which provides the count as the first positional argument.</p>
</dd>
</dl>
<p>&#64;since: 9.0</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.scripts.scripts.</span></span><span class="sig-name descname"><span class="pre">ScriptBase</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.scripts.models.html#evennia.scripts.models.ScriptDB" title="evennia.scripts.models.ScriptDB"><code class="xref py py-class docutils literal notranslate"><span class="pre">ScriptDB</span></code></a></p>
<p>Base class for scripts. Dont inherit from this, inherit from the
class <strong>DefaultScript</strong> below instead.</p>
<p>This handles the timer-component of the Script.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.objects">
<span class="sig-name descname"><span class="pre">objects</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">&lt;evennia.scripts.manager.ScriptManager</span> <span class="pre">object&gt;</span></em><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.objects" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.at_idmapper_flush">
<span class="sig-name descname"><span class="pre">at_idmapper_flush</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_idmapper_flush"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.at_idmapper_flush" title="Link to this definition"></a></dt>
<dd><p>If were flushing this object, make sure the LoopingCall is gone too.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.at_first_save">
<span class="sig-name descname"><span class="pre">at_first_save</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_first_save"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.at_first_save" title="Link to this definition"></a></dt>
<dd><p>This is called after very first time this object is saved.
Generally, you dont need to overload this, but only the hooks
called by this method.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.delete">
<span class="sig-name descname"><span class="pre">delete</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.delete"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.delete" title="Link to this definition"></a></dt>
<dd><p>Delete the Script. Normally stops any timer task. This fires at_script_delete before
deletion.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>bool</em> </p>
<dl class="simple">
<dt>If deletion was successful or not. Only time this can fail would be if</dt><dd><p>the script was already previously deleted, or <strong>at_script_delete</strong> returns
False.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.basetype_setup">
<span class="sig-name descname"><span class="pre">basetype_setup</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.basetype_setup"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.basetype_setup" title="Link to this definition"></a></dt>
<dd><p>Changes fundamental aspects of the type. Usually changes are made in at_script creation
instead.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.at_init">
<span class="sig-name descname"><span class="pre">at_init</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_init"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.at_init" title="Link to this definition"></a></dt>
<dd><p>Called when the Script is cached in the idmapper. This is usually more reliable
than overriding <strong>__init__</strong> since the latter can be called at unexpected times.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.at_script_creation">
<span class="sig-name descname"><span class="pre">at_script_creation</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_script_creation"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.at_script_creation" title="Link to this definition"></a></dt>
<dd><p>Should be overridden in child.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.at_script_delete">
<span class="sig-name descname"><span class="pre">at_script_delete</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_script_delete"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.at_script_delete" title="Link to this definition"></a></dt>
<dd><p>Called when script is deleted, before the script timer stops.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><em>bool</em> If False, deletion is aborted.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.is_valid">
<span class="sig-name descname"><span class="pre">is_valid</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.is_valid"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.is_valid" title="Link to this definition"></a></dt>
<dd><p>If returning False, <strong>at_repeat</strong> will not be called and timer will stop
updating.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.at_repeat">
<span class="sig-name descname"><span class="pre">at_repeat</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_repeat"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.at_repeat" title="Link to this definition"></a></dt>
<dd><p>Called repeatedly every <strong>interval</strong> seconds, once <strong>.start()</strong> has
been called on the Script at least once.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>**kwargs</strong> (<em>dict</em>) Arbitrary, optional arguments for users
overriding the call (unused by default).</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.at_start">
<span class="sig-name descname"><span class="pre">at_start</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_start"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.at_start" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.at_pause">
<span class="sig-name descname"><span class="pre">at_pause</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_pause"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.at_pause" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.at_stop">
<span class="sig-name descname"><span class="pre">at_stop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.at_stop"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.at_stop" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.start">
<span class="sig-name descname"><span class="pre">start</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">interval</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">start_delay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">repeats</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.start"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.start" title="Link to this definition"></a></dt>
<dd><p>Start/Unpause timer component, optionally with new values. If given,
this will update the Scripts fields. This will start <strong>at_repeat</strong> being
called every <strong>interval</strong> seconds.</p>
<dl class="field-list simple">
<dt class="field-odd">Keyword Arguments<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>interval</strong> (<em>int</em>) How often to fire <strong>at_repeat</strong> in seconds.</p></li>
<li><p><strong>start_delay</strong> (<em>int</em>) If the start of ticking should be delayed and by how much.</p></li>
<li><p><strong>repeats</strong> (<em>int</em>) How many repeats. 0 for infinite repeats.</p></li>
<li><p><strong>**kwargs</strong> Optional (default unused) kwargs passed on into the <strong>at_start</strong> hook.</p></li>
</ul>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>If setting the <strong>start-delay</strong> of a <em>paused</em> Script, the Script will
restart exactly after that new start-delay, ignoring the time it
was paused at. If only changing the <strong>interval</strong>, the Script will
come out of pause comparing the time it spent in the <em>old</em> interval
with the <em>new</em> interval in order to determine when next to fire.</p>
<p class="rubric">Examples</p>
<ul class="simple">
<li><p>Script previously had an interval of 10s and was paused 5s into that interval.
Script is now restarted with a 20s interval. It will next fire after 15s.</p></li>
<li><p>Same Script is restarted with a 3s interval. It will fire immediately.</p></li>
</ul>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.update">
<span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">interval</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">start_delay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">repeats</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.update" title="Link to this definition"></a></dt>
<dd><p>Start/Unpause timer component, optionally with new values. If given,
this will update the Scripts fields. This will start <strong>at_repeat</strong> being
called every <strong>interval</strong> seconds.</p>
<dl class="field-list simple">
<dt class="field-odd">Keyword Arguments<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>interval</strong> (<em>int</em>) How often to fire <strong>at_repeat</strong> in seconds.</p></li>
<li><p><strong>start_delay</strong> (<em>int</em>) If the start of ticking should be delayed and by how much.</p></li>
<li><p><strong>repeats</strong> (<em>int</em>) How many repeats. 0 for infinite repeats.</p></li>
<li><p><strong>**kwargs</strong> Optional (default unused) kwargs passed on into the <strong>at_start</strong> hook.</p></li>
</ul>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>If setting the <strong>start-delay</strong> of a <em>paused</em> Script, the Script will
restart exactly after that new start-delay, ignoring the time it
was paused at. If only changing the <strong>interval</strong>, the Script will
come out of pause comparing the time it spent in the <em>old</em> interval
with the <em>new</em> interval in order to determine when next to fire.</p>
<p class="rubric">Examples</p>
<ul class="simple">
<li><p>Script previously had an interval of 10s and was paused 5s into that interval.
Script is now restarted with a 20s interval. It will next fire after 15s.</p></li>
<li><p>Same Script is restarted with a 3s interval. It will fire immediately.</p></li>
</ul>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.stop">
<span class="sig-name descname"><span class="pre">stop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.stop"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.stop" title="Link to this definition"></a></dt>
<dd><p>Stop the Scripts timer component. This will not delete the Sctipt,
just stop the regular firing of <strong>at_repeat</strong>. Running <strong>.start()</strong> will
start the timer anew, optionally with new settings..</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>**kwargs</strong> Optional (default unused) kwargs passed on into the <strong>at_stop</strong> hook.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.pause">
<span class="sig-name descname"><span class="pre">pause</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.pause"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.pause" title="Link to this definition"></a></dt>
<dd><p>Manually the Scripts timer component manually.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>**kwargs</strong> Optional (default unused) kwargs passed on into the <strong>at_pause</strong> hook.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.unpause">
<span class="sig-name descname"><span class="pre">unpause</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.unpause"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.unpause" title="Link to this definition"></a></dt>
<dd><p>Manually unpause a Paused Script.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>**kwargs</strong> Optional (default unused) kwargs passed on into the <strong>at_start</strong> hook.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.time_until_next_repeat">
<span class="sig-name descname"><span class="pre">time_until_next_repeat</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.time_until_next_repeat"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.time_until_next_repeat" title="Link to this definition"></a></dt>
<dd><p>Get time until the script fires it <strong>at_repeat</strong> hook again.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>int or None</em> </p>
<dl class="simple">
<dt>Time in seconds until the script runs again.</dt><dd><p>If not a timed script, return <strong>None</strong>.</p>
</dd>
</dl>
</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This hook is not used in any way by the scripts stepping
system; its only here for the user to be able to check in
on their scripts and when they will next be run.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.remaining_repeats">
<span class="sig-name descname"><span class="pre">remaining_repeats</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.remaining_repeats"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.remaining_repeats" title="Link to this definition"></a></dt>
<dd><p>Get the number of returning repeats for limited Scripts.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><p><em>int or None</em> </p>
<dl class="simple">
<dt>The number of repeats remaining until the Script</dt><dd><p>stops. Returns <strong>None</strong> if it has unlimited repeats.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.reset_callcount">
<span class="sig-name descname"><span class="pre">reset_callcount</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.reset_callcount"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.reset_callcount" title="Link to this definition"></a></dt>
<dd><p>Reset the count of the number of calls done.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>value</strong> (<em>int</em><em>, </em><em>optional</em>) The repeat value to reset to. Default
is to set it all the way back to 0.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This is only useful if repeats != 0.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.force_repeat">
<span class="sig-name descname"><span class="pre">force_repeat</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/scripts.html#ScriptBase.force_repeat"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.force_repeat" title="Link to this definition"></a></dt>
<dd><p>Fire a premature triggering of the script callback. This
will reset the timer and count down repeats as if the script
had fired normally.</p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.DoesNotExist">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">DoesNotExist</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.DoesNotExist" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.scripts.models.html#evennia.scripts.models.ScriptDB.DoesNotExist" title="evennia.scripts.models.ScriptDB.DoesNotExist"><code class="xref py py-class docutils literal notranslate"><span class="pre">DoesNotExist</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.MultipleObjectsReturned">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">MultipleObjectsReturned</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.MultipleObjectsReturned" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.scripts.models.html#evennia.scripts.models.ScriptDB.MultipleObjectsReturned" title="evennia.scripts.models.ScriptDB.MultipleObjectsReturned"><code class="xref py py-class docutils literal notranslate"><span class="pre">MultipleObjectsReturned</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.NotUpdated">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">NotUpdated</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.NotUpdated" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.scripts.models.html#evennia.scripts.models.ScriptDB.NotUpdated" title="evennia.scripts.models.ScriptDB.NotUpdated"><code class="xref py py-class docutils literal notranslate"><span class="pre">NotUpdated</span></code></a></p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.path">
<span class="sig-name descname"><span class="pre">path</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'evennia.scripts.scripts.ScriptBase'</span></em><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.path" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptBase.typename">
<span class="sig-name descname"><span class="pre">typename</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'ScriptBase'</span></em><a class="headerlink" href="#evennia.scripts.scripts.ScriptBase.typename" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.scripts.scripts.</span></span><span class="sig-name descname"><span class="pre">ScriptDB</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/models.html#ScriptDB"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.typeclasses.models.html#evennia.typeclasses.models.TypedObject" title="evennia.typeclasses.models.TypedObject"><code class="xref py py-class docutils literal notranslate"><span class="pre">TypedObject</span></code></a></p>
<p>The Script database representation.</p>
<dl class="simple">
<dt>The TypedObject supplies the following (inherited) properties:</dt><dd><p>key - main name
name - alias for key
typeclass_path - the path to the decorating typeclass
typeclass - auto-linked typeclass
date_created - time stamp of object creation
permissions - perm strings
dbref - #id of object
db - persistent attribute storage
ndb - non-persistent attribute storage</p>
</dd>
<dt>The ScriptDB adds the following properties:</dt><dd><p>desc - optional description of script
obj - the object the script is linked to, if any
account - the account the script is linked to (exclusive with obj)
interval - how often script should run
start_delay - if the script should start repeating right away
repeats - how many times the script should repeat
persistent - if script should survive a server reboot
is_active - bool if script is currently running</p>
</dd>
</dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.DoesNotExist">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">DoesNotExist</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.DoesNotExist" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.utils.dbserialize.html#evennia.utils.dbserialize.ObjectDoesNotExist" title="django.core.exceptions.ObjectDoesNotExist"><code class="xref py py-class docutils literal notranslate"><span class="pre">ObjectDoesNotExist</span></code></a></p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.MultipleObjectsReturned">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">MultipleObjectsReturned</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.MultipleObjectsReturned" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="py exception">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.NotUpdated">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">NotUpdated</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.NotUpdated" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">ObjectNotUpdated</span></code>, <code class="xref py py-class docutils literal notranslate"><span class="pre">DatabaseError</span></code></p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.account">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">account</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.account" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_account</strong>.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_account">
<span class="sig-name descname"><span class="pre">db_account</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_account" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
one-to-one (via ForwardOneToOneDescriptor subclass) relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Child.parent**</strong> is a <strong>**ForwardManyToOneDescriptor**</strong> instance.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_account_id">
<span class="sig-name descname"><span class="pre">db_account_id</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_account_id" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_attributes">
<span class="sig-name descname"><span class="pre">db_attributes</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_attributes" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_date_created">
<span class="sig-name descname"><span class="pre">db_date_created</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_date_created" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_desc">
<span class="sig-name descname"><span class="pre">db_desc</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_desc" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_interval">
<span class="sig-name descname"><span class="pre">db_interval</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_interval" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_is_active">
<span class="sig-name descname"><span class="pre">db_is_active</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_is_active" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_key">
<span class="sig-name descname"><span class="pre">db_key</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_key" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_lock_storage">
<span class="sig-name descname"><span class="pre">db_lock_storage</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_lock_storage" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_obj">
<span class="sig-name descname"><span class="pre">db_obj</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_obj" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
one-to-one (via ForwardOneToOneDescriptor subclass) relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Child.parent**</strong> is a <strong>**ForwardManyToOneDescriptor**</strong> instance.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_obj_id">
<span class="sig-name descname"><span class="pre">db_obj_id</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_obj_id" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_persistent">
<span class="sig-name descname"><span class="pre">db_persistent</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_persistent" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_repeats">
<span class="sig-name descname"><span class="pre">db_repeats</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_repeats" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_start_delay">
<span class="sig-name descname"><span class="pre">db_start_delay</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_start_delay" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_tags">
<span class="sig-name descname"><span class="pre">db_tags</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_tags" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.db_typeclass_path">
<span class="sig-name descname"><span class="pre">db_typeclass_path</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.db_typeclass_path" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.desc">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">desc</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.desc" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_desc</strong>.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.get_next_by_db_date_created">
<span class="sig-name descname"><span class="pre">get_next_by_db_date_created</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field=&lt;django.db.models.fields.DateTimeField:</span> <span class="pre">db_date_created&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_next=True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">**kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.get_next_by_db_date_created" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.get_previous_by_db_date_created">
<span class="sig-name descname"><span class="pre">get_previous_by_db_date_created</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">field=&lt;django.db.models.fields.DateTimeField:</span> <span class="pre">db_date_created&gt;</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_next=False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">**kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.get_previous_by_db_date_created" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.id">
<span class="sig-name descname"><span class="pre">id</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.id" title="Link to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.interval">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">interval</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.interval" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_interval</strong>.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.is_active">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">is_active</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.is_active" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_is_active</strong>.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.obj">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">obj</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.obj" title="Link to this definition"></a></dt>
<dd><p>Property wrapper that homogenizes access to either the
db_account or db_obj field, using the same object property
name.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.object">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">object</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.object" title="Link to this definition"></a></dt>
<dd><p>Property wrapper that homogenizes access to either the
db_account or db_obj field, using the same object property
name.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.objects">
<span class="sig-name descname"><span class="pre">objects</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">&lt;evennia.scripts.manager.ScriptDBManager</span> <span class="pre">object&gt;</span></em><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.objects" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.path">
<span class="sig-name descname"><span class="pre">path</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'evennia.scripts.models.ScriptDB'</span></em><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.path" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.persistent">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">persistent</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.persistent" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_persistent</strong>.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.receiver_script_set">
<span class="sig-name descname"><span class="pre">receiver_script_set</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.receiver_script_set" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.repeats">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">repeats</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.repeats" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_repeats</strong>.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.sender_script_set">
<span class="sig-name descname"><span class="pre">sender_script_set</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.sender_script_set" title="Link to this definition"></a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.start_delay">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">start_delay</span></span><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.start_delay" title="Link to this definition"></a></dt>
<dd><p>A wrapper for getting database field <strong>db_start_delay</strong>.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptDB.typename">
<span class="sig-name descname"><span class="pre">typename</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'SharedMemoryModelBase'</span></em><a class="headerlink" href="#evennia.scripts.scripts.ScriptDB.typename" title="Link to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.scripts.scripts.ScriptManager">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.scripts.scripts.</span></span><span class="sig-name descname"><span class="pre">ScriptManager</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/scripts/manager.html#ScriptManager"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.ScriptManager" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.scripts.manager.html#evennia.scripts.manager.ScriptDBManager" title="evennia.scripts.manager.ScriptDBManager"><code class="xref py py-class docutils literal notranslate"><span class="pre">ScriptDBManager</span></code></a>, <a class="reference internal" href="evennia.typeclasses.managers.html#evennia.typeclasses.managers.TypeclassManager" title="evennia.typeclasses.managers.TypeclassManager"><code class="xref py py-class docutils literal notranslate"><span class="pre">TypeclassManager</span></code></a></p>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="evennia.scripts.scripts.TypeclassBase">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">evennia.scripts.scripts.</span></span><span class="sig-name descname"><span class="pre">TypeclassBase</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bases</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attrs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/typeclasses/models.html#TypeclassBase"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.TypeclassBase" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.utils.idmapper.models.html#evennia.utils.idmapper.models.SharedMemoryModelBase" title="evennia.utils.idmapper.models.SharedMemoryModelBase"><code class="xref py py-class docutils literal notranslate"><span class="pre">SharedMemoryModelBase</span></code></a></p>
<p>Metaclass which should be set for the root of model proxies
that dont define any new fields, like Object, Script etc. This
is the basis for the typeclassing system.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="evennia.scripts.scripts.maybeDeferred">
<span class="sig-prename descclassname"><span class="pre">evennia.scripts.scripts.</span></span><span class="sig-name descname"><span class="pre">maybeDeferred</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">f:</span> <span class="pre">~typing.Callable[[~_P],</span> <span class="pre">~twisted.internet.defer.Deferred[~twisted.internet.defer._T]</span> <span class="pre">|</span> <span class="pre">~typing.Coroutine[~twisted.internet.defer.Deferred[~typing.Any],</span> <span class="pre">~typing.Any,</span> <span class="pre">~twisted.internet.defer._T]</span> <span class="pre">|</span> <span class="pre">~twisted.internet.defer._T],</span> <span class="pre">*args:</span> <span class="pre">~typing.~_P,</span> <span class="pre">**kwargs:</span> <span class="pre">~typing.~_P</span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#evennia.scripts.scripts.Deferred" title="twisted.internet.defer.Deferred"><span class="pre">Deferred</span></a><span class="p"><span class="pre">[</span></span><span class="pre">_T</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../_modules/twisted/internet/defer.html#maybeDeferred"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#evennia.scripts.scripts.maybeDeferred" title="Link to this definition"></a></dt>
<dd><p>Invoke a function that may or may not return a L{Deferred} or coroutine.</p>
<p>Call the given function with the given arguments. Then:</p>
<blockquote>
<div><ul class="simple">
<li><p>If the returned object is a L{Deferred}, return it.</p></li>
<li><p>If the returned object is a L{Failure}, wrap it with L{fail} and
return it.</p></li>
<li><p>If the returned object is a L{types.CoroutineType}, wrap it with
L{Deferred.fromCoroutine} and return it.</p></li>
<li><p>Otherwise, wrap it in L{succeed} and return it.</p></li>
<li><p>If an exception is raised, convert it to a L{Failure}, wrap it in
L{fail}, and then return it.</p></li>
</ul>
</div></blockquote>
<p>&#64;param f: The callable to invoke
&#64;param args: The arguments to pass to C{f}
&#64;param kwargs: The keyword arguments to pass to C{f}</p>
<p>&#64;return: The result of the function call, wrapped in a L{Deferred} if
necessary.</p>
</dd></dl>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo of Evennia"/>
</a></p>
<search 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" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
<h3><a href="../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">evennia.scripts.scripts</a><ul>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript"><code class="docutils literal notranslate"><span class="pre">DefaultScript</span></code></a><ul>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.create"><code class="docutils literal notranslate"><span class="pre">DefaultScript.create()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.at_script_creation"><code class="docutils literal notranslate"><span class="pre">DefaultScript.at_script_creation()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.is_valid"><code class="docutils literal notranslate"><span class="pre">DefaultScript.is_valid()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.at_start"><code class="docutils literal notranslate"><span class="pre">DefaultScript.at_start()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.at_repeat"><code class="docutils literal notranslate"><span class="pre">DefaultScript.at_repeat()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.at_pause"><code class="docutils literal notranslate"><span class="pre">DefaultScript.at_pause()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.at_stop"><code class="docutils literal notranslate"><span class="pre">DefaultScript.at_stop()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.at_script_delete"><code class="docutils literal notranslate"><span class="pre">DefaultScript.at_script_delete()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.at_server_reload"><code class="docutils literal notranslate"><span class="pre">DefaultScript.at_server_reload()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.at_server_shutdown"><code class="docutils literal notranslate"><span class="pre">DefaultScript.at_server_shutdown()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.at_server_start"><code class="docutils literal notranslate"><span class="pre">DefaultScript.at_server_start()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.DoesNotExist"><code class="docutils literal notranslate"><span class="pre">DefaultScript.DoesNotExist</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.MultipleObjectsReturned"><code class="docutils literal notranslate"><span class="pre">DefaultScript.MultipleObjectsReturned</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.NotUpdated"><code class="docutils literal notranslate"><span class="pre">DefaultScript.NotUpdated</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.path"><code class="docutils literal notranslate"><span class="pre">DefaultScript.path</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DefaultScript.typename"><code class="docutils literal notranslate"><span class="pre">DefaultScript.typename</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DoNothing"><code class="docutils literal notranslate"><span class="pre">DoNothing</span></code></a><ul>
<li><a class="reference internal" href="#evennia.scripts.scripts.DoNothing.at_script_creation"><code class="docutils literal notranslate"><span class="pre">DoNothing.at_script_creation()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DoNothing.DoesNotExist"><code class="docutils literal notranslate"><span class="pre">DoNothing.DoesNotExist</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DoNothing.MultipleObjectsReturned"><code class="docutils literal notranslate"><span class="pre">DoNothing.MultipleObjectsReturned</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DoNothing.NotUpdated"><code class="docutils literal notranslate"><span class="pre">DoNothing.NotUpdated</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DoNothing.path"><code class="docutils literal notranslate"><span class="pre">DoNothing.path</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.DoNothing.typename"><code class="docutils literal notranslate"><span class="pre">DoNothing.typename</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Store"><code class="docutils literal notranslate"><span class="pre">Store</span></code></a><ul>
<li><a class="reference internal" href="#evennia.scripts.scripts.Store.at_script_creation"><code class="docutils literal notranslate"><span class="pre">Store.at_script_creation()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Store.DoesNotExist"><code class="docutils literal notranslate"><span class="pre">Store.DoesNotExist</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Store.MultipleObjectsReturned"><code class="docutils literal notranslate"><span class="pre">Store.MultipleObjectsReturned</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Store.NotUpdated"><code class="docutils literal notranslate"><span class="pre">Store.NotUpdated</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Store.path"><code class="docutils literal notranslate"><span class="pre">Store.path</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Store.typename"><code class="docutils literal notranslate"><span class="pre">Store.typename</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred"><code class="docutils literal notranslate"><span class="pre">Deferred</span></code></a><ul>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.__init__"><code class="docutils literal notranslate"><span class="pre">Deferred.__init__()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.addBoth"><code class="docutils literal notranslate"><span class="pre">Deferred.addBoth()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.addCallback"><code class="docutils literal notranslate"><span class="pre">Deferred.addCallback()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.addCallbacks"><code class="docutils literal notranslate"><span class="pre">Deferred.addCallbacks()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.addErrback"><code class="docutils literal notranslate"><span class="pre">Deferred.addErrback()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.addTimeout"><code class="docutils literal notranslate"><span class="pre">Deferred.addTimeout()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.asFuture"><code class="docutils literal notranslate"><span class="pre">Deferred.asFuture()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.callback"><code class="docutils literal notranslate"><span class="pre">Deferred.callback()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.called"><code class="docutils literal notranslate"><span class="pre">Deferred.called</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.cancel"><code class="docutils literal notranslate"><span class="pre">Deferred.cancel()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.chainDeferred"><code class="docutils literal notranslate"><span class="pre">Deferred.chainDeferred()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.debug"><code class="docutils literal notranslate"><span class="pre">Deferred.debug</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.errback"><code class="docutils literal notranslate"><span class="pre">Deferred.errback()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.fromCoroutine"><code class="docutils literal notranslate"><span class="pre">Deferred.fromCoroutine()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.fromFuture"><code class="docutils literal notranslate"><span class="pre">Deferred.fromFuture()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.pause"><code class="docutils literal notranslate"><span class="pre">Deferred.pause()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.paused"><code class="docutils literal notranslate"><span class="pre">Deferred.paused</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.Deferred.unpause"><code class="docutils literal notranslate"><span class="pre">Deferred.unpause()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ExtendedLoopingCall"><code class="docutils literal notranslate"><span class="pre">ExtendedLoopingCall</span></code></a><ul>
<li><a class="reference internal" href="#evennia.scripts.scripts.ExtendedLoopingCall.start_delay"><code class="docutils literal notranslate"><span class="pre">ExtendedLoopingCall.start_delay</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ExtendedLoopingCall.callcount"><code class="docutils literal notranslate"><span class="pre">ExtendedLoopingCall.callcount</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ExtendedLoopingCall.start"><code class="docutils literal notranslate"><span class="pre">ExtendedLoopingCall.start()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ExtendedLoopingCall.force_repeat"><code class="docutils literal notranslate"><span class="pre">ExtendedLoopingCall.force_repeat()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ExtendedLoopingCall.next_call_time"><code class="docutils literal notranslate"><span class="pre">ExtendedLoopingCall.next_call_time()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall"><code class="docutils literal notranslate"><span class="pre">LoopingCall</span></code></a><ul>
<li><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall.__init__"><code class="docutils literal notranslate"><span class="pre">LoopingCall.__init__()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall.call"><code class="docutils literal notranslate"><span class="pre">LoopingCall.call</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall.deferred"><code class="docutils literal notranslate"><span class="pre">LoopingCall.deferred</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall.interval"><code class="docutils literal notranslate"><span class="pre">LoopingCall.interval</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall.reset"><code class="docutils literal notranslate"><span class="pre">LoopingCall.reset()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall.running"><code class="docutils literal notranslate"><span class="pre">LoopingCall.running</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall.start"><code class="docutils literal notranslate"><span class="pre">LoopingCall.start()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall.starttime"><code class="docutils literal notranslate"><span class="pre">LoopingCall.starttime</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall.stop"><code class="docutils literal notranslate"><span class="pre">LoopingCall.stop()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.LoopingCall.withCount"><code class="docutils literal notranslate"><span class="pre">LoopingCall.withCount()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase"><code class="docutils literal notranslate"><span class="pre">ScriptBase</span></code></a><ul>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.objects"><code class="docutils literal notranslate"><span class="pre">ScriptBase.objects</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.at_idmapper_flush"><code class="docutils literal notranslate"><span class="pre">ScriptBase.at_idmapper_flush()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.at_first_save"><code class="docutils literal notranslate"><span class="pre">ScriptBase.at_first_save()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.delete"><code class="docutils literal notranslate"><span class="pre">ScriptBase.delete()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.basetype_setup"><code class="docutils literal notranslate"><span class="pre">ScriptBase.basetype_setup()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.at_init"><code class="docutils literal notranslate"><span class="pre">ScriptBase.at_init()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.at_script_creation"><code class="docutils literal notranslate"><span class="pre">ScriptBase.at_script_creation()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.at_script_delete"><code class="docutils literal notranslate"><span class="pre">ScriptBase.at_script_delete()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.is_valid"><code class="docutils literal notranslate"><span class="pre">ScriptBase.is_valid()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.at_repeat"><code class="docutils literal notranslate"><span class="pre">ScriptBase.at_repeat()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.at_start"><code class="docutils literal notranslate"><span class="pre">ScriptBase.at_start()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.at_pause"><code class="docutils literal notranslate"><span class="pre">ScriptBase.at_pause()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.at_stop"><code class="docutils literal notranslate"><span class="pre">ScriptBase.at_stop()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.start"><code class="docutils literal notranslate"><span class="pre">ScriptBase.start()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.update"><code class="docutils literal notranslate"><span class="pre">ScriptBase.update()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.stop"><code class="docutils literal notranslate"><span class="pre">ScriptBase.stop()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.pause"><code class="docutils literal notranslate"><span class="pre">ScriptBase.pause()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.unpause"><code class="docutils literal notranslate"><span class="pre">ScriptBase.unpause()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.time_until_next_repeat"><code class="docutils literal notranslate"><span class="pre">ScriptBase.time_until_next_repeat()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.remaining_repeats"><code class="docutils literal notranslate"><span class="pre">ScriptBase.remaining_repeats()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.reset_callcount"><code class="docutils literal notranslate"><span class="pre">ScriptBase.reset_callcount()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.force_repeat"><code class="docutils literal notranslate"><span class="pre">ScriptBase.force_repeat()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.DoesNotExist"><code class="docutils literal notranslate"><span class="pre">ScriptBase.DoesNotExist</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.MultipleObjectsReturned"><code class="docutils literal notranslate"><span class="pre">ScriptBase.MultipleObjectsReturned</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.NotUpdated"><code class="docutils literal notranslate"><span class="pre">ScriptBase.NotUpdated</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.path"><code class="docutils literal notranslate"><span class="pre">ScriptBase.path</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptBase.typename"><code class="docutils literal notranslate"><span class="pre">ScriptBase.typename</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB"><code class="docutils literal notranslate"><span class="pre">ScriptDB</span></code></a><ul>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.DoesNotExist"><code class="docutils literal notranslate"><span class="pre">ScriptDB.DoesNotExist</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.MultipleObjectsReturned"><code class="docutils literal notranslate"><span class="pre">ScriptDB.MultipleObjectsReturned</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.NotUpdated"><code class="docutils literal notranslate"><span class="pre">ScriptDB.NotUpdated</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.account"><code class="docutils literal notranslate"><span class="pre">ScriptDB.account</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_account"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_account</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_account_id"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_account_id</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_attributes"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_attributes</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_date_created"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_date_created</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_desc"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_desc</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_interval"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_interval</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_is_active"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_is_active</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_key"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_key</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_lock_storage"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_lock_storage</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_obj"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_obj</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_obj_id"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_obj_id</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_persistent"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_persistent</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_repeats"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_repeats</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_start_delay"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_start_delay</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_tags"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_tags</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.db_typeclass_path"><code class="docutils literal notranslate"><span class="pre">ScriptDB.db_typeclass_path</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.desc"><code class="docutils literal notranslate"><span class="pre">ScriptDB.desc</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.get_next_by_db_date_created"><code class="docutils literal notranslate"><span class="pre">ScriptDB.get_next_by_db_date_created()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.get_previous_by_db_date_created"><code class="docutils literal notranslate"><span class="pre">ScriptDB.get_previous_by_db_date_created()</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.id"><code class="docutils literal notranslate"><span class="pre">ScriptDB.id</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.interval"><code class="docutils literal notranslate"><span class="pre">ScriptDB.interval</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.is_active"><code class="docutils literal notranslate"><span class="pre">ScriptDB.is_active</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.obj"><code class="docutils literal notranslate"><span class="pre">ScriptDB.obj</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.object"><code class="docutils literal notranslate"><span class="pre">ScriptDB.object</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.objects"><code class="docutils literal notranslate"><span class="pre">ScriptDB.objects</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.path"><code class="docutils literal notranslate"><span class="pre">ScriptDB.path</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.persistent"><code class="docutils literal notranslate"><span class="pre">ScriptDB.persistent</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.receiver_script_set"><code class="docutils literal notranslate"><span class="pre">ScriptDB.receiver_script_set</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.repeats"><code class="docutils literal notranslate"><span class="pre">ScriptDB.repeats</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.sender_script_set"><code class="docutils literal notranslate"><span class="pre">ScriptDB.sender_script_set</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.start_delay"><code class="docutils literal notranslate"><span class="pre">ScriptDB.start_delay</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptDB.typename"><code class="docutils literal notranslate"><span class="pre">ScriptDB.typename</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#evennia.scripts.scripts.ScriptManager"><code class="docutils literal notranslate"><span class="pre">ScriptManager</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.TypeclassBase"><code class="docutils literal notranslate"><span class="pre">TypeclassBase</span></code></a></li>
<li><a class="reference internal" href="#evennia.scripts.scripts.maybeDeferred"><code class="docutils literal notranslate"><span class="pre">maybeDeferred()</span></code></a></li>
</ul>
</li>
</ul>
<div>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.scripts.scripthandler.html"
title="previous chapter">evennia.scripts.scripthandler</a></p>
</div>
<div>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.scripts.taskhandler.html"
title="next chapter">evennia.scripts.taskhandler</a></p>
</div>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.scripts.scripts.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
<h3>Doc Versions</h3>
<ul>
<li>
<a href="https://www.evennia.com/docs/latest/index.html">latest (main branch)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/5.x/index.html">v5.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/4.x/index.html">v4.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/3.x/index.html">v3.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/2.x/index.html">v2.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/1.x/index.html">v1.0.0 branch (outdated)</a>
</li>
<li>
<a href="https://www.evennia.com/docs/0.x/index.html">v0.9.5 branch (outdated)</a>
</li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="Related">
<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="right" >
<a href="evennia.scripts.taskhandler.html" title="evennia.scripts.taskhandler"
>next</a> |</li>
<li class="right" >
<a href="evennia.scripts.scripthandler.html" title="evennia.scripts.scripthandler"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.scripts.html" >evennia.scripts</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.scripts.scripts</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2024, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
</div>
</body>
</html>