mirror of
https://github.com/evennia/evennia.git
synced 2026-04-05 23:47:16 +02:00
Updated HTML docs
This commit is contained in:
parent
92402ccca7
commit
f3dcfa1076
194 changed files with 4234 additions and 3189 deletions
|
|
@ -1,4 +1,4 @@
|
|||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: 53b070ed38bc6c8d1b9b39f31b1fde86
|
||||
config: b0c74fd4155f19df730d5c4fad06634c
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
|
|
|||
|
|
@ -363,7 +363,7 @@ to change into <code class="docutils literal notranslate"><span class="pre">myga
|
|||
<span class="p">((</span><span class="s2">"typeclasses"</span><span class="p">,</span> <span class="s2">"defaultplayer"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"typeclasses"</span><span class="p">,</span> <span class="s2">"defaultaccount"</span><span class="p">)),</span>
|
||||
<span class="p">]</span>
|
||||
<span class="c1"># Default type of autofield (required by Django)</span>
|
||||
<span class="n">DEFAULT_AUTO_FIELD</span> <span class="o">=</span> <span class="s1">'django.db.models.AutoField'</span>
|
||||
<span class="n">DEFAULT_AUTO_FIELD</span> <span class="o">=</span> <span class="s2">"django.db.models.AutoField"</span>
|
||||
|
||||
<span class="c1">######################################################################</span>
|
||||
<span class="c1"># Evennia webclient options</span>
|
||||
|
|
@ -378,7 +378,7 @@ to change into <code class="docutils literal notranslate"><span class="pre">myga
|
|||
<span class="c1"># Shows notifications of new messages as popup windows</span>
|
||||
<span class="s2">"notification_popup"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
<span class="c1"># Plays a sound for notifications of new messages</span>
|
||||
<span class="s2">"notification_sound"</span><span class="p">:</span> <span class="kc">False</span>
|
||||
<span class="s2">"notification_sound"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="c1">######################################################################</span>
|
||||
|
|
@ -549,7 +549,7 @@ to change into <code class="docutils literal notranslate"><span class="pre">myga
|
|||
<span class="c1"># input. By default the command-name should end with a space or / (since the</span>
|
||||
<span class="c1"># default commands uses MuxCommand and /switches). Note that the extra \n</span>
|
||||
<span class="c1"># is necessary for use with batchprocessor.</span>
|
||||
<span class="n">COMMAND_DEFAULT_ARG_REGEX</span> <span class="o">=</span> <span class="sa">r</span><span class="s1">'^[ /]|\n|$'</span>
|
||||
<span class="n">COMMAND_DEFAULT_ARG_REGEX</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">"^[ /]|\n|$"</span>
|
||||
<span class="c1"># By default, Command.msg will only send data to the Session calling</span>
|
||||
<span class="c1"># the Command in the first place. If set, Command.msg will instead return</span>
|
||||
<span class="c1"># data to all Sessions connected to the Account/Character associated with</span>
|
||||
|
|
@ -723,9 +723,9 @@ to change into <code class="docutils literal notranslate"><span class="pre">myga
|
|||
<span class="c1"># This changes the start-symbol for the funcparser callable. Note that</span>
|
||||
<span class="c1"># this will make a lot of documentation invalid and there may also be</span>
|
||||
<span class="c1"># other unexpected side effects, so change with caution.</span>
|
||||
<span class="n">FUNCPARSER_START_CHAR</span> <span class="o">=</span> <span class="s1">'$'</span>
|
||||
<span class="n">FUNCPARSER_START_CHAR</span> <span class="o">=</span> <span class="s2">"$"</span>
|
||||
<span class="c1"># The symbol to use to escape Func</span>
|
||||
<span class="n">FUNCPARSER_ESCAPE_CHAR</span> <span class="o">=</span> <span class="s1">'</span><span class="se">\\</span><span class="s1">'</span>
|
||||
<span class="n">FUNCPARSER_ESCAPE_CHAR</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span>
|
||||
<span class="c1"># This is the global max nesting-level for nesting functions in</span>
|
||||
<span class="c1"># the funcparser. This protects against infinite loops.</span>
|
||||
<span class="n">FUNCPARSER_MAX_NESTING</span> <span class="o">=</span> <span class="mi">20</span>
|
||||
|
|
@ -738,8 +738,10 @@ to change into <code class="docutils literal notranslate"><span class="pre">myga
|
|||
<span class="n">FUNCPARSER_OUTGOING_MESSAGES_MODULES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"evennia.utils.funcparser"</span><span class="p">,</span> <span class="s2">"server.conf.inlinefuncs"</span><span class="p">]</span>
|
||||
<span class="c1"># Prototype values are also parsed with FuncParser. These modules</span>
|
||||
<span class="c1"># define which $func callables are available to use in prototypes.</span>
|
||||
<span class="n">FUNCPARSER_PROTOTYPE_PARSING_MODULES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"evennia.prototypes.protfuncs"</span><span class="p">,</span>
|
||||
<span class="s2">"server.conf.prototypefuncs"</span><span class="p">]</span>
|
||||
<span class="n">FUNCPARSER_PROTOTYPE_PARSING_MODULES</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="s2">"evennia.prototypes.protfuncs"</span><span class="p">,</span>
|
||||
<span class="s2">"server.conf.prototypefuncs"</span><span class="p">,</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="c1">######################################################################</span>
|
||||
<span class="c1"># Global Scripts</span>
|
||||
|
|
@ -807,7 +809,7 @@ to change into <code class="docutils literal notranslate"><span class="pre">myga
|
|||
<span class="c1"># since they can be exploitative. This list defines Account-level permissions</span>
|
||||
<span class="c1"># (and higher) that bypass this stripping. It is used as a fallback if a</span>
|
||||
<span class="c1"># specific list of perms are not given to the helper function.</span>
|
||||
<span class="n">INPUT_CLEANUP_BYPASS_PERMISSIONS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'Builder'</span><span class="p">]</span>
|
||||
<span class="n">INPUT_CLEANUP_BYPASS_PERMISSIONS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"Builder"</span><span class="p">]</span>
|
||||
|
||||
|
||||
<span class="c1">######################################################################</span>
|
||||
|
|
@ -960,8 +962,8 @@ to change into <code class="docutils literal notranslate"><span class="pre">myga
|
|||
<span class="c1"># Where to find locales (no need to change this, most likely)</span>
|
||||
<span class="n">LOCALE_PATHS</span> <span class="o">=</span> <span class="p">[</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">EVENNIA_DIR</span><span class="p">,</span> <span class="s2">"locale/"</span><span class="p">)]</span>
|
||||
<span class="c1"># How to display time stamps in e.g. the admin</span>
|
||||
<span class="n">SHORT_DATETIME_FORMAT</span> <span class="o">=</span> <span class="s1">'Y-m-d H:i:s.u'</span>
|
||||
<span class="n">DATETIME_FORMAT</span> <span class="o">=</span> <span class="s1">'Y-m-d H:i:s'</span> <span class="c1"># ISO 8601 but without T and timezone</span>
|
||||
<span class="n">SHORT_DATETIME_FORMAT</span> <span class="o">=</span> <span class="s2">"Y-m-d H:i:s.u"</span>
|
||||
<span class="n">DATETIME_FORMAT</span> <span class="o">=</span> <span class="s2">"Y-m-d H:i:s"</span> <span class="c1"># ISO 8601 but without T and timezone</span>
|
||||
<span class="c1"># This should be turned off unless you want to do tests with Django's</span>
|
||||
<span class="c1"># development webserver (normally Evennia runs its own server)</span>
|
||||
<span class="n">SERVE_MEDIA</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
|
@ -1027,16 +1029,14 @@ to change into <code class="docutils literal notranslate"><span class="pre">myga
|
|||
<span class="c1"># Django cache settings</span>
|
||||
<span class="c1"># https://docs.djangoproject.com/en/dev/topics/cache/#setting-up-the-cache</span>
|
||||
<span class="n">CACHES</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'default'</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s1">'BACKEND'</span><span class="p">:</span> <span class="s1">'django.core.cache.backends.locmem.LocMemCache'</span><span class="p">,</span>
|
||||
<span class="s2">"default"</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s2">"BACKEND"</span><span class="p">:</span> <span class="s2">"django.core.cache.backends.locmem.LocMemCache"</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="s2">"throttle"</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s2">"BACKEND"</span><span class="p">:</span> <span class="s2">"django.core.cache.backends.locmem.LocMemCache"</span><span class="p">,</span>
|
||||
<span class="s2">"TIMEOUT"</span><span class="p">:</span> <span class="mi">60</span> <span class="o">*</span> <span class="mi">5</span><span class="p">,</span>
|
||||
<span class="s2">"OPTIONS"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"MAX_ENTRIES"</span><span class="p">:</span> <span class="mi">2000</span><span class="p">},</span>
|
||||
<span class="p">},</span>
|
||||
<span class="s1">'throttle'</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s1">'BACKEND'</span><span class="p">:</span> <span class="s1">'django.core.cache.backends.locmem.LocMemCache'</span><span class="p">,</span>
|
||||
<span class="s1">'TIMEOUT'</span><span class="p">:</span> <span class="mi">60</span> <span class="o">*</span> <span class="mi">5</span><span class="p">,</span>
|
||||
<span class="s1">'OPTIONS'</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s1">'MAX_ENTRIES'</span><span class="p">:</span> <span class="mi">2000</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
<span class="c1"># MiddleWare are semi-transparent extensions to Django's functionality.</span>
|
||||
<span class="c1"># see http://www.djangoproject.com/documentation/middleware/ for a more detailed</span>
|
||||
|
|
@ -1101,8 +1101,14 @@ to change into <code class="docutils literal notranslate"><span class="pre">myga
|
|||
<span class="c1"># Username validation plugins</span>
|
||||
<span class="n">AUTH_USERNAME_VALIDATORS</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="p">{</span><span class="s2">"NAME"</span><span class="p">:</span> <span class="s2">"django.contrib.auth.validators.ASCIIUsernameValidator"</span><span class="p">},</span>
|
||||
<span class="p">{</span><span class="s2">"NAME"</span><span class="p">:</span> <span class="s2">"django.core.validators.MinLengthValidator"</span><span class="p">,</span> <span class="s2">"OPTIONS"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"limit_value"</span><span class="p">:</span> <span class="mi">3</span><span class="p">},},</span>
|
||||
<span class="p">{</span><span class="s2">"NAME"</span><span class="p">:</span> <span class="s2">"django.core.validators.MaxLengthValidator"</span><span class="p">,</span> <span class="s2">"OPTIONS"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"limit_value"</span><span class="p">:</span> <span class="mi">30</span><span class="p">},},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"NAME"</span><span class="p">:</span> <span class="s2">"django.core.validators.MinLengthValidator"</span><span class="p">,</span>
|
||||
<span class="s2">"OPTIONS"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"limit_value"</span><span class="p">:</span> <span class="mi">3</span><span class="p">},</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"NAME"</span><span class="p">:</span> <span class="s2">"django.core.validators.MaxLengthValidator"</span><span class="p">,</span>
|
||||
<span class="s2">"OPTIONS"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"limit_value"</span><span class="p">:</span> <span class="mi">30</span><span class="p">},</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span><span class="s2">"NAME"</span><span class="p">:</span> <span class="s2">"evennia.server.validators.EvenniaUsernameAvailabilityValidator"</span><span class="p">},</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
|
|
@ -1121,7 +1127,9 @@ to change into <code class="docutils literal notranslate"><span class="pre">myga
|
|||
<span class="s2">"DEFAULT_PAGINATION_CLASS"</span><span class="p">:</span> <span class="s2">"rest_framework.pagination.LimitOffsetPagination"</span><span class="p">,</span>
|
||||
<span class="s2">"PAGE_SIZE"</span><span class="p">:</span> <span class="mi">25</span><span class="p">,</span>
|
||||
<span class="c1"># require logged in users to call API so that access checks can work on them</span>
|
||||
<span class="s2">"DEFAULT_PERMISSION_CLASSES"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"rest_framework.permissions.IsAuthenticated"</span><span class="p">,],</span>
|
||||
<span class="s2">"DEFAULT_PERMISSION_CLASSES"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="s2">"rest_framework.permissions.IsAuthenticated"</span><span class="p">,</span>
|
||||
<span class="p">],</span>
|
||||
<span class="c1"># These are the different ways people can authenticate for API requests - via</span>
|
||||
<span class="c1"># session or with user/password. Other ways are possible, such as via tokens</span>
|
||||
<span class="c1"># or oauth, but require additional dependencies.</span>
|
||||
|
|
|
|||
|
|
@ -141,6 +141,7 @@
|
|||
<span class="n">GLOBAL_SCRIPTS</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">OPTION_CLASSES</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_create_version</span><span class="p">():</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Helper function for building the version string</span>
|
||||
|
|
|
|||
|
|
@ -96,11 +96,12 @@
|
|||
|
||||
<span class="c1"># Create throttles for too many account-creations and login attempts</span>
|
||||
<span class="n">CREATION_THROTTLE</span> <span class="o">=</span> <span class="n">Throttle</span><span class="p">(</span>
|
||||
<span class="n">name</span><span class="o">=</span><span class="s1">'creation'</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">CREATION_THROTTLE_LIMIT</span><span class="p">,</span>
|
||||
<span class="n">timeout</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">CREATION_THROTTLE_TIMEOUT</span>
|
||||
<span class="n">name</span><span class="o">=</span><span class="s2">"creation"</span><span class="p">,</span>
|
||||
<span class="n">limit</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">CREATION_THROTTLE_LIMIT</span><span class="p">,</span>
|
||||
<span class="n">timeout</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">CREATION_THROTTLE_TIMEOUT</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">LOGIN_THROTTLE</span> <span class="o">=</span> <span class="n">Throttle</span><span class="p">(</span>
|
||||
<span class="n">name</span><span class="o">=</span><span class="s1">'login'</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">LOGIN_THROTTLE_LIMIT</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">LOGIN_THROTTLE_TIMEOUT</span>
|
||||
<span class="n">name</span><span class="o">=</span><span class="s2">"login"</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">LOGIN_THROTTLE_LIMIT</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">LOGIN_THROTTLE_TIMEOUT</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
|
||||
|
|
@ -844,8 +845,11 @@
|
|||
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"There was an error creating the Account. "</span>
|
||||
<span class="s2">"If this problem persists, contact an admin."</span><span class="p">))</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"There was an error creating the Account. "</span>
|
||||
<span class="s2">"If this problem persists, contact an admin."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="n">errors</span>
|
||||
|
||||
|
|
@ -921,7 +925,6 @@
|
|||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">True</span></div>
|
||||
|
||||
|
||||
<span class="c1"># methods inherited from database model</span>
|
||||
|
||||
<div class="viewcode-block" id="DefaultAccount.msg"><a class="viewcode-back" href="../../../api/evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount.msg">[docs]</a> <span class="k">def</span> <span class="nf">msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">from_obj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
|
|
@ -1010,9 +1013,7 @@
|
|||
<span class="n">sessions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
|
||||
<span class="n">session</span> <span class="o">=</span> <span class="n">sessions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">sessions</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">_CMDHANDLER</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span> <span class="n">raw_string</span><span class="p">,</span> <span class="n">callertype</span><span class="o">=</span><span class="s2">"account"</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
|
||||
<span class="p">)</span></div>
|
||||
<span class="k">return</span> <span class="n">_CMDHANDLER</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">raw_string</span><span class="p">,</span> <span class="n">callertype</span><span class="o">=</span><span class="s2">"account"</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
<span class="c1"># channel receive hooks</span>
|
||||
|
||||
|
|
@ -1042,11 +1043,11 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">senders</span><span class="p">:</span>
|
||||
<span class="n">sender_string</span> <span class="o">=</span> <span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sender</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="k">for</span> <span class="n">sender</span> <span class="ow">in</span> <span class="n">senders</span><span class="p">)</span>
|
||||
<span class="n">sender_string</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sender</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="k">for</span> <span class="n">sender</span> <span class="ow">in</span> <span class="n">senders</span><span class="p">)</span>
|
||||
<span class="n">message_lstrip</span> <span class="o">=</span> <span class="n">message</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">message_lstrip</span><span class="o">.</span><span class="n">startswith</span><span class="p">((</span><span class="s1">':'</span><span class="p">,</span> <span class="s1">';'</span><span class="p">)):</span>
|
||||
<span class="k">if</span> <span class="n">message_lstrip</span><span class="o">.</span><span class="n">startswith</span><span class="p">((</span><span class="s2">":"</span><span class="p">,</span> <span class="s2">";"</span><span class="p">)):</span>
|
||||
<span class="c1"># this is a pose, should show as e.g. "User1 smiles to channel"</span>
|
||||
<span class="n">spacing</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="n">message_lstrip</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span><span class="o">.</span><span class="n">startswith</span><span class="p">((</span><span class="s1">':'</span><span class="p">,</span> <span class="s1">'</span><span class="se">\'</span><span class="s1">'</span><span class="p">,</span> <span class="s1">','</span><span class="p">))</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
<span class="n">spacing</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="n">message_lstrip</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span><span class="o">.</span><span class="n">startswith</span><span class="p">((</span><span class="s2">":"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">,</span> <span class="s2">","</span><span class="p">))</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
<span class="n">message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sender_string</span><span class="si">}{</span><span class="n">spacing</span><span class="si">}{</span><span class="n">message_lstrip</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># normal message</span>
|
||||
|
|
@ -1077,8 +1078,11 @@
|
|||
<span class="sd"> to customize the message for the receiver on the channel-level.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="p">{</span><span class="s2">"from_channel"</span><span class="p">:</span> <span class="n">channel</span><span class="o">.</span><span class="n">id</span><span class="p">}),</span>
|
||||
<span class="n">from_obj</span><span class="o">=</span><span class="n">senders</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="p">{</span><span class="s2">"from_channel"</span><span class="p">:</span> <span class="n">channel</span><span class="o">.</span><span class="n">id</span><span class="p">})</span></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">text</span><span class="o">=</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="p">{</span><span class="s2">"from_channel"</span><span class="p">:</span> <span class="n">channel</span><span class="o">.</span><span class="n">id</span><span class="p">}),</span>
|
||||
<span class="n">from_obj</span><span class="o">=</span><span class="n">senders</span><span class="p">,</span>
|
||||
<span class="n">options</span><span class="o">=</span><span class="p">{</span><span class="s2">"from_channel"</span><span class="p">:</span> <span class="n">channel</span><span class="o">.</span><span class="n">id</span><span class="p">},</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultAccount.at_post_channel_msg"><a class="viewcode-back" href="../../../api/evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount.at_post_channel_msg">[docs]</a> <span class="k">def</span> <span class="nf">at_post_channel_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">channel</span><span class="p">,</span> <span class="n">senders</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -1415,8 +1419,7 @@
|
|||
<span class="k">if</span> <span class="n">_MUDINFO_CHANNEL</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">settings</span><span class="o">.</span><span class="n">CHANNEL_MUDINFO</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">_MUDINFO_CHANNEL</span> <span class="o">=</span> <span class="n">ChannelDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">db_key</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">CHANNEL_MUDINFO</span><span class="p">[</span><span class="s2">"key"</span><span class="p">])</span>
|
||||
<span class="n">_MUDINFO_CHANNEL</span> <span class="o">=</span> <span class="n">ChannelDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">db_key</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">CHANNEL_MUDINFO</span><span class="p">[</span><span class="s2">"key"</span><span class="p">])</span>
|
||||
<span class="k">except</span> <span class="n">ChannelDB</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -1425,7 +1428,8 @@
|
|||
<span class="k">if</span> <span class="n">settings</span><span class="o">.</span><span class="n">CHANNEL_CONNECTINFO</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">_CONNECT_CHANNEL</span> <span class="o">=</span> <span class="n">ChannelDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">db_key</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">CHANNEL_CONNECTINFO</span><span class="p">[</span><span class="s2">"key"</span><span class="p">])</span>
|
||||
<span class="n">db_key</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">CHANNEL_CONNECTINFO</span><span class="p">[</span><span class="s2">"key"</span><span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">ChannelDB</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -1703,7 +1707,8 @@
|
|||
<span class="k">if</span> <span class="n">sess</span> <span class="ow">and</span> <span class="n">sid</span><span class="p">:</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> - |G</span><span class="si">{</span><span class="n">char</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n [</span><span class="si">{</span><span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">char</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">all</span><span class="p">())</span><span class="si">}</span><span class="s2">] "</span>
|
||||
<span class="sa">f</span><span class="s2">"(played by you in session </span><span class="si">{</span><span class="n">sid</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"(played by you in session </span><span class="si">{</span><span class="n">sid</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> - |R</span><span class="si">{</span><span class="n">char</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n [</span><span class="si">{</span><span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">char</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">all</span><span class="p">())</span><span class="si">}</span><span class="s2">] "</span>
|
||||
|
|
|
|||
|
|
@ -371,9 +371,7 @@
|
|||
<span class="n">chstr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_channel</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_network</span><span class="si">}</span><span class="s2">:</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_port</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="n">nicklist</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s2">"nicklist"</span><span class="p">],</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span><span class="o">.</span><span class="n">lower</span><span class="p">()))</span>
|
||||
<span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_nicklist_callers</span><span class="p">:</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"Nicks at </span><span class="si">{chstr}</span><span class="s2">:</span><span class="se">\n</span><span class="s2"> </span><span class="si">{nicklist}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">chstr</span><span class="o">=</span><span class="n">chstr</span><span class="p">,</span> <span class="n">nicklist</span><span class="o">=</span><span class="n">nicklist</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Nicks at </span><span class="si">{chstr}</span><span class="s2">:</span><span class="se">\n</span><span class="s2"> </span><span class="si">{nicklist}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">chstr</span><span class="o">=</span><span class="n">chstr</span><span class="p">,</span> <span class="n">nicklist</span><span class="o">=</span><span class="n">nicklist</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_nicklist_callers</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
|
|
|
|||
|
|
@ -318,8 +318,11 @@
|
|||
<span class="n">new_account</span><span class="o">.</span><span class="n">set_password</span><span class="p">(</span><span class="n">password</span><span class="p">)</span>
|
||||
|
||||
<span class="n">new_account</span><span class="o">.</span><span class="n">_createdict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
||||
<span class="n">locks</span><span class="o">=</span><span class="n">locks</span><span class="p">,</span> <span class="n">permissions</span><span class="o">=</span><span class="n">permissions</span><span class="p">,</span>
|
||||
<span class="n">report_to</span><span class="o">=</span><span class="n">report_to</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="n">tags</span><span class="p">,</span> <span class="n">attributes</span><span class="o">=</span><span class="n">attributes</span>
|
||||
<span class="n">locks</span><span class="o">=</span><span class="n">locks</span><span class="p">,</span>
|
||||
<span class="n">permissions</span><span class="o">=</span><span class="n">permissions</span><span class="p">,</span>
|
||||
<span class="n">report_to</span><span class="o">=</span><span class="n">report_to</span><span class="p">,</span>
|
||||
<span class="n">tags</span><span class="o">=</span><span class="n">tags</span><span class="p">,</span>
|
||||
<span class="n">attributes</span><span class="o">=</span><span class="n">attributes</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># saving will trigger the signal that calls the</span>
|
||||
<span class="c1"># at_first_save hook on the typeclass, where the _createdict</span>
|
||||
|
|
|
|||
|
|
@ -122,47 +122,63 @@
|
|||
<span class="c1"># is the normal "production message to echo to the account.</span>
|
||||
|
||||
<span class="n">_ERROR_UNTRAPPED</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="s2">An untrapped error occurred.</span>
|
||||
<span class="s2">"""</span><span class="p">),</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="s2">An untrapped error occurred. Please file a bug report detailing the steps to reproduce.</span>
|
||||
<span class="s2">"""</span><span class="p">),</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">An untrapped error occurred.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">),</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">An untrapped error occurred. Please file a bug report detailing the steps to reproduce.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">_ERROR_CMDSETS</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="s2">A cmdset merger-error occurred. This is often due to a syntax</span>
|
||||
<span class="s2">error in one of the cmdsets to merge.</span>
|
||||
<span class="s2">"""</span><span class="p">),</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="s2">A cmdset merger-error occurred. Please file a bug report detailing the</span>
|
||||
<span class="s2">steps to reproduce.</span>
|
||||
<span class="s2">"""</span><span class="p">),</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">A cmdset merger-error occurred. This is often due to a syntax</span>
|
||||
<span class="sd">error in one of the cmdsets to merge.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">),</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">A cmdset merger-error occurred. Please file a bug report detailing the</span>
|
||||
<span class="sd">steps to reproduce.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">_ERROR_NOCMDSETS</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="s2">No command sets found! This is a critical bug that can have</span>
|
||||
<span class="s2">multiple causes.</span>
|
||||
<span class="s2">"""</span><span class="p">),</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="s2">No command sets found! This is a sign of a critical bug. If</span>
|
||||
<span class="s2">disconnecting/reconnecting doesn't" solve the problem, try to contact</span>
|
||||
<span class="s2">the server admin through" some other means for assistance.</span>
|
||||
<span class="s2">"""</span><span class="p">),</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">No command sets found! This is a critical bug that can have</span>
|
||||
<span class="sd">multiple causes.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">),</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">No command sets found! This is a sign of a critical bug. If</span>
|
||||
<span class="sd">disconnecting/reconnecting doesn't" solve the problem, try to contact</span>
|
||||
<span class="sd">the server admin through" some other means for assistance.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">_ERROR_CMDHANDLER</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="s2">A command handler bug occurred. If this is not due to a local change,</span>
|
||||
<span class="s2">please file a bug report with the Evennia project, including the</span>
|
||||
<span class="s2">traceback and steps to reproduce.</span>
|
||||
<span class="s2">"""</span><span class="p">),</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="s2">A command handler bug occurred. Please notify staff - they should</span>
|
||||
<span class="s2">likely file a bug report with the Evennia project.</span>
|
||||
<span class="s2">"""</span><span class="p">),</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">A command handler bug occurred. If this is not due to a local change,</span>
|
||||
<span class="sd">please file a bug report with the Evennia project, including the</span>
|
||||
<span class="sd">traceback and steps to reproduce.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">),</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">A command handler bug occurred. Please notify staff - they should</span>
|
||||
<span class="sd">likely file a bug report with the Evennia project.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">_ERROR_RECURSION_LIMIT</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span>
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@
|
|||
<span class="k">for</span> <span class="n">cmdname</span> <span class="ow">in</span> <span class="p">[</span><span class="n">cmd</span><span class="o">.</span><span class="n">key</span><span class="p">]</span> <span class="o">+</span> <span class="n">cmd</span><span class="o">.</span><span class="n">aliases</span>
|
||||
<span class="k">if</span> <span class="n">cmdname</span>
|
||||
<span class="ow">and</span> <span class="n">l_raw_string</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">cmdname</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||||
<span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">cmd</span><span class="o">.</span><span class="n">arg_regex</span> <span class="ow">or</span> <span class="n">cmd</span><span class="o">.</span><span class="n">arg_regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">l_raw_string</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">cmdname</span><span class="p">):]))</span>
|
||||
<span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">cmd</span><span class="o">.</span><span class="n">arg_regex</span> <span class="ow">or</span> <span class="n">cmd</span><span class="o">.</span><span class="n">arg_regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">l_raw_string</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">cmdname</span><span class="p">)</span> <span class="p">:]))</span>
|
||||
<span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -132,7 +132,7 @@
|
|||
<span class="k">if</span> <span class="p">(</span>
|
||||
<span class="n">cmdname</span>
|
||||
<span class="ow">and</span> <span class="n">l_raw_string</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">cmdname</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||||
<span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">cmd</span><span class="o">.</span><span class="n">arg_regex</span> <span class="ow">or</span> <span class="n">cmd</span><span class="o">.</span><span class="n">arg_regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">l_raw_string</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">cmdname</span><span class="p">):]))</span>
|
||||
<span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">cmd</span><span class="o">.</span><span class="n">arg_regex</span> <span class="ow">or</span> <span class="n">cmd</span><span class="o">.</span><span class="n">arg_regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">l_raw_string</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">cmdname</span><span class="p">)</span> <span class="p">:]))</span>
|
||||
<span class="p">):</span>
|
||||
<span class="n">matches</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">create_match</span><span class="p">(</span><span class="n">cmdname</span><span class="p">,</span> <span class="n">raw_string</span><span class="p">,</span> <span class="n">cmd</span><span class="p">,</span> <span class="n">raw_cmdname</span><span class="p">))</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
|
|
@ -167,7 +167,10 @@
|
|||
<span class="c1"># the user might be trying to identify the command</span>
|
||||
<span class="c1"># with a #num-command style syntax. We expect the regex to</span>
|
||||
<span class="c1"># contain the groups "number" and "name".</span>
|
||||
<span class="n">mindex</span><span class="p">,</span> <span class="n">new_raw_string</span> <span class="o">=</span> <span class="p">(</span><span class="n">num_ref_match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"number"</span><span class="p">),</span> <span class="n">num_ref_match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"name"</span><span class="p">)</span> <span class="o">+</span> <span class="n">num_ref_match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"args"</span><span class="p">))</span>
|
||||
<span class="n">mindex</span><span class="p">,</span> <span class="n">new_raw_string</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">num_ref_match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"number"</span><span class="p">),</span>
|
||||
<span class="n">num_ref_match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"name"</span><span class="p">)</span> <span class="o">+</span> <span class="n">num_ref_match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">"args"</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">mindex</span><span class="p">),</span> <span class="n">new_raw_string</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span></div>
|
||||
|
|
@ -224,9 +227,7 @@
|
|||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">matches</span> <span class="ow">and</span> <span class="n">_CMD_IGNORE_PREFIXES</span><span class="p">:</span>
|
||||
<span class="c1"># still no match. Try to strip prefixes</span>
|
||||
<span class="n">raw_string</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">raw_string</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="n">_CMD_IGNORE_PREFIXES</span><span class="p">)</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_string</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">raw_string</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">raw_string</span> <span class="o">=</span> <span class="n">raw_string</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="n">_CMD_IGNORE_PREFIXES</span><span class="p">)</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_string</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">raw_string</span>
|
||||
<span class="n">matches</span> <span class="o">=</span> <span class="n">build_matches</span><span class="p">(</span><span class="n">raw_string</span><span class="p">,</span> <span class="n">cmdset</span><span class="p">,</span> <span class="n">include_prefixes</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># only select command matches we are actually allowed to call.</span>
|
||||
|
|
|
|||
|
|
@ -400,14 +400,18 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">perm</span> <span class="o">=</span> <span class="s2">"perm"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">persistent</span> <span class="k">else</span> <span class="s2">"non-perm"</span>
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">([</span>
|
||||
<span class="s2">"</span><span class="si">{}</span><span class="s2">:</span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">opt</span><span class="p">,</span> <span class="s2">"T"</span> <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">opt</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"F"</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">opt</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"no_exits"</span><span class="p">,</span> <span class="s2">"no_objs"</span><span class="p">,</span> <span class="s2">"no_channels"</span><span class="p">,</span> <span class="s2">"duplicates"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">opt</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
|
||||
<span class="p">])</span>
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="p">[</span>
|
||||
<span class="s2">"</span><span class="si">{}</span><span class="s2">:</span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">opt</span><span class="p">,</span> <span class="s2">"T"</span> <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">opt</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"F"</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">opt</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"no_exits"</span><span class="p">,</span> <span class="s2">"no_objs"</span><span class="p">,</span> <span class="s2">"no_channels"</span><span class="p">,</span> <span class="s2">"duplicates"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">opt</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
|
||||
<span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="p">(</span><span class="s2">", "</span> <span class="o">+</span> <span class="n">options</span><span class="p">)</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"<CmdSet </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">mergetype</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">perm</span><span class="si">}</span><span class="s2">, prio </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">priority</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">>: "</span>
|
||||
<span class="o">+</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">cmd</span><span class="p">)</span> <span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">commands</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">key</span><span class="p">)]))</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"<CmdSet </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">mergetype</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">perm</span><span class="si">}</span><span class="s2">, prio </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">priority</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">>: "</span>
|
||||
<span class="o">+</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">cmd</span><span class="p">)</span> <span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">commands</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">key</span><span class="p">)])</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -561,10 +565,12 @@
|
|||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">cmdset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_instantiate</span><span class="p">(</span><span class="n">cmdset</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">RuntimeError</span><span class="p">:</span>
|
||||
<span class="n">err</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"Adding cmdset </span><span class="si">{cmdset}</span><span class="s2"> to </span><span class="si">{cls}</span><span class="s2"> lead to an "</span>
|
||||
<span class="s2">"infinite loop. When adding a cmdset to another, "</span>
|
||||
<span class="s2">"make sure they are not themself cyclically added to "</span>
|
||||
<span class="s2">"the new cmdset somewhere in the chain."</span><span class="p">)</span>
|
||||
<span class="n">err</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"Adding cmdset </span><span class="si">{cmdset}</span><span class="s2"> to </span><span class="si">{cls}</span><span class="s2"> lead to an "</span>
|
||||
<span class="s2">"infinite loop. When adding a cmdset to another, "</span>
|
||||
<span class="s2">"make sure they are not themself cyclically added to "</span>
|
||||
<span class="s2">"the new cmdset somewhere in the chain."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="n">err</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">cmdset</span><span class="o">=</span><span class="n">cmdset</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)))</span>
|
||||
<span class="n">cmds</span> <span class="o">=</span> <span class="n">cmdset</span><span class="o">.</span><span class="n">commands</span>
|
||||
<span class="k">elif</span> <span class="n">is_iter</span><span class="p">(</span><span class="n">cmd</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -465,8 +465,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">mergetype_stack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_current</span><span class="o">.</span><span class="n">actual_mergetype</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">current</span> <span class="o">=</span> <span class="n">new_current</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdSetHandler.add"><a class="viewcode-back" href="../../../api/evennia.commands.cmdsethandler.html#evennia.commands.cmdsethandler.CmdSetHandler.add">[docs]</a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmdset</span><span class="p">,</span> <span class="n">emit_to_obj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">default_cmdset</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="CmdSetHandler.add"><a class="viewcode-back" href="../../../api/evennia.commands.cmdsethandler.html#evennia.commands.cmdsethandler.CmdSetHandler.add">[docs]</a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmdset</span><span class="p">,</span> <span class="n">emit_to_obj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">default_cmdset</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Add a cmdset to the handler, on top of the old ones, unless it</span>
|
||||
<span class="sd"> is set as the default one (it will then end up at the bottom of the stack)</span>
|
||||
|
|
@ -493,9 +492,11 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="s2">"permanent"</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_dep</span><span class="p">(</span><span class="s2">"obj.cmdset.add() kwarg 'permanent' has changed name to "</span>
|
||||
<span class="s2">"'persistent' and now defaults to True."</span><span class="p">)</span>
|
||||
<span class="n">persistent</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'permanent'</span><span class="p">]</span> <span class="k">if</span> <span class="n">persistent</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">persistent</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_dep</span><span class="p">(</span>
|
||||
<span class="s2">"obj.cmdset.add() kwarg 'permanent' has changed name to "</span>
|
||||
<span class="s2">"'persistent' and now defaults to True."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">persistent</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"permanent"</span><span class="p">]</span> <span class="k">if</span> <span class="n">persistent</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">persistent</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">cmdset</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">or</span> <span class="n">utils</span><span class="o">.</span><span class="n">inherits_from</span><span class="p">(</span><span class="n">cmdset</span><span class="p">,</span> <span class="n">CmdSet</span><span class="p">)):</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"Only CmdSets can be added to the cmdsethandler!"</span><span class="p">)</span>
|
||||
|
|
@ -533,9 +534,10 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="s2">"permanent"</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_dep</span><span class="p">(</span><span class="s2">"obj.cmdset.add_default() kwarg 'permanent' has changed name to "</span>
|
||||
<span class="s2">"'persistent'."</span><span class="p">)</span>
|
||||
<span class="n">persistent</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'permanent'</span><span class="p">]</span> <span class="k">if</span> <span class="n">persistent</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">persistent</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_dep</span><span class="p">(</span>
|
||||
<span class="s2">"obj.cmdset.add_default() kwarg 'permanent' has changed name to 'persistent'."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">persistent</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"permanent"</span><span class="p">]</span> <span class="k">if</span> <span class="n">persistent</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">persistent</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">cmdset</span><span class="p">,</span> <span class="n">emit_to_obj</span><span class="o">=</span><span class="n">emit_to_obj</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="n">persistent</span><span class="p">,</span> <span class="n">default_cmdset</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdSetHandler.remove"><a class="viewcode-back" href="../../../api/evennia.commands.cmdsethandler.html#evennia.commands.cmdsethandler.CmdSetHandler.remove">[docs]</a> <span class="k">def</span> <span class="nf">remove</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmdset</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">default_cmdset</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -144,16 +144,16 @@
|
|||
<span class="c1"># pre-prepare a help index entry for quicker lookup</span>
|
||||
<span class="c1"># strip the @- etc to allow help to be agnostic</span>
|
||||
<span class="n">stripped_key</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">key</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">key</span> <span class="ow">and</span> <span class="bp">cls</span><span class="o">.</span><span class="n">key</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="n">CMD_IGNORE_PREFIXES</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">stripped_aliases</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">al</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="k">if</span> <span class="n">al</span> <span class="ow">and</span> <span class="n">al</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="n">CMD_IGNORE_PREFIXES</span> <span class="k">else</span> <span class="n">al</span>
|
||||
<span class="k">for</span> <span class="n">al</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">aliases</span><span class="p">))</span>
|
||||
<span class="n">stripped_aliases</span> <span class="o">=</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">al</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="k">if</span> <span class="n">al</span> <span class="ow">and</span> <span class="n">al</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="n">CMD_IGNORE_PREFIXES</span> <span class="k">else</span> <span class="n">al</span> <span class="k">for</span> <span class="n">al</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">aliases</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">cls</span><span class="o">.</span><span class="n">search_index_entry</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
||||
<span class="s2">"aliases"</span><span class="p">:</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">aliases</span><span class="p">),</span>
|
||||
<span class="s2">"no_prefix"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">stripped_key</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">stripped_aliases</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
||||
<span class="s2">"category"</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">help_category</span><span class="p">,</span>
|
||||
<span class="s2">"text"</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__doc__</span><span class="p">,</span>
|
||||
<span class="s2">"tags"</span><span class="p">:</span> <span class="s2">""</span>
|
||||
<span class="s2">"tags"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
|
||||
|
|
@ -604,7 +604,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">reverse</span><span class="p">(</span>
|
||||
<span class="s1">'help-entry-detail'</span><span class="p">,</span>
|
||||
<span class="s2">"help-entry-detail"</span><span class="p">,</span>
|
||||
<span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s2">"category"</span><span class="p">:</span> <span class="n">slugify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">help_category</span><span class="p">),</span> <span class="s2">"topic"</span><span class="p">:</span> <span class="n">slugify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)},</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -259,7 +259,7 @@
|
|||
<span class="n">ipregex</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">ipregex</span><span class="p">)</span>
|
||||
<span class="n">bantup</span> <span class="o">=</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="n">ban</span><span class="p">,</span> <span class="n">ipregex</span><span class="p">,</span> <span class="n">now</span><span class="p">,</span> <span class="n">reason</span><span class="p">)</span>
|
||||
|
||||
<span class="n">ret</span> <span class="o">=</span> <span class="k">yield</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Are you sure you want to </span><span class="si">{</span><span class="n">typ</span><span class="si">}</span><span class="s2">-ban '|w</span><span class="si">{</span><span class="n">ban</span><span class="si">}</span><span class="s2">|n' [Y]/N?"</span><span class="p">)</span>
|
||||
<span class="n">ret</span> <span class="o">=</span> <span class="k">yield</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"Are you sure you want to </span><span class="si">{</span><span class="n">typ</span><span class="si">}</span><span class="s2">-ban '|w</span><span class="si">{</span><span class="n">ban</span><span class="si">}</span><span class="s2">|n' [Y]/N?"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">str</span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"no"</span><span class="p">,</span> <span class="s2">"n"</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Aborted."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
|
@ -315,7 +315,7 @@
|
|||
<span class="n">ban</span> <span class="o">=</span> <span class="n">banlist</span><span class="p">[</span><span class="n">num</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">s</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">ban</span><span class="p">[:</span><span class="mi">2</span><span class="p">]]))</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
|
||||
<span class="n">ret</span> <span class="o">=</span> <span class="k">yield</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Are you sure you want to unban </span><span class="si">{</span><span class="n">num</span><span class="si">}</span><span class="s2">: '|w</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">|n' [Y]/N?"</span><span class="p">)</span>
|
||||
<span class="n">ret</span> <span class="o">=</span> <span class="k">yield</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"Are you sure you want to unban </span><span class="si">{</span><span class="n">num</span><span class="si">}</span><span class="s2">: '|w</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">|n' [Y]/N?"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">str</span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"n"</span><span class="p">,</span> <span class="s2">"no"</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Aborted."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
|
|
|||
|
|
@ -59,7 +59,8 @@
|
|||
<span class="n">class_from_module</span><span class="p">,</span>
|
||||
<span class="n">get_all_typeclasses</span><span class="p">,</span>
|
||||
<span class="n">variable_from_module</span><span class="p">,</span>
|
||||
<span class="n">dbref</span><span class="p">,</span> <span class="n">crop</span><span class="p">,</span>
|
||||
<span class="n">dbref</span><span class="p">,</span>
|
||||
<span class="n">crop</span><span class="p">,</span>
|
||||
<span class="n">interactive</span><span class="p">,</span>
|
||||
<span class="n">list_to_string</span><span class="p">,</span>
|
||||
<span class="n">display_len</span><span class="p">,</span>
|
||||
|
|
@ -1540,9 +1541,11 @@
|
|||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">parse</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">location</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage: open <new exit>[;alias...][:typeclass]"</span>
|
||||
<span class="s2">"[,<return exit>[;alias..][:typeclass]]] "</span>
|
||||
<span class="s2">"= <destination>"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"Usage: open <new exit>[;alias...][:typeclass]"</span>
|
||||
<span class="s2">"[,<return exit>[;alias..][:typeclass]]] "</span>
|
||||
<span class="s2">"= <destination>"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">InterruptCommand</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You cannot create an exit from a None-location."</span><span class="p">)</span>
|
||||
|
|
@ -1561,8 +1564,9 @@
|
|||
<span class="sd"> as well as the self.create_exit() method.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Create exit</span>
|
||||
<span class="n">ok</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create_exit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exit_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exit_aliases</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">exit_typeclass</span><span class="p">)</span>
|
||||
<span class="n">ok</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create_exit</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exit_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">exit_aliases</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">exit_typeclass</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">ok</span><span class="p">:</span>
|
||||
<span class="c1"># an error; the exit was not created, so we quit.</span>
|
||||
<span class="k">return</span>
|
||||
|
|
@ -1571,8 +1575,13 @@
|
|||
<span class="n">back_exit_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs_objs</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="s2">"name"</span><span class="p">]</span>
|
||||
<span class="n">back_exit_aliases</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs_objs</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="s2">"aliases"</span><span class="p">]</span>
|
||||
<span class="n">back_exit_typeclass</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs_objs</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="s2">"option"</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">create_exit</span><span class="p">(</span><span class="n">back_exit_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">,</span> <span class="n">back_exit_aliases</span><span class="p">,</span>
|
||||
<span class="n">back_exit_typeclass</span><span class="p">)</span></div></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">create_exit</span><span class="p">(</span>
|
||||
<span class="n">back_exit_name</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">,</span>
|
||||
<span class="n">back_exit_aliases</span><span class="p">,</span>
|
||||
<span class="n">back_exit_typeclass</span><span class="p">,</span>
|
||||
<span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_convert_from_string</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">strobj</span><span class="p">):</span>
|
||||
|
|
@ -1782,8 +1791,10 @@
|
|||
<span class="n">obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="n">category</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Deleted attribute </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">/|w</span><span class="si">{</span><span class="n">attr</span><span class="si">}</span><span class="s2">|n [category:</span><span class="si">{</span><span class="n">category</span><span class="si">}</span><span class="s2">]."</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">No attribute </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">/|w</span><span class="si">{</span><span class="n">attr</span><span class="si">}</span><span class="s2">|n [category: </span><span class="si">{</span><span class="n">category</span><span class="si">}</span><span class="s2">] "</span>
|
||||
<span class="s2">"was found to delete."</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">No attribute </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">/|w</span><span class="si">{</span><span class="n">attr</span><span class="si">}</span><span class="s2">|n [category: </span><span class="si">{</span><span class="n">category</span><span class="si">}</span><span class="s2">] "</span>
|
||||
<span class="s2">"was found to delete."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">error</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">No attribute </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">/|w</span><span class="si">{</span><span class="n">attr</span><span class="si">}</span><span class="s2">|n [category: </span><span class="si">{</span><span class="n">category</span><span class="si">}</span><span class="s2">] was found to delete."</span>
|
||||
<span class="k">if</span> <span class="n">nested</span><span class="p">:</span>
|
||||
<span class="n">error</span> <span class="o">+=</span> <span class="s2">" (Nested lookups attempted)"</span>
|
||||
|
|
@ -1855,7 +1866,7 @@
|
|||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
<span class="c1"># we set empty buffer on nonexisting Attribute because otherwise</span>
|
||||
<span class="c1"># we'd always have the string "None" in the buffer to start with</span>
|
||||
<span class="n">old_value</span> <span class="o">=</span> <span class="s1">''</span>
|
||||
<span class="n">old_value</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">old_value</span><span class="p">)</span> <span class="c1"># we already confirmed we are ok with this</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">buf</span><span class="p">):</span>
|
||||
|
|
@ -1867,11 +1878,12 @@
|
|||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">old_value</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">old_value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="n">answer</span> <span class="o">=</span> <span class="k">yield</span><span class="p">(</span>
|
||||
<span class="n">answer</span> <span class="o">=</span> <span class="k">yield</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"|rWarning: Attribute |w</span><span class="si">{</span><span class="n">attr</span><span class="si">}</span><span class="s2">|r is of type |w</span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">old_value</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">|r. "</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">To continue editing, it must be converted to (and saved as) a string. "</span>
|
||||
<span class="s2">"Continue? [Y]/N?"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">answer</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'n'</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">):</span>
|
||||
<span class="s2">"Continue? [Y]/N?"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">answer</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"n"</span><span class="p">,</span> <span class="s2">"no"</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Aborted edit."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
|
|
@ -1945,9 +1957,11 @@
|
|||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"The Line editor can only be applied "</span> <span class="s2">"to one attribute at a time."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">attrs</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Use `set/edit <objname>/<attr>` to define the Attribute to edit.</span><span class="se">\n</span><span class="s2">To "</span>
|
||||
<span class="s2">"edit the current room description, use `set/edit here/desc` (or "</span>
|
||||
<span class="s2">"use the `desc` command)."</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"Use `set/edit <objname>/<attr>` to define the Attribute to edit.</span><span class="se">\n</span><span class="s2">To "</span>
|
||||
<span class="s2">"edit the current room description, use `set/edit here/desc` (or "</span>
|
||||
<span class="s2">"use the `desc` command)."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">edit_handler</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">attrs</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">caller</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
|
@ -1978,8 +1992,10 @@
|
|||
<span class="k">global</span> <span class="n">_ATTRFUNCPARSER</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_ATTRFUNCPARSER</span><span class="p">:</span>
|
||||
<span class="n">_ATTRFUNCPARSER</span> <span class="o">=</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">FuncParser</span><span class="p">(</span>
|
||||
<span class="p">{</span><span class="s2">"dbref"</span><span class="p">:</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">funcparser_callable_search</span><span class="p">,</span>
|
||||
<span class="s2">"search"</span><span class="p">:</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">funcparser_callable_search</span><span class="p">}</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"dbref"</span><span class="p">:</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">funcparser_callable_search</span><span class="p">,</span>
|
||||
<span class="s2">"search"</span><span class="p">:</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">funcparser_callable_search</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"control"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"edit"</span><span class="p">)):</span>
|
||||
|
|
@ -1993,10 +2009,13 @@
|
|||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">parsed_value</span><span class="p">,</span> <span class="s2">"access"</span><span class="p">):</span>
|
||||
<span class="c1"># if this is an object we must have the right to read it, if so,</span>
|
||||
<span class="c1"># we will not convert it to a string</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">parsed_value</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"control"</span><span class="p">)</span>
|
||||
<span class="ow">or</span> <span class="n">parsed_value</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"edit"</span><span class="p">)):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You don't have permission to set "</span>
|
||||
<span class="sa">f</span><span class="s2">"object with identifier '</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">'."</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span>
|
||||
<span class="n">parsed_value</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"control"</span><span class="p">)</span>
|
||||
<span class="ow">or</span> <span class="n">parsed_value</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"edit"</span><span class="p">)</span>
|
||||
<span class="p">):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"You don't have permission to set "</span> <span class="sa">f</span><span class="s2">"object with identifier '</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">'."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">parsed_value</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -2080,7 +2099,7 @@
|
|||
<span class="n">obj</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">query</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">elif</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">__dbclass__</span> <span class="o">==</span> <span class="n">dbclass</span><span class="p">):</span>
|
||||
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">__dbclass__</span> <span class="o">==</span> <span class="n">dbclass</span><span class="p">:</span>
|
||||
<span class="c1"># applying account while caller is object</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Trying to search </span><span class="si">{</span><span class="n">new_typeclass</span><span class="si">}</span><span class="s2"> with query '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="si">}</span><span class="s2">'."</span><span class="p">)</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">query</span><span class="p">)</span>
|
||||
|
|
@ -2113,7 +2132,7 @@
|
|||
|
||||
<span class="n">caller</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
|
||||
<span class="k">if</span> <span class="s2">"list"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmdname</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'typeclasses'</span><span class="p">,</span> <span class="s1">'@typeclasses'</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="s2">"list"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmdname</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"typeclasses"</span><span class="p">,</span> <span class="s2">"@typeclasses"</span><span class="p">):</span>
|
||||
<span class="n">tclasses</span> <span class="o">=</span> <span class="n">get_all_typeclasses</span><span class="p">()</span>
|
||||
<span class="n">contribs</span> <span class="o">=</span> <span class="p">[</span><span class="n">key</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">tclasses</span><span class="p">)</span> <span class="k">if</span> <span class="n">key</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"evennia.contrib"</span><span class="p">)]</span> <span class="ow">or</span> <span class="p">[</span>
|
||||
<span class="s2">"<None loaded>"</span>
|
||||
|
|
@ -2230,8 +2249,10 @@
|
|||
|
||||
<span class="n">is_same</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">is_typeclass</span><span class="p">(</span><span class="n">new_typeclass</span><span class="p">,</span> <span class="n">exact</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">is_same</span> <span class="ow">and</span> <span class="s2">"force"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> already has the typeclass '</span><span class="si">{</span><span class="n">new_typeclass</span><span class="si">}</span><span class="s2">'. "</span>
|
||||
<span class="s2">"Use /force to override."</span><span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> already has the typeclass '</span><span class="si">{</span><span class="n">new_typeclass</span><span class="si">}</span><span class="s2">'. "</span>
|
||||
<span class="s2">"Use /force to override."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">update</span> <span class="o">=</span> <span class="s2">"update"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span>
|
||||
<span class="n">reset</span> <span class="o">=</span> <span class="s2">"reset"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span>
|
||||
|
|
@ -2262,7 +2283,8 @@
|
|||
|
||||
<span class="k">if</span> <span class="s2">"prototype"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
||||
<span class="n">modified</span> <span class="o">=</span> <span class="n">spawner</span><span class="o">.</span><span class="n">batch_update_objects_with_prototype</span><span class="p">(</span>
|
||||
<span class="n">prototype</span><span class="p">,</span> <span class="n">objects</span><span class="o">=</span><span class="p">[</span><span class="n">obj</span><span class="p">],</span> <span class="n">caller</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">)</span>
|
||||
<span class="n">prototype</span><span class="p">,</span> <span class="n">objects</span><span class="o">=</span><span class="p">[</span><span class="n">obj</span><span class="p">],</span> <span class="n">caller</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">prototype_success</span> <span class="o">=</span> <span class="n">modified</span> <span class="o">></span> <span class="mi">0</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">prototype_success</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Prototype </span><span class="si">%s</span><span class="s2"> failed to apply."</span> <span class="o">%</span> <span class="n">prototype</span><span class="p">[</span><span class="s2">"key"</span><span class="p">])</span>
|
||||
|
|
@ -2585,9 +2607,7 @@
|
|||
<div class="viewcode-block" id="CmdExamine.format_locks"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.format_locks">[docs]</a> <span class="k">def</span> <span class="nf">format_locks</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">locks</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">locks</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">utils</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span>
|
||||
<span class="s2">"; "</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">lock</span> <span class="k">for</span> <span class="n">lock</span> <span class="ow">in</span> <span class="n">locks</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">";"</span><span class="p">)]),</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">utils</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="s2">"; "</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">lock</span> <span class="k">for</span> <span class="n">lock</span> <span class="ow">in</span> <span class="n">locks</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">";"</span><span class="p">)]),</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s2">"Default"</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.format_scripts"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.format_scripts">[docs]</a> <span class="k">def</span> <span class="nf">format_scripts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
|
||||
|
|
@ -2614,6 +2634,7 @@
|
|||
<span class="k">if</span> <span class="n">value</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">string</span><span class="si">}</span><span class="s2">: T"</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">string</span><span class="si">}</span><span class="s2">: F"</span>
|
||||
|
||||
<span class="n">txt</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">_truefalse</span><span class="p">(</span><span class="n">opt</span><span class="p">,</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">cmdset</span><span class="p">,</span> <span class="n">opt</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">opt</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"no_exits"</span><span class="p">,</span> <span class="s2">"no_objs"</span><span class="p">,</span> <span class="s2">"no_channels"</span><span class="p">,</span> <span class="s2">"duplicates"</span><span class="p">)</span>
|
||||
|
|
@ -2649,13 +2670,18 @@
|
|||
<span class="c1"># we only show the first session's cmdset here (it is -in principle- possible</span>
|
||||
<span class="c1"># that different sessions have different cmdsets but for admins who want such</span>
|
||||
<span class="c1"># madness it is better that they overload with their own CmdExamine to handle it).</span>
|
||||
<span class="n">all_cmdsets</span><span class="o">.</span><span class="n">extend</span><span class="p">([(</span><span class="n">cmdset</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">cmdset</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">cmdset</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">all</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">all</span><span class="p">()])</span>
|
||||
<span class="n">all_cmdsets</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span>
|
||||
<span class="p">[(</span><span class="n">cmdset</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">cmdset</span><span class="p">)</span> <span class="k">for</span> <span class="n">cmdset</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">all</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">all</span><span class="p">()]</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="c1"># we have to protect this since many objects don't have sessions.</span>
|
||||
<span class="n">all_cmdsets</span><span class="o">.</span><span class="n">extend</span><span class="p">([(</span><span class="n">cmdset</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">cmdset</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">cmdset</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">get_session</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">get</span><span class="p">())</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">all</span><span class="p">()])</span>
|
||||
<span class="n">all_cmdsets</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span>
|
||||
<span class="p">[</span>
|
||||
<span class="p">(</span><span class="n">cmdset</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">cmdset</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">cmdset</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">get_session</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">get</span><span class="p">())</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
||||
<span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="p">(</span><span class="ne">TypeError</span><span class="p">,</span> <span class="ne">AttributeError</span><span class="p">):</span>
|
||||
<span class="c1"># an error means we are merging an object without a session</span>
|
||||
<span class="k">pass</span>
|
||||
|
|
@ -2701,8 +2727,10 @@
|
|||
<span class="n">typ</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" |B[type: </span><span class="si">{</span><span class="n">typ</span><span class="si">}</span><span class="s2">]|n"</span> <span class="k">if</span> <span class="n">typ</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">to_str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">_FUNCPARSER</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">ansi_raw</span><span class="p">(</span><span class="n">value</span><span class="p">),</span> <span class="n">escape</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"Attribute </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">header_color</span><span class="si">}{</span><span class="n">key</span><span class="si">}</span><span class="s2">|n "</span>
|
||||
<span class="sa">f</span><span class="s2">"[category=</span><span class="si">{</span><span class="n">category</span><span class="si">}</span><span class="s2">]</span><span class="si">{</span><span class="n">typ</span><span class="si">}</span><span class="s2">:</span><span class="se">\n\n</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Attribute </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">header_color</span><span class="si">}{</span><span class="n">key</span><span class="si">}</span><span class="s2">|n "</span>
|
||||
<span class="sa">f</span><span class="s2">"[category=</span><span class="si">{</span><span class="n">category</span><span class="si">}</span><span class="s2">]</span><span class="si">{</span><span class="n">typ</span><span class="si">}</span><span class="s2">:</span><span class="se">\n\n</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.format_single_attribute"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.format_single_attribute">[docs]</a> <span class="k">def</span> <span class="nf">format_single_attribute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attr</span><span class="p">):</span>
|
||||
<span class="k">global</span> <span class="n">_FUNCPARSER</span>
|
||||
|
|
@ -2722,8 +2750,7 @@
|
|||
|
||||
<div class="viewcode-block" id="CmdExamine.format_attributes"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.format_attributes">[docs]</a> <span class="k">def</span> <span class="nf">format_attributes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">format_single_attribute</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">db_attributes</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
|
||||
<span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">format_single_attribute</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span> <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">db_attributes</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">output</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span>
|
||||
<span class="c1"># we don't want just an empty line</span>
|
||||
|
|
@ -2737,8 +2764,7 @@
|
|||
|
||||
<span class="k">if</span> <span class="n">ndb_attr</span> <span class="ow">and</span> <span class="n">ndb_attr</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span> <span class="o">+</span> <span class="s2">" </span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">format_single_attribute</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">ndb_attr</span><span class="p">)</span>
|
||||
<span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">format_single_attribute</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span> <span class="k">for</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">ndb_attr</span><span class="p">)</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.format_exits"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.format_exits">[docs]</a> <span class="k">def</span> <span class="nf">format_exits</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
|
||||
|
|
@ -2748,14 +2774,16 @@
|
|||
|
||||
<div class="viewcode-block" id="CmdExamine.format_chars"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.format_chars">[docs]</a> <span class="k">def</span> <span class="nf">format_chars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"contents"</span><span class="p">):</span>
|
||||
<span class="n">chars</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">contents</span>
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">account</span><span class="p">)</span>
|
||||
<span class="n">chars</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">contents</span> <span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">account</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">chars</span> <span class="k">if</span> <span class="n">chars</span> <span class="k">else</span> <span class="kc">None</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.format_things"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.format_things">[docs]</a> <span class="k">def</span> <span class="nf">format_things</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"contents"</span><span class="p">):</span>
|
||||
<span class="n">things</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">contents</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">account</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">destination</span><span class="p">)</span>
|
||||
<span class="n">things</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">contents</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">account</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">destination</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">things</span> <span class="k">if</span> <span class="n">things</span> <span class="k">else</span> <span class="kc">None</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.format_script_desc"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.format_script_desc">[docs]</a> <span class="k">def</span> <span class="nf">format_script_desc</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
|
||||
|
|
@ -2778,8 +2806,10 @@
|
|||
<span class="n">remaining_repeats</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">remaining_repeats</span><span class="p">()</span>
|
||||
<span class="n">remaining_repeats</span> <span class="o">=</span> <span class="mi">0</span> <span class="k">if</span> <span class="n">remaining_repeats</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">remaining_repeats</span>
|
||||
<span class="n">repeats</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" - </span><span class="si">{</span><span class="n">remaining_repeats</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">db_repeats</span><span class="si">}</span><span class="s2"> remain"</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">active</span><span class="si">}</span><span class="s2"> - interval: </span><span class="si">{</span><span class="n">interval</span><span class="si">}</span><span class="s2">s "</span>
|
||||
<span class="sa">f</span><span class="s2">"(next: </span><span class="si">{</span><span class="n">next_repeat</span><span class="si">}{</span><span class="n">repeats</span><span class="si">}</span><span class="s2">, start_delay: </span><span class="si">{</span><span class="n">start_delay</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span></div>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">active</span><span class="si">}</span><span class="s2"> - interval: </span><span class="si">{</span><span class="n">interval</span><span class="si">}</span><span class="s2">s "</span>
|
||||
<span class="sa">f</span><span class="s2">"(next: </span><span class="si">{</span><span class="n">next_repeat</span><span class="si">}{</span><span class="n">repeats</span><span class="si">}</span><span class="s2">, start_delay: </span><span class="si">{</span><span class="n">start_delay</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.format_channel_sub_totals"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.format_channel_sub_totals">[docs]</a> <span class="k">def</span> <span class="nf">format_channel_sub_totals</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"db_account_subscriptions"</span><span class="p">):</span>
|
||||
|
|
@ -2794,14 +2824,16 @@
|
|||
<span class="n">account_subs</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">db_account_subscriptions</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">account_subs</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">format_grid</span><span class="p">([</span><span class="n">sub</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">sub</span> <span class="ow">in</span> <span class="n">account_subs</span><span class="p">],</span> <span class="n">sep</span><span class="o">=</span><span class="s1">' '</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="n">_DEFAULT_WIDTH</span><span class="p">))</span></div>
|
||||
<span class="n">format_grid</span><span class="p">([</span><span class="n">sub</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">sub</span> <span class="ow">in</span> <span class="n">account_subs</span><span class="p">],</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="n">_DEFAULT_WIDTH</span><span class="p">)</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.format_channel_object_subs"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.format_channel_object_subs">[docs]</a> <span class="k">def</span> <span class="nf">format_channel_object_subs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"db_object_subscriptions"</span><span class="p">):</span>
|
||||
<span class="n">object_subs</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">db_object_subscriptions</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">object_subs</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">format_grid</span><span class="p">([</span><span class="n">sub</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">sub</span> <span class="ow">in</span> <span class="n">object_subs</span><span class="p">],</span> <span class="n">sep</span><span class="o">=</span><span class="s1">' '</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="n">_DEFAULT_WIDTH</span><span class="p">))</span></div>
|
||||
<span class="n">format_grid</span><span class="p">([</span><span class="n">sub</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">sub</span> <span class="ow">in</span> <span class="n">object_subs</span><span class="p">],</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="n">_DEFAULT_WIDTH</span><span class="p">)</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.get_formatted_obj_data"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.get_formatted_obj_data">[docs]</a> <span class="k">def</span> <span class="nf">get_formatted_obj_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">current_cmdset</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -2823,13 +2855,14 @@
|
|||
<span class="n">objdata</span><span class="p">[</span><span class="s2">"Destination"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_destination</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
|
||||
<span class="n">objdata</span><span class="p">[</span><span class="s2">"Permissions"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_permissions</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
|
||||
<span class="n">objdata</span><span class="p">[</span><span class="s2">"Locks"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_locks</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">current_cmdset</span>
|
||||
<span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> <span class="o">==</span> <span class="mi">1</span>
|
||||
<span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">current</span><span class="o">.</span><span class="n">key</span> <span class="o">==</span> <span class="s2">"_EMPTY_CMDSET"</span><span class="p">)):</span>
|
||||
<span class="k">if</span> <span class="n">current_cmdset</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span>
|
||||
<span class="nb">len</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">current</span><span class="o">.</span><span class="n">key</span> <span class="o">==</span> <span class="s2">"_EMPTY_CMDSET"</span>
|
||||
<span class="p">):</span>
|
||||
<span class="n">objdata</span><span class="p">[</span><span class="s2">"Stored Cmdset(s)"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_stored_cmdsets</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
|
||||
<span class="n">objdata</span><span class="p">[</span><span class="s2">"Merged Cmdset(s)"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_merged_cmdsets</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">current_cmdset</span><span class="p">)</span>
|
||||
<span class="n">objdata</span><span class="p">[</span><span class="sa">f</span><span class="s2">"Commands vailable to </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> (result of Merged Cmdset(s))"</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">format_current_cmds</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">current_cmdset</span><span class="p">))</span>
|
||||
<span class="n">objdata</span><span class="p">[</span>
|
||||
<span class="sa">f</span><span class="s2">"Commands vailable to </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> (result of Merged Cmdset(s))"</span>
|
||||
<span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_current_cmds</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">current_cmdset</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">object_type</span> <span class="o">==</span> <span class="s2">"script"</span><span class="p">:</span>
|
||||
<span class="n">objdata</span><span class="p">[</span><span class="s2">"Description"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_script_desc</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
|
||||
<span class="n">objdata</span><span class="p">[</span><span class="s2">"Persistent"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_script_is_persistent</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
|
||||
|
|
@ -2901,10 +2934,11 @@
|
|||
<span class="n">obj</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="n">err</span> <span class="o">=</span> <span class="s2">"Multiple </span><span class="si">{objtype}</span><span class="s2"> found with key </span><span class="si">{obj_name}</span><span class="s2">:</span><span class="se">\n</span><span class="si">{matches}</span><span class="s2">"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">err</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">obj_name</span><span class="o">=</span><span class="n">obj_name</span><span class="p">,</span>
|
||||
<span class="n">matches</span><span class="o">=</span><span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ob</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">(#</span><span class="si">{</span><span class="n">ob</span><span class="o">.</span><span class="n">id</span><span class="si">}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">ob</span> <span class="ow">in</span> <span class="n">obj</span><span class="p">)</span>
|
||||
<span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">err</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">obj_name</span><span class="o">=</span><span class="n">obj_name</span><span class="p">,</span> <span class="n">matches</span><span class="o">=</span><span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ob</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">(#</span><span class="si">{</span><span class="n">ob</span><span class="o">.</span><span class="n">id</span><span class="si">}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">ob</span> <span class="ow">in</span> <span class="n">obj</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
|
@ -2929,13 +2963,16 @@
|
|||
<span class="c1"># is not so common anyway.</span>
|
||||
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">obj_name</span> <span class="o">=</span> <span class="n">objdef</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="c1"># name</span>
|
||||
<span class="n">obj_name</span> <span class="o">=</span> <span class="n">objdef</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="c1"># name</span>
|
||||
<span class="n">obj_attrs</span> <span class="o">=</span> <span class="n">objdef</span><span class="p">[</span><span class="s2">"attrs"</span><span class="p">]</span> <span class="c1"># /attrs</span>
|
||||
|
||||
<span class="c1"># identify object type, in prio account - script - channel</span>
|
||||
<span class="n">object_type</span> <span class="o">=</span> <span class="s2">"object"</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">inherits_from</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"evennia.accounts.accounts.DefaultAccount"</span><span class="p">)</span>
|
||||
<span class="ow">or</span> <span class="s2">"account"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="n">obj_name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)):</span>
|
||||
<span class="k">if</span> <span class="p">(</span>
|
||||
<span class="n">utils</span><span class="o">.</span><span class="n">inherits_from</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"evennia.accounts.accounts.DefaultAccount"</span><span class="p">)</span>
|
||||
<span class="ow">or</span> <span class="s2">"account"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span>
|
||||
<span class="ow">or</span> <span class="n">obj_name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span>
|
||||
<span class="p">):</span>
|
||||
<span class="n">object_type</span> <span class="o">=</span> <span class="s2">"account"</span>
|
||||
<span class="k">elif</span> <span class="s2">"script"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
||||
<span class="n">object_type</span> <span class="o">=</span> <span class="s2">"script"</span>
|
||||
|
|
@ -3335,7 +3372,7 @@
|
|||
<span class="s2">"start"</span><span class="p">:</span> <span class="s2">"|gStarted|n"</span><span class="p">,</span>
|
||||
<span class="s2">"stop"</span><span class="p">:</span> <span class="s2">"|RStopped|n"</span><span class="p">,</span>
|
||||
<span class="s2">"pause"</span><span class="p">:</span> <span class="s2">"|Paused|n"</span><span class="p">,</span>
|
||||
<span class="s2">"delete"</span><span class="p">:</span> <span class="s2">"|rDeleted|n"</span>
|
||||
<span class="s2">"delete"</span><span class="p">:</span> <span class="s2">"|rDeleted|n"</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_search_script</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
|
||||
|
|
@ -3349,7 +3386,7 @@
|
|||
<span class="k">return</span> <span class="n">scripts</span>
|
||||
<span class="k">if</span> <span class="s2">"-"</span> <span class="ow">in</span> <span class="n">args</span><span class="p">:</span>
|
||||
<span class="c1"># may be a dbref-range</span>
|
||||
<span class="n">val1</span><span class="p">,</span> <span class="n">val2</span> <span class="o">=</span> <span class="p">(</span><span class="n">dbref</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'-'</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="n">val1</span><span class="p">,</span> <span class="n">val2</span> <span class="o">=</span> <span class="p">(</span><span class="n">dbref</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">val1</span> <span class="ow">and</span> <span class="n">val2</span><span class="p">:</span>
|
||||
<span class="n">scripts</span> <span class="o">=</span> <span class="n">ScriptDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">id__in</span><span class="o">=</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="n">val1</span><span class="p">,</span> <span class="n">val2</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)))</span>
|
||||
<span class="k">if</span> <span class="n">scripts</span><span class="p">:</span>
|
||||
|
|
@ -3390,11 +3427,14 @@
|
|||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">scripts</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">,</span> <span class="n">autostart</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Script |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="si">}</span><span class="s2">|n successfully added and "</span>
|
||||
<span class="sa">f</span><span class="s2">"started on </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"started on </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span><span class="si">}</span><span class="s2">."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Script </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="si">}</span><span class="s2"> could not be added and/or started "</span>
|
||||
<span class="sa">f</span><span class="s2">"on </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span><span class="si">}</span><span class="s2"> (or it started and "</span>
|
||||
<span class="s2">"immediately shut down)."</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Script </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="si">}</span><span class="s2"> could not be added and/or started "</span>
|
||||
<span class="sa">f</span><span class="s2">"on </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span><span class="si">}</span><span class="s2"> (or it started and "</span>
|
||||
<span class="s2">"immediately shut down)."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># just show all scripts on object</span>
|
||||
<span class="n">scripts</span> <span class="o">=</span> <span class="n">ScriptDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_obj</span><span class="o">=</span><span class="n">obj</span><span class="p">)</span>
|
||||
|
|
@ -3416,12 +3456,15 @@
|
|||
<span class="n">new_script</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">new_script</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Global Script Created - "</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">new_script</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">new_script</span><span class="o">.</span><span class="n">typeclass_path</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Global Script Created - "</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">new_script</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">new_script</span><span class="o">.</span><span class="n">typeclass_path</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">ScriptEvMore</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="p">[</span><span class="n">new_script</span><span class="p">],</span> <span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Global Script |rNOT|n Created |r(see log)|n - "</span>
|
||||
<span class="sa">f</span><span class="s2">"arguments: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Global Script |rNOT|n Created |r(see log)|n - "</span> <span class="sa">f</span><span class="s2">"arguments: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">elif</span> <span class="n">scripts</span> <span class="ow">or</span> <span class="n">obj</span><span class="p">:</span>
|
||||
<span class="c1"># modification switches - must operate on existing scripts</span>
|
||||
|
|
@ -3430,9 +3473,11 @@
|
|||
<span class="n">scripts</span> <span class="o">=</span> <span class="n">ScriptDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_obj</span><span class="o">=</span><span class="n">obj</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">scripts</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="n">ret</span> <span class="o">=</span> <span class="k">yield</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Multiple scripts found: </span><span class="si">{</span><span class="n">scripts</span><span class="si">}</span><span class="s2">. Are you sure you want to "</span>
|
||||
<span class="s2">"operate on all of them? [Y]/N? "</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">ret</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'n'</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">):</span>
|
||||
<span class="n">ret</span> <span class="o">=</span> <span class="k">yield</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Multiple scripts found: </span><span class="si">{</span><span class="n">scripts</span><span class="si">}</span><span class="s2">. Are you sure you want to "</span>
|
||||
<span class="s2">"operate on all of them? [Y]/N? "</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">ret</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"n"</span><span class="p">,</span> <span class="s2">"no"</span><span class="p">):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Aborted."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
|
|
@ -3448,11 +3493,14 @@
|
|||
<span class="nb">getattr</span><span class="p">(</span><span class="n">script</span><span class="p">,</span> <span class="n">switch</span><span class="p">)()</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">()</span>
|
||||
<span class="n">msgs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">scripttype</span><span class="si">}</span><span class="s2"> |rNOT|n </span><span class="si">{</span><span class="n">verb</span><span class="si">}</span><span class="s2"> |r(see log)|n - "</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">script_key</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">script_typeclass_path</span><span class="si">}</span><span class="s2">)|n"</span><span class="p">)</span>
|
||||
<span class="n">msgs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">scripttype</span><span class="si">}</span><span class="s2"> |rNOT|n </span><span class="si">{</span><span class="n">verb</span><span class="si">}</span><span class="s2"> |r(see log)|n - "</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">script_key</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">script_typeclass_path</span><span class="si">}</span><span class="s2">)|n"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">msgs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">scripttype</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">verb</span><span class="si">}</span><span class="s2"> - "</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">script_key</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">script_typeclass_path</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span>
|
||||
<span class="n">msgs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">scripttype</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">verb</span><span class="si">}</span><span class="s2"> - "</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">script_key</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">script_typeclass_path</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">msgs</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="s2">"delete"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
||||
<span class="n">ScriptEvMore</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="p">[</span><span class="n">script</span><span class="p">],</span> <span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
|
||||
|
|
@ -3530,7 +3578,7 @@
|
|||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># last N table</span>
|
||||
<span class="n">objs</span> <span class="o">=</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"db_date_created"</span><span class="p">)[</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">nobjs</span> <span class="o">-</span> <span class="n">nlim</span><span class="p">):</span> <span class="p">]</span>
|
||||
<span class="n">objs</span> <span class="o">=</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"db_date_created"</span><span class="p">)[</span><span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">nobjs</span> <span class="o">-</span> <span class="n">nlim</span><span class="p">)</span> <span class="p">:]</span>
|
||||
<span class="n">latesttable</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">styled_table</span><span class="p">(</span>
|
||||
<span class="s2">"|wcreated|n"</span><span class="p">,</span> <span class="s2">"|wdbref|n"</span><span class="p">,</span> <span class="s2">"|wname|n"</span><span class="p">,</span> <span class="s2">"|wtypeclass|n"</span><span class="p">,</span> <span class="n">align</span><span class="o">=</span><span class="s2">"l"</span><span class="p">,</span> <span class="n">border</span><span class="o">=</span><span class="s2">"table"</span>
|
||||
<span class="p">)</span>
|
||||
|
|
@ -3662,14 +3710,18 @@
|
|||
|
||||
<span class="c1"># check any locks</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="s2">"Admin"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"teleport"</span><span class="p">)):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="si">}</span><span class="s2"> 'teleport'-lock blocks you from teleporting "</span>
|
||||
<span class="s2">"it anywhere."</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="si">}</span><span class="s2"> 'teleport'-lock blocks you from teleporting "</span> <span class="s2">"it anywhere."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="s2">"Admin"</span><span class="p">)</span>
|
||||
<span class="ow">or</span> <span class="n">destination</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">obj_to_teleport</span><span class="p">,</span> <span class="s2">"teleport_here"</span><span class="p">)):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">destination</span><span class="si">}</span><span class="s2"> 'teleport_here'-lock blocks </span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="si">}</span><span class="s2"> from "</span>
|
||||
<span class="s2">"moving there."</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="s2">"Admin"</span><span class="p">)</span>
|
||||
<span class="ow">or</span> <span class="n">destination</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">obj_to_teleport</span><span class="p">,</span> <span class="s2">"teleport_here"</span><span class="p">)</span>
|
||||
<span class="p">):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">destination</span><span class="si">}</span><span class="s2"> 'teleport_here'-lock blocks </span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="si">}</span><span class="s2"> from "</span> <span class="s2">"moving there."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># try the teleport</span>
|
||||
|
|
@ -3678,8 +3730,11 @@
|
|||
<span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="n">destination</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Teleported </span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="si">}</span><span class="s2"> None -> </span><span class="si">{</span><span class="n">destination</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span>
|
||||
<span class="n">destination</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="s2">"quiet"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">,</span>
|
||||
<span class="n">emit_to_obj</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">use_destination</span><span class="o">=</span><span class="s2">"intoexit"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">):</span>
|
||||
<span class="n">destination</span><span class="p">,</span>
|
||||
<span class="n">quiet</span><span class="o">=</span><span class="s2">"quiet"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">,</span>
|
||||
<span class="n">emit_to_obj</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">use_destination</span><span class="o">=</span><span class="s2">"intoexit"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">obj_to_teleport</span> <span class="o">==</span> <span class="n">caller</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Teleported to </span><span class="si">{</span><span class="n">destination</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
|
|
@ -4037,7 +4092,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"No prototypes found."</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_list_prototypes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Display prototypes as a list, optionally limited by key/tags. """</span>
|
||||
<span class="sd">"""Display prototypes as a list, optionally limited by key/tags."""</span>
|
||||
<span class="n">protlib</span><span class="o">.</span><span class="n">list_prototypes</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="n">tags</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@interactive</span>
|
||||
|
|
@ -4081,7 +4136,9 @@
|
|||
<span class="k">return</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">n_updated</span> <span class="o">=</span> <span class="n">spawner</span><span class="o">.</span><span class="n">batch_update_objects_with_prototype</span><span class="p">(</span>
|
||||
<span class="n">prototype</span><span class="p">,</span> <span class="n">objects</span><span class="o">=</span><span class="n">existing_objects</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">prototype</span><span class="p">,</span>
|
||||
<span class="n">objects</span><span class="o">=</span><span class="n">existing_objects</span><span class="p">,</span>
|
||||
<span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">()</span>
|
||||
|
|
|
|||
|
|
@ -62,16 +62,15 @@
|
|||
|
||||
<span class="n">COMMAND_DEFAULT_CLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">)</span>
|
||||
<span class="n">CHANNEL_DEFAULT_TYPECLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span>
|
||||
<span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHANNEL_TYPECLASS</span><span class="p">,</span> <span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_CHANNEL_TYPECLASS</span><span class="p">)</span>
|
||||
<span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHANNEL_TYPECLASS</span><span class="p">,</span> <span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">FALLBACK_CHANNEL_TYPECLASS</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
|
||||
<span class="c1"># limit symbol import for API</span>
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"CmdChannel"</span><span class="p">,</span>
|
||||
<span class="s2">"CmdObjectChannel"</span><span class="p">,</span>
|
||||
|
||||
<span class="s2">"CmdPage"</span><span class="p">,</span>
|
||||
|
||||
<span class="s2">"CmdIRC2Chan"</span><span class="p">,</span>
|
||||
<span class="s2">"CmdIRCStatus"</span><span class="p">,</span>
|
||||
<span class="s2">"CmdRSS2Chan"</span><span class="p">,</span>
|
||||
|
|
@ -249,6 +248,7 @@
|
|||
<span class="sd"> ban mychannel1,mychannel2= EvilUser : Was banned for spamming.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"@channel"</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"@chan"</span><span class="p">,</span> <span class="s2">"@channels"</span><span class="p">]</span>
|
||||
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"Comms"</span>
|
||||
|
|
@ -257,8 +257,25 @@
|
|||
<span class="c1"># the manage: lock controls access to /create/destroy/desc/lock/unlock switches</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:not pperm(channel_banned);admin:all();manage:all();changelocks:perm(Admin)"</span>
|
||||
<span class="n">switch_options</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"list"</span><span class="p">,</span> <span class="s2">"all"</span><span class="p">,</span> <span class="s2">"history"</span><span class="p">,</span> <span class="s2">"sub"</span><span class="p">,</span> <span class="s2">"unsub"</span><span class="p">,</span> <span class="s2">"mute"</span><span class="p">,</span> <span class="s2">"unmute"</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">,</span> <span class="s2">"unalias"</span><span class="p">,</span>
|
||||
<span class="s2">"create"</span><span class="p">,</span> <span class="s2">"destroy"</span><span class="p">,</span> <span class="s2">"desc"</span><span class="p">,</span> <span class="s2">"lock"</span><span class="p">,</span> <span class="s2">"unlock"</span><span class="p">,</span> <span class="s2">"boot"</span><span class="p">,</span> <span class="s2">"ban"</span><span class="p">,</span> <span class="s2">"unban"</span><span class="p">,</span> <span class="s2">"who"</span><span class="p">,)</span>
|
||||
<span class="s2">"list"</span><span class="p">,</span>
|
||||
<span class="s2">"all"</span><span class="p">,</span>
|
||||
<span class="s2">"history"</span><span class="p">,</span>
|
||||
<span class="s2">"sub"</span><span class="p">,</span>
|
||||
<span class="s2">"unsub"</span><span class="p">,</span>
|
||||
<span class="s2">"mute"</span><span class="p">,</span>
|
||||
<span class="s2">"unmute"</span><span class="p">,</span>
|
||||
<span class="s2">"alias"</span><span class="p">,</span>
|
||||
<span class="s2">"unalias"</span><span class="p">,</span>
|
||||
<span class="s2">"create"</span><span class="p">,</span>
|
||||
<span class="s2">"destroy"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">,</span>
|
||||
<span class="s2">"lock"</span><span class="p">,</span>
|
||||
<span class="s2">"unlock"</span><span class="p">,</span>
|
||||
<span class="s2">"boot"</span><span class="p">,</span>
|
||||
<span class="s2">"ban"</span><span class="p">,</span>
|
||||
<span class="s2">"unban"</span><span class="p">,</span>
|
||||
<span class="s2">"who"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># disable this in child command classes if wanting on-character channels</span>
|
||||
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
|
|
@ -295,17 +312,24 @@
|
|||
<span class="n">channels</span> <span class="o">=</span> <span class="n">CHANNEL_DEFAULT_TYPECLASS</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">channel_search</span><span class="p">(</span><span class="n">channelname</span><span class="p">,</span> <span class="n">exact</span><span class="o">=</span><span class="n">exact</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># check permissions</span>
|
||||
<span class="n">channels</span> <span class="o">=</span> <span class="p">[</span><span class="n">channel</span> <span class="k">for</span> <span class="n">channel</span> <span class="ow">in</span> <span class="n">channels</span>
|
||||
<span class="k">if</span> <span class="n">channel</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s1">'listen'</span><span class="p">)</span> <span class="ow">or</span> <span class="n">channel</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s1">'control'</span><span class="p">)]</span>
|
||||
<span class="n">channels</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">channel</span>
|
||||
<span class="k">for</span> <span class="n">channel</span> <span class="ow">in</span> <span class="n">channels</span>
|
||||
<span class="k">if</span> <span class="n">channel</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"listen"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">channel</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"control"</span><span class="p">)</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">handle_errors</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">channels</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No channel found matching '</span><span class="si">{</span><span class="n">channelname</span><span class="si">}</span><span class="s2">' "</span>
|
||||
<span class="s2">"(could also be due to missing access)."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"No channel found matching '</span><span class="si">{</span><span class="n">channelname</span><span class="si">}</span><span class="s2">' "</span>
|
||||
<span class="s2">"(could also be due to missing access)."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">channels</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Multiple possible channel matches/alias for "</span>
|
||||
<span class="s2">"'</span><span class="si">{channelname}</span><span class="s2">':</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">chan</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">chan</span> <span class="ow">in</span> <span class="n">channels</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"Multiple possible channel matches/alias for "</span>
|
||||
<span class="s2">"'</span><span class="si">{channelname}</span><span class="s2">':</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">chan</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">chan</span> <span class="ow">in</span> <span class="n">channels</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">return</span> <span class="n">channels</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -354,6 +378,7 @@
|
|||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"[-]"</span><span class="p">,</span> <span class="mi">1</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="s2">"[-]"</span> <span class="ow">in</span> <span class="n">line</span> <span class="k">else</span> <span class="n">line</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># asynchronously tail the log file</span>
|
||||
<span class="n">tail_log_file</span><span class="p">(</span><span class="n">log_file</span><span class="p">,</span> <span class="n">start_index</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">send_msg</span><span class="p">)</span></div>
|
||||
|
||||
|
|
@ -533,7 +558,8 @@
|
|||
<span class="n">lockstring</span> <span class="o">=</span> <span class="s2">"send:all();listen:all();control:id(</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="n">caller</span><span class="o">.</span><span class="n">id</span>
|
||||
|
||||
<span class="n">new_chan</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_channel</span><span class="p">(</span>
|
||||
<span class="n">name</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="n">aliases</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="n">lockstring</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="n">typeclass</span><span class="p">)</span>
|
||||
<span class="n">name</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="n">aliases</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="n">lockstring</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="n">typeclass</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sub_to_channel</span><span class="p">(</span><span class="n">new_chan</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">new_chan</span><span class="p">,</span> <span class="s2">""</span></div>
|
||||
|
||||
|
|
@ -556,14 +582,14 @@
|
|||
|
||||
<span class="n">channel_key</span> <span class="o">=</span> <span class="n">channel</span><span class="o">.</span><span class="n">key</span>
|
||||
<span class="k">if</span> <span class="n">message</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">message</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"|rChannel </span><span class="si">{</span><span class="n">channel_key</span><span class="si">}</span><span class="s2"> is being destroyed. "</span>
|
||||
<span class="s2">"Make sure to clean any channel aliases.|n"</span><span class="p">)</span>
|
||||
<span class="n">message</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"|rChannel </span><span class="si">{</span><span class="n">channel_key</span><span class="si">}</span><span class="s2"> is being destroyed. "</span>
|
||||
<span class="s2">"Make sure to clean any channel aliases.|n"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">message</span><span class="p">:</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">senders</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">bypass_mute</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
|
||||
<span class="s2">"Channel </span><span class="si">{}</span><span class="s2"> was deleted by </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">channel_key</span><span class="p">,</span> <span class="n">caller</span><span class="p">)</span>
|
||||
<span class="p">)</span></div>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span><span class="s2">"Channel </span><span class="si">{}</span><span class="s2"> was deleted by </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">channel_key</span><span class="p">,</span> <span class="n">caller</span><span class="p">))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdChannel.set_lock"><a class="viewcode-back" href="../../../../api/evennia.commands.default.comms.html#evennia.commands.default.comms.CmdChannel.set_lock">[docs]</a> <span class="k">def</span> <span class="nf">set_lock</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">channel</span><span class="p">,</span> <span class="n">lockstring</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -652,8 +678,10 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">quiet</span><span class="p">:</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">target</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> was booted from channel by </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Channel Boot: </span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2"> (Channel: </span><span class="si">{</span><span class="n">channel</span><span class="si">}</span><span class="s2">, "</span>
|
||||
<span class="sa">f</span><span class="s2">"Reason: </span><span class="si">{</span><span class="n">reason</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">, Caller: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Channel Boot: </span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2"> (Channel: </span><span class="si">{</span><span class="n">channel</span><span class="si">}</span><span class="s2">, "</span>
|
||||
<span class="sa">f</span><span class="s2">"Reason: </span><span class="si">{</span><span class="n">reason</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">, Caller: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">""</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdChannel.ban_user"><a class="viewcode-back" href="../../../../api/evennia.commands.default.comms.html#evennia.commands.default.comms.CmdChannel.ban_user">[docs]</a> <span class="k">def</span> <span class="nf">ban_user</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">channel</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">reason</span><span class="o">=</span><span class="s2">""</span><span class="p">):</span>
|
||||
|
|
@ -726,7 +754,7 @@
|
|||
<span class="n">caller</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
<span class="n">mute_list</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">channel</span><span class="o">.</span><span class="n">mutelist</span><span class="p">)</span>
|
||||
<span class="n">online_list</span> <span class="o">=</span> <span class="n">channel</span><span class="o">.</span><span class="n">subscriptions</span><span class="o">.</span><span class="n">online</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">channel</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s1">'control'</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">channel</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"control"</span><span class="p">):</span>
|
||||
<span class="c1"># for those with channel control, show also offline users</span>
|
||||
<span class="n">all_subs</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">channel</span><span class="o">.</span><span class="n">subscriptions</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -736,8 +764,10 @@
|
|||
<span class="n">who_list</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">subscriber</span> <span class="ow">in</span> <span class="n">all_subs</span><span class="p">:</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">subscriber</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span>
|
||||
<span class="n">conditions</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"muting"</span> <span class="k">if</span> <span class="n">subscriber</span> <span class="ow">in</span> <span class="n">mute_list</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span>
|
||||
<span class="s2">"offline"</span> <span class="k">if</span> <span class="n">subscriber</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">online_list</span> <span class="k">else</span> <span class="s2">""</span><span class="p">)</span>
|
||||
<span class="n">conditions</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"muting"</span> <span class="k">if</span> <span class="n">subscriber</span> <span class="ow">in</span> <span class="n">mute_list</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span>
|
||||
<span class="s2">"offline"</span> <span class="k">if</span> <span class="n">subscriber</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">online_list</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">conditions</span> <span class="o">=</span> <span class="p">[</span><span class="n">cond</span> <span class="k">for</span> <span class="n">cond</span> <span class="ow">in</span> <span class="n">conditions</span> <span class="k">if</span> <span class="n">cond</span><span class="p">]</span>
|
||||
<span class="n">cond_text</span> <span class="o">=</span> <span class="s2">"("</span> <span class="o">+</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">conditions</span><span class="p">)</span> <span class="o">+</span> <span class="s2">")"</span> <span class="k">if</span> <span class="n">conditions</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">who_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">name</span><span class="si">}{</span><span class="n">cond_text</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
|
@ -785,7 +815,7 @@
|
|||
<span class="s2">"locks"</span><span class="p">,</span>
|
||||
<span class="s2">"description"</span><span class="p">,</span>
|
||||
<span class="n">align</span><span class="o">=</span><span class="s2">"l"</span><span class="p">,</span>
|
||||
<span class="n">maxwidth</span><span class="o">=</span><span class="n">_DEFAULT_WIDTH</span>
|
||||
<span class="n">maxwidth</span><span class="o">=</span><span class="n">_DEFAULT_WIDTH</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">chan</span> <span class="ow">in</span> <span class="n">subscribed</span><span class="p">:</span>
|
||||
|
||||
|
|
@ -798,14 +828,14 @@
|
|||
<span class="n">my_aliases</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_channel_aliases</span><span class="p">(</span><span class="n">chan</span><span class="p">))</span>
|
||||
<span class="n">comtable</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span>
|
||||
<span class="o">*</span><span class="p">(</span>
|
||||
<span class="n">chanid</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{key}{aliases}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="n">chan</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
||||
<span class="n">aliases</span><span class="o">=</span><span class="s2">";"</span><span class="o">+</span> <span class="s2">";"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">chan</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> <span class="k">if</span> <span class="n">chan</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="p">),</span>
|
||||
<span class="n">my_aliases</span><span class="p">,</span>
|
||||
<span class="n">locks</span><span class="p">,</span>
|
||||
<span class="n">chan</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span>
|
||||
<span class="n">chanid</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{key}{aliases}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="n">chan</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
||||
<span class="n">aliases</span><span class="o">=</span><span class="s2">";"</span> <span class="o">+</span> <span class="s2">";"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">chan</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> <span class="k">if</span> <span class="n">chan</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span>
|
||||
<span class="p">),</span>
|
||||
<span class="n">my_aliases</span><span class="p">,</span>
|
||||
<span class="n">locks</span><span class="p">,</span>
|
||||
<span class="n">chan</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">comtable</span></div>
|
||||
|
|
@ -841,11 +871,14 @@
|
|||
<span class="n">substatus</span> <span class="o">=</span> <span class="s2">"|gYes|n"</span>
|
||||
<span class="n">my_aliases</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_channel_aliases</span><span class="p">(</span><span class="n">chan</span><span class="p">))</span>
|
||||
<span class="n">comtable</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span>
|
||||
<span class="o">*</span><span class="p">(</span><span class="n">substatus</span><span class="p">,</span>
|
||||
<span class="n">chan</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
||||
<span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">chan</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> <span class="k">if</span> <span class="n">chan</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span>
|
||||
<span class="n">my_aliases</span><span class="p">,</span>
|
||||
<span class="n">chan</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span><span class="p">))</span>
|
||||
<span class="o">*</span><span class="p">(</span>
|
||||
<span class="n">substatus</span><span class="p">,</span>
|
||||
<span class="n">chan</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
||||
<span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">chan</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> <span class="k">if</span> <span class="n">chan</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span>
|
||||
<span class="n">my_aliases</span><span class="p">,</span>
|
||||
<span class="n">chan</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">comtable</span><span class="o">.</span><span class="n">reformat_column</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">8</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">comtable</span></div>
|
||||
|
|
@ -860,16 +893,17 @@
|
|||
<span class="n">switches</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span>
|
||||
<span class="n">channel_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">name</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhslist</span> <span class="k">if</span> <span class="n">name</span><span class="p">]</span>
|
||||
|
||||
<span class="c1">#from evennia import set_trace;set_trace()</span>
|
||||
<span class="c1"># from evennia import set_trace;set_trace()</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'all'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"all"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># show all available channels</span>
|
||||
<span class="n">subscribed</span><span class="p">,</span> <span class="n">available</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_channels</span><span class="p">()</span>
|
||||
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">display_all_channels</span><span class="p">(</span><span class="n">subscribed</span><span class="p">,</span> <span class="n">available</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">|wAvailable channels|n (use no argument to "</span>
|
||||
<span class="sa">f</span><span class="s2">"only show your subscriptions)</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"only show your subscriptions)</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">channel_names</span><span class="p">:</span>
|
||||
|
|
@ -877,15 +911,16 @@
|
|||
<span class="n">subscribed</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_channels</span><span class="p">()</span>
|
||||
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">display_subbed_channels</span><span class="p">(</span><span class="n">subscribed</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">|wChannel subscriptions|n "</span>
|
||||
<span class="sa">f</span><span class="s2">"(use |w/all|n to see all available):</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">|wChannel subscriptions|n "</span> <span class="sa">f</span><span class="s2">"(use |w/all|n to see all available):</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage[/switches]: channel [= message]"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'create'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"create"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># create a new channel</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"manage"</span><span class="p">):</span>
|
||||
|
|
@ -907,7 +942,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'unalias'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"unalias"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># remove a personal alias (no channel needed)</span>
|
||||
<span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span><span class="p">:</span>
|
||||
|
|
@ -926,12 +961,11 @@
|
|||
<span class="c1"># channels without a space in their name), we need to check if the</span>
|
||||
<span class="c1"># first 'channel name' is in fact 'channelname text'</span>
|
||||
<span class="n">no_rhs_channel_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="mi">1</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">possible_lhs_message</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">no_rhs_channel_name</span><span class="p">):]</span>
|
||||
<span class="k">if</span> <span class="n">possible_lhs_message</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'='</span><span class="p">:</span>
|
||||
<span class="n">possible_lhs_message</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">no_rhs_channel_name</span><span class="p">)</span> <span class="p">:]</span>
|
||||
<span class="k">if</span> <span class="n">possible_lhs_message</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"="</span><span class="p">:</span>
|
||||
<span class="n">possible_lhs_message</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">channel_names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">no_rhs_channel_name</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="n">channels</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">channel_name</span> <span class="ow">in</span> <span class="n">channel_names</span><span class="p">:</span>
|
||||
|
|
@ -939,16 +973,20 @@
|
|||
<span class="c1"># 'listen/control' perms.</span>
|
||||
<span class="n">found_channels</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">search_channel</span><span class="p">(</span><span class="n">channel_name</span><span class="p">,</span> <span class="n">exact</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">handle_errors</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">found_channels</span><span class="p">:</span>
|
||||
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No channel found matching '</span><span class="si">{</span><span class="n">channel_name</span><span class="si">}</span><span class="s2">' "</span>
|
||||
<span class="s2">"(could also be due to missing access)."</span><span class="p">)</span>
|
||||
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"No channel found matching '</span><span class="si">{</span><span class="n">channel_name</span><span class="si">}</span><span class="s2">' "</span>
|
||||
<span class="s2">"(could also be due to missing access)."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">found_channels</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"Multiple possible channel matches/alias for "</span>
|
||||
<span class="s2">"'</span><span class="si">{channel_name}</span><span class="s2">':</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">chan</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">chan</span> <span class="ow">in</span> <span class="n">found_channels</span><span class="p">))</span>
|
||||
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="s2">"Multiple possible channel matches/alias for "</span>
|
||||
<span class="s2">"'</span><span class="si">{channel_name}</span><span class="s2">':</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">chan</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">chan</span> <span class="ow">in</span> <span class="n">found_channels</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">channels</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">found_channels</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">channels</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">errors</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">errors</span><span class="p">))</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># we have at least one channel at this point</span>
|
||||
|
|
@ -967,30 +1005,35 @@
|
|||
<span class="k">if</span> <span class="n">channel</span> <span class="ow">in</span> <span class="n">subscribed</span><span class="p">:</span>
|
||||
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">display_subbed_channels</span><span class="p">([</span><span class="n">channel</span><span class="p">])</span>
|
||||
<span class="n">header</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Channel |w</span><span class="si">{</span><span class="n">channel</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">header</span><span class="si">}</span><span class="se">\n</span><span class="s2">(use |w</span><span class="si">{</span><span class="n">channel</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> <msg>|n (or a channel-alias) "</span>
|
||||
<span class="sa">f</span><span class="s2">"to chat and the 'channel' command "</span>
|
||||
<span class="sa">f</span><span class="s2">"to customize)</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">header</span><span class="si">}</span><span class="se">\n</span><span class="s2">(use |w</span><span class="si">{</span><span class="n">channel</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> <msg>|n (or a channel-alias) "</span>
|
||||
<span class="sa">f</span><span class="s2">"to chat and the 'channel' command "</span>
|
||||
<span class="sa">f</span><span class="s2">"to customize)</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">channel</span> <span class="ow">in</span> <span class="n">available</span><span class="p">:</span>
|
||||
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">display_all_channels</span><span class="p">([],</span> <span class="p">[</span><span class="n">channel</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">|wNot subscribed to this channel|n (use /list to "</span>
|
||||
<span class="sa">f</span><span class="s2">"show all subscriptions)</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"show all subscriptions)</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'history'</span> <span class="ow">in</span> <span class="n">switches</span> <span class="ow">or</span> <span class="s1">'hist'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"history"</span> <span class="ow">in</span> <span class="n">switches</span> <span class="ow">or</span> <span class="s2">"hist"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># view channel history</span>
|
||||
|
||||
<span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span> <span class="ow">or</span> <span class="mi">0</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">index</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"The history index (describing how many lines to go back) "</span>
|
||||
<span class="s2">"must be an integer >= 0."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"The history index (describing how many lines to go back) "</span>
|
||||
<span class="s2">"must be an integer >= 0."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_channel_history</span><span class="p">(</span><span class="n">channel</span><span class="p">,</span> <span class="n">start_index</span><span class="o">=</span><span class="n">index</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'sub'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"sub"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># subscribe to a channel</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">:</span>
|
||||
|
|
@ -999,26 +1042,29 @@
|
|||
<span class="k">if</span> <span class="n">success</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="n">aliases</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_alias</span><span class="p">(</span><span class="n">channel</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span>
|
||||
<span class="n">alias_txt</span> <span class="o">=</span> <span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span>
|
||||
<span class="n">alias_txt</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" using alias(es) </span><span class="si">{</span><span class="n">alias_txt</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">aliases</span> <span class="k">else</span> <span class="s1">''</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You are now subscribed "</span>
|
||||
<span class="sa">f</span><span class="s2">"to the channel </span><span class="si">{</span><span class="n">channel</span><span class="o">.</span><span class="n">key</span><span class="si">}{</span><span class="n">alias_txt</span><span class="si">}</span><span class="s2">. Use /alias to "</span>
|
||||
<span class="s2">"add additional aliases for referring to the channel."</span><span class="p">)</span>
|
||||
<span class="n">alias_txt</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span>
|
||||
<span class="n">alias_txt</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" using alias(es) </span><span class="si">{</span><span class="n">alias_txt</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">aliases</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"You are now subscribed "</span>
|
||||
<span class="sa">f</span><span class="s2">"to the channel </span><span class="si">{</span><span class="n">channel</span><span class="o">.</span><span class="n">key</span><span class="si">}{</span><span class="n">alias_txt</span><span class="si">}</span><span class="s2">. Use /alias to "</span>
|
||||
<span class="s2">"add additional aliases for referring to the channel."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'unsub'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"unsub"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># un-subscribe from a channel</span>
|
||||
<span class="n">success</span><span class="p">,</span> <span class="n">err</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsub_from_channel</span><span class="p">(</span><span class="n">channel</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">success</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"You un-subscribed from channel </span><span class="si">{</span><span class="n">channel</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">. "</span>
|
||||
<span class="s2">"All aliases were cleared."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"You un-subscribed from channel </span><span class="si">{</span><span class="n">channel</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">. "</span> <span class="s2">"All aliases were cleared."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'alias'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"alias"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># create a new personal alias for a channel</span>
|
||||
<span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span><span class="p">:</span>
|
||||
|
|
@ -1028,7 +1074,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Added/updated your alias '</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">' for channel </span><span class="si">{</span><span class="n">channel</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'mute'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"mute"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># mute a given channel</span>
|
||||
<span class="n">success</span><span class="p">,</span> <span class="n">err</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mute_channel</span><span class="p">(</span><span class="n">channel</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">success</span><span class="p">:</span>
|
||||
|
|
@ -1037,7 +1083,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'unmute'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"unmute"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># unmute a given channel</span>
|
||||
<span class="n">success</span><span class="p">,</span> <span class="n">err</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">unmute_channel</span><span class="p">(</span><span class="n">channel</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">success</span><span class="p">:</span>
|
||||
|
|
@ -1046,7 +1092,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'destroy'</span> <span class="ow">in</span> <span class="n">switches</span> <span class="ow">or</span> <span class="s1">'delete'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"destroy"</span> <span class="ow">in</span> <span class="n">switches</span> <span class="ow">or</span> <span class="s2">"delete"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># destroy a channel we control</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"manage"</span><span class="p">):</span>
|
||||
|
|
@ -1070,10 +1116,10 @@
|
|||
<span class="s2">"remove all users' aliases. </span><span class="si">{options}</span><span class="s2">?"</span><span class="p">,</span>
|
||||
<span class="n">yes_action</span><span class="o">=</span><span class="n">_perform_delete</span><span class="p">,</span>
|
||||
<span class="n">no_action</span><span class="o">=</span><span class="s2">"Aborted."</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="s2">"N"</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="s2">"N"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'desc'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"desc"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># set channel description</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"manage"</span><span class="p">):</span>
|
||||
|
|
@ -1093,7 +1139,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">set_desc</span><span class="p">(</span><span class="n">channel</span><span class="p">,</span> <span class="n">desc</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Updated channel description."</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'lock'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"lock"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># add a lockstring to channel</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"changelocks"</span><span class="p">):</span>
|
||||
|
|
@ -1117,7 +1163,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Could not add/update lock: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'unlock'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"unlock"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># remove/update lockstring from channel</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"changelocks"</span><span class="p">):</span>
|
||||
|
|
@ -1141,7 +1187,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Could not remove lock: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'boot'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"boot"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># boot a user from channel(s)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"admin"</span><span class="p">):</span>
|
||||
|
|
@ -1176,8 +1222,9 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot boot </span><span class="si">{</span><span class="n">target</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> from channel </span><span class="si">{</span><span class="n">chan</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">channames</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">chan</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">chan</span> <span class="ow">in</span> <span class="n">channels</span><span class="p">)</span>
|
||||
<span class="n">reasonwarn</span> <span class="o">=</span> <span class="p">(</span><span class="s2">". Also note that your reason will be echoed to the channel"</span>
|
||||
<span class="k">if</span> <span class="n">reason</span> <span class="k">else</span> <span class="s1">''</span><span class="p">)</span>
|
||||
<span class="n">reasonwarn</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">". Also note that your reason will be echoed to the channel"</span> <span class="k">if</span> <span class="n">reason</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">ask_yes_no</span><span class="p">(</span>
|
||||
<span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">prompt</span><span class="o">=</span><span class="sa">f</span><span class="s2">"Are you sure you want to boot user </span><span class="si">{</span><span class="n">target</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> from "</span>
|
||||
|
|
@ -1185,11 +1232,11 @@
|
|||
<span class="s2">"</span><span class="si">{options}</span><span class="s2">?"</span><span class="p">,</span>
|
||||
<span class="n">yes_action</span><span class="o">=</span><span class="n">_boot_user</span><span class="p">,</span>
|
||||
<span class="n">no_action</span><span class="o">=</span><span class="s2">"Aborted."</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="s2">"Y"</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="s2">"Y"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'ban'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"ban"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># ban a user from channel(s)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"admin"</span><span class="p">):</span>
|
||||
|
|
@ -1203,8 +1250,10 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"You need 'control'-access to view bans on channel </span><span class="si">{</span><span class="n">channel</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">bans</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"Channel bans "</span>
|
||||
<span class="s2">"(to ban, use channel/ban channel[,channel,...] = username [:reason]"</span><span class="p">]</span>
|
||||
<span class="n">bans</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="s2">"Channel bans "</span>
|
||||
<span class="s2">"(to ban, use channel/ban channel[,channel,...] = username [:reason]"</span>
|
||||
<span class="p">]</span>
|
||||
<span class="n">bans</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel_list_bans</span><span class="p">(</span><span class="n">channel</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">bans</span><span class="p">))</span>
|
||||
<span class="k">return</span>
|
||||
|
|
@ -1233,8 +1282,9 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot boot </span><span class="si">{</span><span class="n">target</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> from channel </span><span class="si">{</span><span class="n">chan</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">channames</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">chan</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">chan</span> <span class="ow">in</span> <span class="n">channels</span><span class="p">)</span>
|
||||
<span class="n">reasonwarn</span> <span class="o">=</span> <span class="p">(</span><span class="s2">". Also note that your reason will be echoed to the channel"</span>
|
||||
<span class="k">if</span> <span class="n">reason</span> <span class="k">else</span> <span class="s1">''</span><span class="p">)</span>
|
||||
<span class="n">reasonwarn</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">". Also note that your reason will be echoed to the channel"</span> <span class="k">if</span> <span class="n">reason</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">ask_yes_no</span><span class="p">(</span>
|
||||
<span class="n">caller</span><span class="p">,</span>
|
||||
<span class="sa">f</span><span class="s2">"Are you sure you want to ban user </span><span class="si">{</span><span class="n">target</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> from "</span>
|
||||
|
|
@ -1245,7 +1295,7 @@
|
|||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'unban'</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"unban"</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># unban a previously banned user from channel</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"admin"</span><span class="p">):</span>
|
||||
|
|
@ -1456,7 +1506,6 @@
|
|||
<span class="n">receiver</span><span class="o">=</span><span class="n">receiver</span><span class="p">,</span>
|
||||
<span class="n">message</span><span class="o">=</span><span class="n">page</span><span class="o">.</span><span class="n">message</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="p">)</span>
|
||||
<span class="n">lastpages</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">listing</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -1507,6 +1556,7 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">"No irc bots found."</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdIRC2Chan"><a class="viewcode-back" href="../../../../api/evennia.commands.default.comms.html#evennia.commands.default.comms.CmdIRC2Chan">[docs]</a><span class="k">class</span> <span class="nc">CmdIRC2Chan</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Link an evennia channel to an external IRC channel</span>
|
||||
|
|
|
|||
|
|
@ -424,10 +424,13 @@
|
|||
<span class="n">string</span> <span class="o">=</span> <span class="s2">"You are not carrying anything."</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="kn">import</span> <span class="n">raw</span> <span class="k">as</span> <span class="n">raw_ansi</span>
|
||||
|
||||
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">styled_table</span><span class="p">(</span><span class="n">border</span><span class="o">=</span><span class="s2">"header"</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">items</span><span class="p">:</span>
|
||||
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|C</span><span class="si">{</span><span class="n">item</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">|n"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">crop</span><span class="p">(</span><span class="n">raw_ansi</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">),</span> <span class="n">width</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">))</span>
|
||||
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"|C</span><span class="si">{</span><span class="n">item</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">|n"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">crop</span><span class="p">(</span><span class="n">raw_ansi</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">),</span> <span class="n">width</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|wYou are carrying:</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -61,11 +61,7 @@
|
|||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="kn">import</span> <span class="n">ANSIString</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.help.filehelp</span> <span class="kn">import</span> <span class="n">FILE_HELP_ENTRIES</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.eveditor</span> <span class="kn">import</span> <span class="n">EvEditor</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">class_from_module</span><span class="p">,</span>
|
||||
<span class="n">inherits_from</span><span class="p">,</span>
|
||||
<span class="n">format_grid</span><span class="p">,</span> <span class="n">pad</span>
|
||||
<span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">class_from_module</span><span class="p">,</span> <span class="n">inherits_from</span><span class="p">,</span> <span class="n">format_grid</span><span class="p">,</span> <span class="n">pad</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.help.utils</span> <span class="kn">import</span> <span class="n">help_search_with_index</span><span class="p">,</span> <span class="n">parse_entry_for_subcategories</span>
|
||||
|
||||
<span class="n">CMD_IGNORE_PREFIXES</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">CMD_IGNORE_PREFIXES</span>
|
||||
|
|
@ -77,12 +73,14 @@
|
|||
<span class="c1"># limit symbol import for API</span>
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"CmdHelp"</span><span class="p">,</span> <span class="s2">"CmdSetHelp"</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="nd">@dataclass</span>
|
||||
<span class="k">class</span> <span class="nc">HelpCategory</span><span class="p">:</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Mock 'help entry' to search categories with the same code.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span><span class="p">:</span> <span class="nb">str</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
|
|
@ -155,7 +153,10 @@
|
|||
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">help_more</span><span class="p">:</span>
|
||||
<span class="n">usemore</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">protocol_key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"websocket"</span><span class="p">,</span> <span class="s2">"ajax/comet"</span><span class="p">,):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">protocol_key</span> <span class="ow">in</span> <span class="p">(</span>
|
||||
<span class="s2">"websocket"</span><span class="p">,</span>
|
||||
<span class="s2">"ajax/comet"</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_saved_webclient_options</span>
|
||||
<span class="k">if</span> <span class="n">options</span> <span class="ow">and</span> <span class="n">options</span><span class="p">[</span><span class="s2">"helppopup"</span><span class="p">]:</span>
|
||||
|
|
@ -169,8 +170,15 @@
|
|||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"help"</span><span class="p">}))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdHelp.format_help_entry"><a class="viewcode-back" href="../../../../api/evennia.commands.default.help.html#evennia.commands.default.help.CmdHelp.format_help_entry">[docs]</a> <span class="k">def</span> <span class="nf">format_help_entry</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">topic</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">help_text</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">suggested</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">subtopics</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">click_topics</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="CmdHelp.format_help_entry"><a class="viewcode-back" href="../../../../api/evennia.commands.default.help.html#evennia.commands.default.help.CmdHelp.format_help_entry">[docs]</a> <span class="k">def</span> <span class="nf">format_help_entry</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">topic</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span>
|
||||
<span class="n">help_text</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span>
|
||||
<span class="n">aliases</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">suggested</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">subtopics</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">click_topics</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""This visually formats the help entry.</span>
|
||||
<span class="sd"> This method can be overriden to customize the way a help</span>
|
||||
<span class="sd"> entry is displayed.</span>
|
||||
|
|
@ -194,28 +202,24 @@
|
|||
<span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|CHelp for |w</span><span class="si">{</span><span class="n">topic</span><span class="si">}</span><span class="s2">|n"</span> <span class="k">if</span> <span class="n">topic</span> <span class="k">else</span> <span class="s2">"|rNo help found|n"</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">aliases</span><span class="p">:</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">" |C(aliases: </span><span class="si">{}</span><span class="s2">|C)|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">"|C,|n "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|w</span><span class="si">{</span><span class="n">ali</span><span class="si">}</span><span class="s2">|n"</span> <span class="k">for</span> <span class="n">ali</span> <span class="ow">in</span> <span class="n">aliases</span><span class="p">))</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="s2">" |C(aliases: </span><span class="si">{}</span><span class="s2">|C)|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">"|C,|n "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|w</span><span class="si">{</span><span class="n">ali</span><span class="si">}</span><span class="s2">|n"</span> <span class="k">for</span> <span class="n">ali</span> <span class="ow">in</span> <span class="n">aliases</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="s1">''</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
|
||||
<span class="n">help_text</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="n">dedent</span><span class="p">(</span><span class="n">help_text</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">))</span> <span class="k">if</span> <span class="n">help_text</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">help_text</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="n">dedent</span><span class="p">(</span><span class="n">help_text</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">))</span> <span class="k">if</span> <span class="n">help_text</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">subtopics</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">click_topics</span><span class="p">:</span>
|
||||
<span class="n">subtopics</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="sa">f</span><span class="s2">"|lchelp </span><span class="si">{</span><span class="n">topic</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">subtop</span><span class="si">}</span><span class="s2">|lt|w</span><span class="si">{</span><span class="n">topic</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">subtop</span><span class="si">}</span><span class="s2">|n|le"</span>
|
||||
<span class="k">for</span> <span class="n">subtop</span> <span class="ow">in</span> <span class="n">subtopics</span>
|
||||
<span class="p">]</span>
|
||||
<span class="sa">f</span><span class="s2">"|lchelp </span><span class="si">{</span><span class="n">topic</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">subtop</span><span class="si">}</span><span class="s2">|lt|w</span><span class="si">{</span><span class="n">topic</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">subtop</span><span class="si">}</span><span class="s2">|n|le"</span> <span class="k">for</span> <span class="n">subtop</span> <span class="ow">in</span> <span class="n">subtopics</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">subtopics</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"|w</span><span class="si">{</span><span class="n">topic</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">subtop</span><span class="si">}</span><span class="s2">|n"</span> <span class="k">for</span> <span class="n">subtop</span> <span class="ow">in</span> <span class="n">subtopics</span><span class="p">]</span>
|
||||
<span class="n">subtopics</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">|CSubtopics:|n</span><span class="se">\n</span><span class="s2"> </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">format_grid</span><span class="p">(</span><span class="n">subtopics</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">client_width</span><span class="p">())))</span>
|
||||
<span class="n">subtopics</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|CSubtopics:|n</span><span class="se">\n</span><span class="s2"> </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">format_grid</span><span class="p">(</span><span class="n">subtopics</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">client_width</span><span class="p">()))</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">subtopics</span> <span class="o">=</span> <span class="s1">''</span>
|
||||
<span class="n">subtopics</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">suggested</span><span class="p">:</span>
|
||||
<span class="n">suggested</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">suggested</span><span class="p">)</span>
|
||||
|
|
@ -223,12 +227,11 @@
|
|||
<span class="n">suggested</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"|lchelp </span><span class="si">{</span><span class="n">sug</span><span class="si">}</span><span class="s2">|lt|w</span><span class="si">{</span><span class="n">sug</span><span class="si">}</span><span class="s2">|n|le"</span> <span class="k">for</span> <span class="n">sug</span> <span class="ow">in</span> <span class="n">suggested</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">suggested</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"|w</span><span class="si">{</span><span class="n">sug</span><span class="si">}</span><span class="s2">|n"</span> <span class="k">for</span> <span class="n">sug</span> <span class="ow">in</span> <span class="n">suggested</span><span class="p">]</span>
|
||||
<span class="n">suggested</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">|COther topic suggestions:|n</span><span class="se">\n</span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">format_grid</span><span class="p">(</span><span class="n">suggested</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">client_width</span><span class="p">())))</span>
|
||||
<span class="n">suggested</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">|COther topic suggestions:|n</span><span class="se">\n</span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">format_grid</span><span class="p">(</span><span class="n">suggested</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">client_width</span><span class="p">()))</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">suggested</span> <span class="o">=</span> <span class="s1">''</span>
|
||||
<span class="n">suggested</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
|
||||
<span class="n">end</span> <span class="o">=</span> <span class="n">start</span>
|
||||
|
||||
|
|
@ -236,8 +239,9 @@
|
|||
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">rstrip</span><span class="p">()</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">partorder</span> <span class="k">if</span> <span class="n">part</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdHelp.format_help_index"><a class="viewcode-back" href="../../../../api/evennia.commands.default.help.html#evennia.commands.default.help.CmdHelp.format_help_index">[docs]</a> <span class="k">def</span> <span class="nf">format_help_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd_help_dict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">db_help_dict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">title_lone_category</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">click_topics</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="CmdHelp.format_help_index"><a class="viewcode-back" href="../../../../api/evennia.commands.default.help.html#evennia.commands.default.help.CmdHelp.format_help_index">[docs]</a> <span class="k">def</span> <span class="nf">format_help_index</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span> <span class="n">cmd_help_dict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">db_help_dict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">title_lone_category</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">click_topics</span><span class="o">=</span><span class="kc">True</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""Output a category-ordered g for displaying the main help, grouped by</span>
|
||||
<span class="sd"> category.</span>
|
||||
|
||||
|
|
@ -261,6 +265,7 @@
|
|||
<span class="sd"> commands and topics.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_group_by_category</span><span class="p">(</span><span class="n">help_dict</span><span class="p">):</span>
|
||||
<span class="n">grid</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">verbatim_elements</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
|
@ -273,9 +278,7 @@
|
|||
|
||||
<span class="c1"># make the help topics clickable</span>
|
||||
<span class="k">if</span> <span class="n">click_topics</span><span class="p">:</span>
|
||||
<span class="n">entries</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="sa">f</span><span class="s1">'|lchelp </span><span class="si">{</span><span class="n">entry</span><span class="si">}</span><span class="s1">|lt</span><span class="si">{</span><span class="n">entry</span><span class="si">}</span><span class="s1">|le'</span> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">entries</span>
|
||||
<span class="p">]</span>
|
||||
<span class="n">entries</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"|lchelp </span><span class="si">{</span><span class="n">entry</span><span class="si">}</span><span class="s2">|lt</span><span class="si">{</span><span class="n">entry</span><span class="si">}</span><span class="s2">|le"</span> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">entries</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># add the entries to the grid</span>
|
||||
<span class="n">grid</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">entries</span><span class="p">)</span>
|
||||
|
|
@ -285,7 +288,8 @@
|
|||
<span class="n">category_str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"-- </span><span class="si">{</span><span class="n">category</span><span class="o">.</span><span class="n">title</span><span class="p">()</span><span class="si">}</span><span class="s2"> "</span>
|
||||
<span class="n">grid</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">ANSIString</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">index_category_clr</span> <span class="o">+</span> <span class="n">category_str</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">index_category_clr</span>
|
||||
<span class="o">+</span> <span class="n">category_str</span>
|
||||
<span class="o">+</span> <span class="s2">"-"</span> <span class="o">*</span> <span class="p">(</span><span class="n">width</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">category_str</span><span class="p">))</span>
|
||||
<span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">index_topic_clr</span>
|
||||
<span class="p">)</span>
|
||||
|
|
@ -297,9 +301,7 @@
|
|||
|
||||
<span class="c1"># make the help topics clickable</span>
|
||||
<span class="k">if</span> <span class="n">click_topics</span><span class="p">:</span>
|
||||
<span class="n">entries</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="sa">f</span><span class="s1">'|lchelp </span><span class="si">{</span><span class="n">entry</span><span class="si">}</span><span class="s1">|lt</span><span class="si">{</span><span class="n">entry</span><span class="si">}</span><span class="s1">|le'</span> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">entries</span>
|
||||
<span class="p">]</span>
|
||||
<span class="n">entries</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"|lchelp </span><span class="si">{</span><span class="n">entry</span><span class="si">}</span><span class="s2">|lt</span><span class="si">{</span><span class="n">entry</span><span class="si">}</span><span class="s2">|le"</span> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">entries</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># add the entries to the grid</span>
|
||||
<span class="n">grid</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">entries</span><span class="p">)</span>
|
||||
|
|
@ -314,18 +316,22 @@
|
|||
|
||||
<span class="k">if</span> <span class="nb">any</span><span class="p">(</span><span class="n">cmd_help_dict</span><span class="o">.</span><span class="n">values</span><span class="p">()):</span>
|
||||
<span class="c1"># get the command-help entries by-category</span>
|
||||
<span class="n">sep1</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">index_type_separator_clr</span>
|
||||
<span class="o">+</span> <span class="n">pad</span><span class="p">(</span><span class="s2">"Commands"</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="n">width</span><span class="p">,</span> <span class="n">fillchar</span><span class="o">=</span><span class="s1">'-'</span><span class="p">)</span>
|
||||
<span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">index_topic_clr</span><span class="p">)</span>
|
||||
<span class="n">sep1</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">index_type_separator_clr</span>
|
||||
<span class="o">+</span> <span class="n">pad</span><span class="p">(</span><span class="s2">"Commands"</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="n">width</span><span class="p">,</span> <span class="n">fillchar</span><span class="o">=</span><span class="s2">"-"</span><span class="p">)</span>
|
||||
<span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">index_topic_clr</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">grid</span><span class="p">,</span> <span class="n">verbatim_elements</span> <span class="o">=</span> <span class="n">_group_by_category</span><span class="p">(</span><span class="n">cmd_help_dict</span><span class="p">)</span>
|
||||
<span class="n">gridrows</span> <span class="o">=</span> <span class="n">format_grid</span><span class="p">(</span><span class="n">grid</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> <span class="n">verbatim_elements</span><span class="o">=</span><span class="n">verbatim_elements</span><span class="p">)</span>
|
||||
<span class="n">cmd_grid</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">gridrows</span><span class="p">)</span> <span class="k">if</span> <span class="n">gridrows</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">any</span><span class="p">(</span><span class="n">db_help_dict</span><span class="o">.</span><span class="n">values</span><span class="p">()):</span>
|
||||
<span class="c1"># get db-based help entries by-category</span>
|
||||
<span class="n">sep2</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">index_type_separator_clr</span>
|
||||
<span class="o">+</span> <span class="n">pad</span><span class="p">(</span><span class="s2">"Game & World"</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="n">width</span><span class="p">,</span> <span class="n">fillchar</span><span class="o">=</span><span class="s1">'-'</span><span class="p">)</span>
|
||||
<span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">index_topic_clr</span><span class="p">)</span>
|
||||
<span class="n">sep2</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">index_type_separator_clr</span>
|
||||
<span class="o">+</span> <span class="n">pad</span><span class="p">(</span><span class="s2">"Game & World"</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="n">width</span><span class="p">,</span> <span class="n">fillchar</span><span class="o">=</span><span class="s2">"-"</span><span class="p">)</span>
|
||||
<span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">index_topic_clr</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">grid</span><span class="p">,</span> <span class="n">verbatim_elements</span> <span class="o">=</span> <span class="n">_group_by_category</span><span class="p">(</span><span class="n">db_help_dict</span><span class="p">)</span>
|
||||
<span class="n">gridrows</span> <span class="o">=</span> <span class="n">format_grid</span><span class="p">(</span><span class="n">grid</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> <span class="n">verbatim_elements</span><span class="o">=</span><span class="n">verbatim_elements</span><span class="p">)</span>
|
||||
<span class="n">db_grid</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">gridrows</span><span class="p">)</span> <span class="k">if</span> <span class="n">gridrows</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
|
|
@ -358,9 +364,9 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">inherits_from</span><span class="p">(</span><span class="n">cmd_or_topic</span><span class="p">,</span> <span class="s2">"evennia.commands.command.Command"</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">cmd_or_topic</span><span class="o">.</span><span class="n">auto_help</span> <span class="ow">and</span> <span class="n">cmd_or_topic</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s1">'read'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">cmd_or_topic</span><span class="o">.</span><span class="n">auto_help</span> <span class="ow">and</span> <span class="n">cmd_or_topic</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"read"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">cmd_or_topic</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s1">'read'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
<span class="k">return</span> <span class="n">cmd_or_topic</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"read"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdHelp.can_list_topic"><a class="viewcode-back" href="../../../../api/evennia.commands.default.help.html#evennia.commands.default.help.CmdHelp.can_list_topic">[docs]</a> <span class="k">def</span> <span class="nf">can_list_topic</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd_or_topic</span><span class="p">,</span> <span class="n">caller</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -397,12 +403,12 @@
|
|||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">has_view</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">cmd_or_topic</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s1">'view'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">cmd_or_topic</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"view"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># no explicit 'view' lock - use the 'read' lock</span>
|
||||
<span class="k">return</span> <span class="n">cmd_or_topic</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s1">'read'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
<span class="k">return</span> <span class="n">cmd_or_topic</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"read"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdHelp.collect_topics"><a class="viewcode-back" href="../../../../api/evennia.commands.default.help.html#evennia.commands.default.help.CmdHelp.collect_topics">[docs]</a> <span class="k">def</span> <span class="nf">collect_topics</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">'list'</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="CmdHelp.collect_topics"><a class="viewcode-back" href="../../../../api/evennia.commands.default.help.html#evennia.commands.default.help.CmdHelp.collect_topics">[docs]</a> <span class="k">def</span> <span class="nf">collect_topics</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s2">"list"</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Collect help topics from all sources (cmd/db/file).</span>
|
||||
|
||||
|
|
@ -425,43 +431,45 @@
|
|||
<span class="n">cmdset</span><span class="o">.</span><span class="n">make_unique</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span>
|
||||
<span class="c1"># retrieve all available commands and database / file-help topics.</span>
|
||||
<span class="c1"># also check the 'cmd:' lock here</span>
|
||||
<span class="n">cmd_help_topics</span> <span class="o">=</span> <span class="p">[</span><span class="n">cmd</span> <span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">cmdset</span> <span class="k">if</span> <span class="n">cmd</span> <span class="ow">and</span> <span class="n">cmd</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s1">'cmd'</span><span class="p">)]</span>
|
||||
<span class="n">cmd_help_topics</span> <span class="o">=</span> <span class="p">[</span><span class="n">cmd</span> <span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">cmdset</span> <span class="k">if</span> <span class="n">cmd</span> <span class="ow">and</span> <span class="n">cmd</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"cmd"</span><span class="p">)]</span>
|
||||
<span class="c1"># get all file-based help entries, checking perms</span>
|
||||
<span class="n">file_help_topics</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">topic</span><span class="o">.</span><span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">topic</span>
|
||||
<span class="k">for</span> <span class="n">topic</span> <span class="ow">in</span> <span class="n">FILE_HELP_ENTRIES</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">file_help_topics</span> <span class="o">=</span> <span class="p">{</span><span class="n">topic</span><span class="o">.</span><span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">topic</span> <span class="k">for</span> <span class="n">topic</span> <span class="ow">in</span> <span class="n">FILE_HELP_ENTRIES</span><span class="o">.</span><span class="n">all</span><span class="p">()}</span>
|
||||
<span class="c1"># get db-based help entries, checking perms</span>
|
||||
<span class="n">db_help_topics</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">topic</span><span class="o">.</span><span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">topic</span>
|
||||
<span class="k">for</span> <span class="n">topic</span> <span class="ow">in</span> <span class="n">HelpEntry</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
||||
<span class="p">}</span>
|
||||
<span class="k">if</span> <span class="n">mode</span> <span class="o">==</span> <span class="s1">'list'</span><span class="p">:</span>
|
||||
<span class="n">db_help_topics</span> <span class="o">=</span> <span class="p">{</span><span class="n">topic</span><span class="o">.</span><span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">topic</span> <span class="k">for</span> <span class="n">topic</span> <span class="ow">in</span> <span class="n">HelpEntry</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()}</span>
|
||||
<span class="k">if</span> <span class="n">mode</span> <span class="o">==</span> <span class="s2">"list"</span><span class="p">:</span>
|
||||
<span class="c1"># check the view lock for all help entries/commands and determine key</span>
|
||||
<span class="n">cmd_help_topics</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">cmd</span><span class="o">.</span><span class="n">auto_help_display_key</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="s2">"auto_help_display_key"</span><span class="p">)</span> <span class="k">else</span> <span class="n">cmd</span><span class="o">.</span><span class="n">key</span><span class="p">:</span> <span class="n">cmd</span>
|
||||
<span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">cmd_help_topics</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">can_list_topic</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">caller</span><span class="p">)}</span>
|
||||
<span class="n">cmd</span><span class="o">.</span><span class="n">auto_help_display_key</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="s2">"auto_help_display_key"</span><span class="p">)</span> <span class="k">else</span> <span class="n">cmd</span><span class="o">.</span><span class="n">key</span><span class="p">:</span> <span class="n">cmd</span>
|
||||
<span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">cmd_help_topics</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">can_list_topic</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">caller</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">db_help_topics</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">key</span><span class="p">:</span> <span class="n">entry</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">db_help_topics</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="n">key</span><span class="p">:</span> <span class="n">entry</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">db_help_topics</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">can_list_topic</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span> <span class="n">caller</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">file_help_topics</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">key</span><span class="p">:</span> <span class="n">entry</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">file_help_topics</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">can_list_topic</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span> <span class="n">caller</span><span class="p">)}</span>
|
||||
<span class="n">key</span><span class="p">:</span> <span class="n">entry</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">file_help_topics</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">can_list_topic</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span> <span class="n">caller</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># query - check the read lock on entries</span>
|
||||
<span class="n">cmd_help_topics</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">cmd</span><span class="o">.</span><span class="n">auto_help_display_key</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="s2">"auto_help_display_key"</span><span class="p">)</span> <span class="k">else</span> <span class="n">cmd</span><span class="o">.</span><span class="n">key</span><span class="p">:</span> <span class="n">cmd</span>
|
||||
<span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">cmd_help_topics</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">can_read_topic</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">caller</span><span class="p">)}</span>
|
||||
<span class="n">cmd</span><span class="o">.</span><span class="n">auto_help_display_key</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="s2">"auto_help_display_key"</span><span class="p">)</span> <span class="k">else</span> <span class="n">cmd</span><span class="o">.</span><span class="n">key</span><span class="p">:</span> <span class="n">cmd</span>
|
||||
<span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">cmd_help_topics</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">can_read_topic</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">caller</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">db_help_topics</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">key</span><span class="p">:</span> <span class="n">entry</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">db_help_topics</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="n">key</span><span class="p">:</span> <span class="n">entry</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">db_help_topics</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">can_read_topic</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span> <span class="n">caller</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">file_help_topics</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">key</span><span class="p">:</span> <span class="n">entry</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">file_help_topics</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">can_read_topic</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span> <span class="n">caller</span><span class="p">)}</span>
|
||||
<span class="n">key</span><span class="p">:</span> <span class="n">entry</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">file_help_topics</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">can_read_topic</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span> <span class="n">caller</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">cmd_help_topics</span><span class="p">,</span> <span class="n">db_help_topics</span><span class="p">,</span> <span class="n">file_help_topics</span></div>
|
||||
|
||||
|
|
@ -494,9 +502,7 @@
|
|||
<span class="c1"># return of this will either be a HelpCategory, a Command or a</span>
|
||||
<span class="c1"># HelpEntry/FileHelpEntry.</span>
|
||||
<span class="n">matches</span><span class="p">,</span> <span class="n">suggestions</span> <span class="o">=</span> <span class="n">help_search_with_index</span><span class="p">(</span>
|
||||
<span class="n">match_query</span><span class="p">,</span> <span class="n">entries</span><span class="p">,</span>
|
||||
<span class="n">suggestion_maxnum</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">suggestion_maxnum</span><span class="p">,</span>
|
||||
<span class="n">fields</span><span class="o">=</span><span class="n">search_fields</span>
|
||||
<span class="n">match_query</span><span class="p">,</span> <span class="n">entries</span><span class="p">,</span> <span class="n">suggestion_maxnum</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">suggestion_maxnum</span><span class="p">,</span> <span class="n">fields</span><span class="o">=</span><span class="n">search_fields</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">matches</span><span class="p">:</span>
|
||||
<span class="n">match</span> <span class="o">=</span> <span class="n">matches</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
|
@ -520,8 +526,9 @@
|
|||
<span class="c1"># parse the query</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">subtopics</span> <span class="o">=</span> <span class="p">[</span><span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">subtopic_separator_char</span><span class="p">)]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">subtopics</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">subtopic_separator_char</span><span class="p">)</span>
|
||||
<span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">topic</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">subtopics</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">topic</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
|
|
@ -547,7 +554,6 @@
|
|||
<span class="k">return</span> <span class="n">key</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
|
||||
<span class="k">return</span> <span class="n">key</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdHelp.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.help.html#evennia.commands.default.help.CmdHelp.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Run the dynamic help entry creator.</span>
|
||||
|
|
@ -560,8 +566,9 @@
|
|||
<span class="c1"># list all available help entries, grouped by category. We want to</span>
|
||||
<span class="c1"># build dictionaries {category: [topic, topic, ...], ...}</span>
|
||||
|
||||
<span class="n">cmd_help_topics</span><span class="p">,</span> <span class="n">db_help_topics</span><span class="p">,</span> <span class="n">file_help_topics</span> <span class="o">=</span> \
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">collect_topics</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">'list'</span><span class="p">)</span>
|
||||
<span class="n">cmd_help_topics</span><span class="p">,</span> <span class="n">db_help_topics</span><span class="p">,</span> <span class="n">file_help_topics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_topics</span><span class="p">(</span>
|
||||
<span class="n">caller</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s2">"list"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># db-topics override file-based ones</span>
|
||||
<span class="n">file_db_help_topics</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">file_help_topics</span><span class="p">,</span> <span class="o">**</span><span class="n">db_help_topics</span><span class="p">}</span>
|
||||
|
|
@ -580,21 +587,21 @@
|
|||
<span class="n">file_db_help_by_category</span><span class="p">[</span><span class="n">entry</span><span class="o">.</span><span class="n">help_category</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># generate the index and display</span>
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_help_index</span><span class="p">(</span><span class="n">cmd_help_by_category</span><span class="p">,</span>
|
||||
<span class="n">file_db_help_by_category</span><span class="p">,</span>
|
||||
<span class="n">click_topics</span><span class="o">=</span><span class="n">clickable_topics</span><span class="p">)</span>
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_help_index</span><span class="p">(</span>
|
||||
<span class="n">cmd_help_by_category</span><span class="p">,</span> <span class="n">file_db_help_by_category</span><span class="p">,</span> <span class="n">click_topics</span><span class="o">=</span><span class="n">clickable_topics</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg_help</span><span class="p">(</span><span class="n">output</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># search for a specific entry. We need to check for 'read' access here before</span>
|
||||
<span class="c1"># building the set of possibilities.</span>
|
||||
<span class="n">cmd_help_topics</span><span class="p">,</span> <span class="n">db_help_topics</span><span class="p">,</span> <span class="n">file_help_topics</span> <span class="o">=</span> \
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">collect_topics</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">'query'</span><span class="p">)</span>
|
||||
<span class="n">cmd_help_topics</span><span class="p">,</span> <span class="n">db_help_topics</span><span class="p">,</span> <span class="n">file_help_topics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_topics</span><span class="p">(</span>
|
||||
<span class="n">caller</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s2">"query"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># get a collection of all keys + aliases to be able to strip prefixes like @</span>
|
||||
<span class="n">key_and_aliases</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span>
|
||||
<span class="n">chain</span><span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">cmd</span><span class="o">.</span><span class="n">_keyaliases</span> <span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">cmd_help_topics</span><span class="o">.</span><span class="n">values</span><span class="p">())))</span>
|
||||
<span class="n">key_and_aliases</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">chain</span><span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">cmd</span><span class="o">.</span><span class="n">_keyaliases</span> <span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">cmd_help_topics</span><span class="o">.</span><span class="n">values</span><span class="p">())))</span>
|
||||
|
||||
<span class="c1"># db-help topics takes priority over file-help</span>
|
||||
<span class="n">file_db_help_topics</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">file_help_topics</span><span class="p">,</span> <span class="o">**</span><span class="n">db_help_topics</span><span class="p">}</span>
|
||||
|
|
@ -603,8 +610,9 @@
|
|||
<span class="n">all_topics</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">file_db_help_topics</span><span class="p">,</span> <span class="o">**</span><span class="n">cmd_help_topics</span><span class="p">}</span>
|
||||
|
||||
<span class="c1"># get all categories</span>
|
||||
<span class="n">all_categories</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span>
|
||||
<span class="n">HelpCategory</span><span class="p">(</span><span class="n">topic</span><span class="o">.</span><span class="n">help_category</span><span class="p">)</span> <span class="k">for</span> <span class="n">topic</span> <span class="ow">in</span> <span class="n">all_topics</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span>
|
||||
<span class="n">all_categories</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span>
|
||||
<span class="nb">set</span><span class="p">(</span><span class="n">HelpCategory</span><span class="p">(</span><span class="n">topic</span><span class="o">.</span><span class="n">help_category</span><span class="p">)</span> <span class="k">for</span> <span class="n">topic</span> <span class="ow">in</span> <span class="n">all_topics</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># all available help options - will be searched in order. We also check # the</span>
|
||||
<span class="c1"># read-permission here.</span>
|
||||
|
|
@ -628,23 +636,26 @@
|
|||
|
||||
<span class="k">for</span> <span class="n">match_query</span> <span class="ow">in</span> <span class="p">[</span><span class="n">query</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">query</span><span class="si">}</span><span class="s2">*"</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"*</span><span class="si">{</span><span class="n">query</span><span class="si">}</span><span class="s2">"</span><span class="p">]:</span>
|
||||
<span class="n">_</span><span class="p">,</span> <span class="n">suggestions</span> <span class="o">=</span> <span class="n">help_search_with_index</span><span class="p">(</span>
|
||||
<span class="n">match_query</span><span class="p">,</span> <span class="n">entries</span><span class="p">,</span>
|
||||
<span class="n">match_query</span><span class="p">,</span>
|
||||
<span class="n">entries</span><span class="p">,</span>
|
||||
<span class="n">suggestion_maxnum</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">suggestion_maxnum</span><span class="p">,</span>
|
||||
<span class="n">fields</span><span class="o">=</span><span class="n">search_fields</span>
|
||||
<span class="n">fields</span><span class="o">=</span><span class="n">search_fields</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">suggestions</span><span class="p">:</span>
|
||||
<span class="n">help_text</span> <span class="o">+=</span> <span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">... But matches where found within the help "</span>
|
||||
<span class="s2">"texts of the suggestions below."</span><span class="p">)</span>
|
||||
<span class="n">suggestions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">strip_cmd_prefix</span><span class="p">(</span><span class="n">sugg</span><span class="p">,</span> <span class="n">key_and_aliases</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">sugg</span> <span class="ow">in</span> <span class="n">suggestions</span><span class="p">]</span>
|
||||
<span class="s2">"texts of the suggestions below."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">suggestions</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">strip_cmd_prefix</span><span class="p">(</span><span class="n">sugg</span><span class="p">,</span> <span class="n">key_and_aliases</span><span class="p">)</span> <span class="k">for</span> <span class="n">sugg</span> <span class="ow">in</span> <span class="n">suggestions</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">break</span>
|
||||
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_help_entry</span><span class="p">(</span>
|
||||
<span class="n">topic</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="c1"># this will give a no-match style title</span>
|
||||
<span class="n">help_text</span><span class="o">=</span><span class="n">help_text</span><span class="p">,</span>
|
||||
<span class="n">suggested</span><span class="o">=</span><span class="n">suggestions</span><span class="p">,</span>
|
||||
<span class="n">click_topics</span><span class="o">=</span><span class="n">clickable_topics</span>
|
||||
<span class="n">click_topics</span><span class="o">=</span><span class="n">clickable_topics</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg_help</span><span class="p">(</span><span class="n">output</span><span class="p">)</span>
|
||||
|
|
@ -654,14 +665,20 @@
|
|||
<span class="c1"># no subtopics for categories - these are just lists of topics</span>
|
||||
<span class="n">category</span> <span class="o">=</span> <span class="n">match</span><span class="o">.</span><span class="n">key</span>
|
||||
<span class="n">category_lower</span> <span class="o">=</span> <span class="n">category</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
<span class="n">cmds_in_category</span> <span class="o">=</span> <span class="p">[</span><span class="n">key</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">cmd_help_topics</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">category_lower</span> <span class="o">==</span> <span class="n">cmd</span><span class="o">.</span><span class="n">help_category</span><span class="p">]</span>
|
||||
<span class="n">topics_in_category</span> <span class="o">=</span> <span class="p">[</span><span class="n">key</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">topic</span> <span class="ow">in</span> <span class="n">file_db_help_topics</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">category_lower</span> <span class="o">==</span> <span class="n">topic</span><span class="o">.</span><span class="n">help_category</span><span class="p">]</span>
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_help_index</span><span class="p">({</span><span class="n">category</span><span class="p">:</span> <span class="n">cmds_in_category</span><span class="p">},</span>
|
||||
<span class="p">{</span><span class="n">category</span><span class="p">:</span> <span class="n">topics_in_category</span><span class="p">},</span>
|
||||
<span class="n">title_lone_category</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">click_topics</span><span class="o">=</span><span class="n">clickable_topics</span><span class="p">)</span>
|
||||
<span class="n">cmds_in_category</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">key</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">cmd_help_topics</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">category_lower</span> <span class="o">==</span> <span class="n">cmd</span><span class="o">.</span><span class="n">help_category</span>
|
||||
<span class="p">]</span>
|
||||
<span class="n">topics_in_category</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">key</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">topic</span> <span class="ow">in</span> <span class="n">file_db_help_topics</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">category_lower</span> <span class="o">==</span> <span class="n">topic</span><span class="o">.</span><span class="n">help_category</span>
|
||||
<span class="p">]</span>
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_help_index</span><span class="p">(</span>
|
||||
<span class="p">{</span><span class="n">category</span><span class="p">:</span> <span class="n">cmds_in_category</span><span class="p">},</span>
|
||||
<span class="p">{</span><span class="n">category</span><span class="p">:</span> <span class="n">topics_in_category</span><span class="p">},</span>
|
||||
<span class="n">title_lone_category</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">click_topics</span><span class="o">=</span><span class="n">clickable_topics</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg_help</span><span class="p">(</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
|
|
@ -716,7 +733,7 @@
|
|||
<span class="n">topic</span><span class="o">=</span><span class="n">topic</span><span class="p">,</span>
|
||||
<span class="n">help_text</span><span class="o">=</span><span class="sa">f</span><span class="s2">"No help entry found for '</span><span class="si">{</span><span class="n">checked_topic</span><span class="si">}</span><span class="s2">'"</span><span class="p">,</span>
|
||||
<span class="n">subtopics</span><span class="o">=</span><span class="n">subtopic_index</span><span class="p">,</span>
|
||||
<span class="n">click_topics</span><span class="o">=</span><span class="n">clickable_topics</span>
|
||||
<span class="n">click_topics</span><span class="o">=</span><span class="n">clickable_topics</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg_help</span><span class="p">(</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
|
@ -744,7 +761,7 @@
|
|||
<span class="n">aliases</span><span class="o">=</span><span class="n">aliases</span><span class="p">,</span>
|
||||
<span class="n">subtopics</span><span class="o">=</span><span class="n">subtopic_index</span><span class="p">,</span>
|
||||
<span class="n">suggested</span><span class="o">=</span><span class="n">suggested</span><span class="p">,</span>
|
||||
<span class="n">click_topics</span><span class="o">=</span><span class="n">clickable_topics</span>
|
||||
<span class="n">click_topics</span><span class="o">=</span><span class="n">clickable_topics</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg_help</span><span class="p">(</span><span class="n">output</span><span class="p">)</span></div></div>
|
||||
|
|
@ -871,15 +888,17 @@
|
|||
|
||||
<span class="c1"># check if we have an old entry with the same name</span>
|
||||
|
||||
<span class="n">cmd_help_topics</span><span class="p">,</span> <span class="n">db_help_topics</span><span class="p">,</span> <span class="n">file_help_topics</span> <span class="o">=</span> \
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">collect_topics</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">'query'</span><span class="p">)</span>
|
||||
<span class="n">cmd_help_topics</span><span class="p">,</span> <span class="n">db_help_topics</span><span class="p">,</span> <span class="n">file_help_topics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">collect_topics</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s2">"query"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># db-help topics takes priority over file-help</span>
|
||||
<span class="n">file_db_help_topics</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">file_help_topics</span><span class="p">,</span> <span class="o">**</span><span class="n">db_help_topics</span><span class="p">}</span>
|
||||
<span class="c1"># commands take priority over the other types</span>
|
||||
<span class="n">all_topics</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">file_db_help_topics</span><span class="p">,</span> <span class="o">**</span><span class="n">cmd_help_topics</span><span class="p">}</span>
|
||||
<span class="c1"># get all categories</span>
|
||||
<span class="n">all_categories</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span>
|
||||
<span class="n">HelpCategory</span><span class="p">(</span><span class="n">topic</span><span class="o">.</span><span class="n">help_category</span><span class="p">)</span> <span class="k">for</span> <span class="n">topic</span> <span class="ow">in</span> <span class="n">all_topics</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span>
|
||||
<span class="n">all_categories</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span>
|
||||
<span class="nb">set</span><span class="p">(</span><span class="n">HelpCategory</span><span class="p">(</span><span class="n">topic</span><span class="o">.</span><span class="n">help_category</span><span class="p">)</span> <span class="k">for</span> <span class="n">topic</span> <span class="ow">in</span> <span class="n">all_topics</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># all available help options - will be searched in order. We also check # the</span>
|
||||
<span class="c1"># read-permission here.</span>
|
||||
<span class="n">entries</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">all_topics</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="o">+</span> <span class="n">all_categories</span>
|
||||
|
|
@ -895,29 +914,35 @@
|
|||
<span class="k">if</span> <span class="n">match</span><span class="p">:</span>
|
||||
<span class="n">warning</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">match</span><span class="p">,</span> <span class="n">HelpCategory</span><span class="p">):</span>
|
||||
<span class="n">warning</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">querystr</span><span class="si">}</span><span class="s2">' matches (or partially matches) the name of "</span>
|
||||
<span class="s2">"help-category '</span><span class="si">{match.key}</span><span class="s2">'. If you continue, your help entry will "</span>
|
||||
<span class="s2">"take precedence and the category (or part of its name) *may* not "</span>
|
||||
<span class="s2">"be usable for grouping help entries anymore."</span><span class="p">)</span>
|
||||
<span class="n">warning</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">querystr</span><span class="si">}</span><span class="s2">' matches (or partially matches) the name of "</span>
|
||||
<span class="s2">"help-category '</span><span class="si">{match.key}</span><span class="s2">'. If you continue, your help entry will "</span>
|
||||
<span class="s2">"take precedence and the category (or part of its name) *may* not "</span>
|
||||
<span class="s2">"be usable for grouping help entries anymore."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">inherits_from</span><span class="p">(</span><span class="n">match</span><span class="p">,</span> <span class="s2">"evennia.commands.command.Command"</span><span class="p">):</span>
|
||||
<span class="n">warning</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">querystr</span><span class="si">}</span><span class="s2">' matches (or partially matches) the key/alias of "</span>
|
||||
<span class="s2">"Command '</span><span class="si">{match.key}</span><span class="s2">'. Command-help take precedence over other "</span>
|
||||
<span class="s2">"help entries so your help *may* be impossible to reach for those "</span>
|
||||
<span class="s2">"with access to that command."</span><span class="p">)</span>
|
||||
<span class="n">warning</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">querystr</span><span class="si">}</span><span class="s2">' matches (or partially matches) the key/alias of "</span>
|
||||
<span class="s2">"Command '</span><span class="si">{match.key}</span><span class="s2">'. Command-help take precedence over other "</span>
|
||||
<span class="s2">"help entries so your help *may* be impossible to reach for those "</span>
|
||||
<span class="s2">"with access to that command."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">inherits_from</span><span class="p">(</span><span class="n">match</span><span class="p">,</span> <span class="s2">"evennia.help.filehelp.FileHelpEntry"</span><span class="p">):</span>
|
||||
<span class="n">warning</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">querystr</span><span class="si">}</span><span class="s2">' matches (or partially matches) the name/alias of the "</span>
|
||||
<span class="sa">f</span><span class="s2">"file-based help topic '</span><span class="si">{</span><span class="n">match</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">'. File-help entries cannot be "</span>
|
||||
<span class="s2">"modified from in-game (they are files on-disk). If you continue, "</span>
|
||||
<span class="s2">"your help entry may shadow the file-based one's name partly or "</span>
|
||||
<span class="s2">"completely."</span><span class="p">)</span>
|
||||
<span class="n">warning</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">querystr</span><span class="si">}</span><span class="s2">' matches (or partially matches) the name/alias of the "</span>
|
||||
<span class="sa">f</span><span class="s2">"file-based help topic '</span><span class="si">{</span><span class="n">match</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">'. File-help entries cannot be "</span>
|
||||
<span class="s2">"modified from in-game (they are files on-disk). If you continue, "</span>
|
||||
<span class="s2">"your help entry may shadow the file-based one's name partly or "</span>
|
||||
<span class="s2">"completely."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">warning</span><span class="p">:</span>
|
||||
<span class="c1"># show a warning for a clashing help-entry type. Even if user accepts this</span>
|
||||
<span class="c1"># we don't break here since we may need to show warnings for other inputs.</span>
|
||||
<span class="c1"># We don't count this as an old-entry hit because we can't edit these</span>
|
||||
<span class="c1"># types of entries.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|rWarning:</span><span class="se">\n</span><span class="s2">|r</span><span class="si">{</span><span class="n">warning</span><span class="si">}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
<span class="n">repl</span> <span class="o">=</span> <span class="k">yield</span><span class="p">(</span><span class="s2">"|wDo you still want to continue? Y/[N]?|n"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">repl</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'y'</span><span class="p">,</span> <span class="s1">'yes'</span><span class="p">):</span>
|
||||
<span class="n">repl</span> <span class="o">=</span> <span class="k">yield</span> <span class="p">(</span><span class="s2">"|wDo you still want to continue? Y/[N]?|n"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">repl</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"y"</span><span class="p">,</span> <span class="s2">"yes"</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Aborted."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -939,7 +964,11 @@
|
|||
<span class="n">helpentry</span> <span class="o">=</span> <span class="n">old_entry</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">helpentry</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_help_entry</span><span class="p">(</span>
|
||||
<span class="n">topicstr</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="n">category</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="n">lockstring</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="n">aliases</span><span class="p">,</span>
|
||||
<span class="n">topicstr</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">,</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="n">category</span><span class="p">,</span>
|
||||
<span class="n">locks</span><span class="o">=</span><span class="n">lockstring</span><span class="p">,</span>
|
||||
<span class="n">aliases</span><span class="o">=</span><span class="n">aliases</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_editing_help</span> <span class="o">=</span> <span class="n">helpentry</span>
|
||||
|
||||
|
|
@ -1018,9 +1047,7 @@
|
|||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Error when creating topic '</span><span class="si">{</span><span class="n">topicstr</span><span class="si">}</span><span class="s2">'</span><span class="si">{</span><span class="n">aliastxt</span><span class="si">}</span><span class="s2">! Contact an admin."</span>
|
||||
<span class="p">)</span></div></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error when creating topic '</span><span class="si">{</span><span class="n">topicstr</span><span class="si">}</span><span class="s2">'</span><span class="si">{</span><span class="n">aliastxt</span><span class="si">}</span><span class="s2">! Contact an admin."</span><span class="p">)</span></div></div>
|
||||
</pre></div>
|
||||
|
||||
<div class="clearer"></div>
|
||||
|
|
|
|||
|
|
@ -635,13 +635,15 @@
|
|||
<span class="k">if</span> <span class="n">delmode</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You cannot remove a core Evennia service (named 'Evennia*')."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"|RYou seem to be shutting down a core Evennia "</span>
|
||||
<span class="s2">"service (named 'Evennia*').</span><span class="se">\n</span><span class="s2">Note that stopping "</span>
|
||||
<span class="s2">"some TCP port services will *not* disconnect users "</span>
|
||||
<span class="s2">"*already* connected on those ports, but *may* "</span>
|
||||
<span class="s2">"instead cause spurious errors for them.</span><span class="se">\n</span><span class="s2">To safely "</span>
|
||||
<span class="s2">"and permanently remove ports, change settings file "</span>
|
||||
<span class="s2">"and restart the server.|n</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"|RYou seem to be shutting down a core Evennia "</span>
|
||||
<span class="s2">"service (named 'Evennia*').</span><span class="se">\n</span><span class="s2">Note that stopping "</span>
|
||||
<span class="s2">"some TCP port services will *not* disconnect users "</span>
|
||||
<span class="s2">"*already* connected on those ports, but *may* "</span>
|
||||
<span class="s2">"instead cause spurious errors for them.</span><span class="se">\n</span><span class="s2">To safely "</span>
|
||||
<span class="s2">"and permanently remove ports, change settings file "</span>
|
||||
<span class="s2">"and restart the server.|n</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">delmode</span><span class="p">:</span>
|
||||
|
|
@ -653,9 +655,11 @@
|
|||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">service</span><span class="o">.</span><span class="n">stopService</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|rErrors were reported when stopping this service</span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"If there are remaining problems, try reloading "</span>
|
||||
<span class="s2">"or rebooting the server."</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"|rErrors were reported when stopping this service</span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"If there are remaining problems, try reloading "</span>
|
||||
<span class="s2">"or rebooting the server."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|g... Stopped service '</span><span class="si">%s</span><span class="s2">'.|n"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
|
|
@ -668,9 +672,11 @@
|
|||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">service</span><span class="o">.</span><span class="n">startService</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|rErrors were reported when starting this service</span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"If there are remaining problems, try reloading the server, changing the "</span>
|
||||
<span class="s2">"settings if it's a non-standard service.|n"</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"|rErrors were reported when starting this service</span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"If there are remaining problems, try reloading the server, changing the "</span>
|
||||
<span class="s2">"settings if it's a non-standard service.|n"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|gService started.|n"</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
|
|
@ -1015,8 +1021,8 @@
|
|||
<div class="viewcode-block" id="CmdTasks.coll_date_func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.system.html#evennia.commands.default.system.CmdTasks.coll_date_func">[docs]</a> <span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span> <span class="nf">coll_date_func</span><span class="p">(</span><span class="n">task</span><span class="p">):</span>
|
||||
<span class="sd">"""Replace regex characters in date string and collect deferred function name."""</span>
|
||||
<span class="n">t_comp_date</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">task</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">'-'</span><span class="p">,</span> <span class="s1">'/'</span><span class="p">)</span>
|
||||
<span class="n">t_func_name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">task</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">' '</span><span class="p">)</span>
|
||||
<span class="n">t_comp_date</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">task</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">)</span>
|
||||
<span class="n">t_func_name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">task</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span>
|
||||
<span class="n">t_func_mem_ref</span> <span class="o">=</span> <span class="n">t_func_name</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">t_func_name</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">4</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="k">return</span> <span class="n">t_comp_date</span><span class="p">,</span> <span class="n">t_func_mem_ref</span></div>
|
||||
|
||||
|
|
@ -1036,19 +1042,19 @@
|
|||
<span class="c1"># verify manipulating the correct task</span>
|
||||
<span class="n">task_args</span> <span class="o">=</span> <span class="n">_TASK_HANDLER</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">task_id</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">task_args</span><span class="p">:</span> <span class="c1"># check if the task is still active</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s1">'Task completed while waiting for input.'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Task completed while waiting for input."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># make certain a task with matching IDs has not been created</span>
|
||||
<span class="n">t_comp_date</span><span class="p">,</span> <span class="n">t_func_mem_ref</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">coll_date_func</span><span class="p">(</span><span class="n">task_args</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">t_comp_date</span> <span class="o">!=</span> <span class="n">t_comp_date</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">t_func_mem_ref</span> <span class="o">!=</span> <span class="n">t_func_mem_ref</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s1">'Task completed while waiting for input.'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Task completed while waiting for input."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># Do the action requested by command caller</span>
|
||||
<span class="n">action_return</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">task_action</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">action_request</span><span class="si">}</span><span class="s1"> request completed.'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s1">'The task function </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">action_request</span><span class="si">}</span><span class="s1"> returned: </span><span class="si">{</span><span class="n">action_return</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">action_request</span><span class="si">}</span><span class="s2"> request completed."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The task function </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">action_request</span><span class="si">}</span><span class="s2"> returned: </span><span class="si">{</span><span class="n">action_return</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdTasks.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.system.html#evennia.commands.default.system.CmdTasks.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># get a reference of the global task handler</span>
|
||||
|
|
@ -1057,9 +1063,9 @@
|
|||
<span class="kn">from</span> <span class="nn">evennia.scripts.taskhandler</span> <span class="kn">import</span> <span class="n">TASK_HANDLER</span> <span class="k">as</span> <span class="n">_TASK_HANDLER</span>
|
||||
<span class="c1"># handle no tasks active.</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_TASK_HANDLER</span><span class="o">.</span><span class="n">tasks</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s1">'There are no active tasks.'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"There are no active tasks."</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s1">'Likely the task has completed and been removed.'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Likely the task has completed and been removed."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># handle caller's request to manipulate a task(s)</span>
|
||||
|
|
@ -1075,8 +1081,8 @@
|
|||
<span class="c1"># if the argument is a task id, proccess the action on a single task</span>
|
||||
<span class="k">if</span> <span class="n">arg_is_id</span><span class="p">:</span>
|
||||
|
||||
<span class="n">err_arg_msg</span> <span class="o">=</span> <span class="s1">'Switch and task ID are required when manipulating a task.'</span>
|
||||
<span class="n">task_comp_msg</span> <span class="o">=</span> <span class="s1">'Task completed while processing request.'</span>
|
||||
<span class="n">err_arg_msg</span> <span class="o">=</span> <span class="s2">"Switch and task ID are required when manipulating a task."</span>
|
||||
<span class="n">task_comp_msg</span> <span class="o">=</span> <span class="s2">"Task completed while processing request."</span>
|
||||
|
||||
<span class="c1"># handle missing arguments or switches</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">:</span>
|
||||
|
|
@ -1089,14 +1095,16 @@
|
|||
|
||||
<span class="c1"># handle task no longer existing</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">task</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Task </span><span class="si">{</span><span class="n">task_id</span><span class="si">}</span><span class="s1"> does not exist.'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Task </span><span class="si">{</span><span class="n">task_id</span><span class="si">}</span><span class="s2"> does not exist."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># get a reference of the function caller requested</span>
|
||||
<span class="n">switch_action</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">task</span><span class="p">,</span> <span class="n">action_request</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">switch_action</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s1">, is not an acceptable task action or '</span> \
|
||||
<span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="n">task_comp_msg</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s2">, is not an acceptable task action or "</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">task_comp_msg</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># verify manipulating the correct task</span>
|
||||
<span class="k">if</span> <span class="n">task_id</span> <span class="ow">in</span> <span class="n">_TASK_HANDLER</span><span class="o">.</span><span class="n">tasks</span><span class="p">:</span>
|
||||
|
|
@ -1106,25 +1114,29 @@
|
|||
<span class="k">return</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">t_comp_date</span><span class="p">,</span> <span class="n">t_func_mem_ref</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">coll_date_func</span><span class="p">(</span><span class="n">task_args</span><span class="p">)</span>
|
||||
<span class="n">t_func_name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">task_args</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">' '</span><span class="p">)</span>
|
||||
<span class="n">t_func_name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">task_args</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span>
|
||||
<span class="n">t_func_name</span> <span class="o">=</span> <span class="n">t_func_name</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">t_func_name</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">2</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">task</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span> <span class="c1"># make certain the task has not been called yet.</span>
|
||||
<span class="n">prompt</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="n">action_request</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span><span class="si">}</span><span class="s1"> task </span><span class="si">{</span><span class="n">task_id</span><span class="si">}</span><span class="s1"> with completion date '</span>
|
||||
<span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="n">t_comp_date</span><span class="si">}</span><span class="s1"> (</span><span class="si">{</span><span class="n">t_func_name</span><span class="si">}</span><span class="s1">) </span><span class="se">{{</span><span class="s1">options</span><span class="se">}}</span><span class="s1">?'</span><span class="p">)</span>
|
||||
<span class="n">no_msg</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'No </span><span class="si">{</span><span class="n">action_request</span><span class="si">}</span><span class="s1"> processed.'</span>
|
||||
<span class="n">prompt</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">action_request</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span><span class="si">}</span><span class="s2"> task </span><span class="si">{</span><span class="n">task_id</span><span class="si">}</span><span class="s2"> with completion date "</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">t_comp_date</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">t_func_name</span><span class="si">}</span><span class="s2">) </span><span class="se">{{</span><span class="s2">options</span><span class="se">}}</span><span class="s2">?"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">no_msg</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"No </span><span class="si">{</span><span class="n">action_request</span><span class="si">}</span><span class="s2"> processed."</span>
|
||||
<span class="c1"># record variables for use in do_task_action method</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">task_id</span> <span class="o">=</span> <span class="n">task_id</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">t_comp_date</span> <span class="o">=</span> <span class="n">t_comp_date</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">t_func_mem_ref</span> <span class="o">=</span> <span class="n">t_func_mem_ref</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">task_action</span> <span class="o">=</span> <span class="n">switch_action</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">action_request</span> <span class="o">=</span> <span class="n">action_request</span>
|
||||
<span class="n">ask_yes_no</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">prompt</span><span class="o">=</span><span class="n">prompt</span><span class="p">,</span>
|
||||
<span class="n">yes_action</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">do_task_action</span><span class="p">,</span>
|
||||
<span class="n">no_action</span><span class="o">=</span><span class="n">no_msg</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="s2">"Y"</span><span class="p">,</span>
|
||||
<span class="n">allow_abort</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">ask_yes_no</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">prompt</span><span class="o">=</span><span class="n">prompt</span><span class="p">,</span>
|
||||
<span class="n">yes_action</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">do_task_action</span><span class="p">,</span>
|
||||
<span class="n">no_action</span><span class="o">=</span><span class="n">no_msg</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="s2">"Y"</span><span class="p">,</span>
|
||||
<span class="n">allow_abort</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">task_comp_msg</span><span class="p">)</span>
|
||||
|
|
@ -1144,7 +1156,7 @@
|
|||
|
||||
<span class="c1"># call requested action on all tasks with the function name</span>
|
||||
<span class="k">for</span> <span class="n">task_id</span><span class="p">,</span> <span class="n">task_args</span> <span class="ow">in</span> <span class="n">current_tasks</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="n">t_func_name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">task_args</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">' '</span><span class="p">)</span>
|
||||
<span class="n">t_func_name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">task_args</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span>
|
||||
<span class="n">t_func_name</span> <span class="o">=</span> <span class="n">t_func_name</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">t_func_name</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">2</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="c1"># skip this task if it is not for the function desired</span>
|
||||
<span class="k">if</span> <span class="n">arg_func_name</span> <span class="o">!=</span> <span class="n">t_func_name</span><span class="p">:</span>
|
||||
|
|
@ -1154,33 +1166,39 @@
|
|||
<span class="n">switch_action</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">task</span><span class="p">,</span> <span class="n">action_request</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">switch_action</span><span class="p">:</span>
|
||||
<span class="n">action_return</span> <span class="o">=</span> <span class="n">switch_action</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Task action </span><span class="si">{</span><span class="n">action_request</span><span class="si">}</span><span class="s1"> completed on task ID </span><span class="si">{</span><span class="n">task_id</span><span class="si">}</span><span class="s1">.'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s1">'The task function </span><span class="si">{</span><span class="n">action_request</span><span class="si">}</span><span class="s1"> returned: </span><span class="si">{</span><span class="n">action_return</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Task action </span><span class="si">{</span><span class="n">action_request</span><span class="si">}</span><span class="s2"> completed on task ID </span><span class="si">{</span><span class="n">task_id</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The task function </span><span class="si">{</span><span class="n">action_request</span><span class="si">}</span><span class="s2"> returned: </span><span class="si">{</span><span class="n">action_return</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># provide a message if not tasks of the function name was found</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">name_match_found</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s1">'No tasks deferring function name </span><span class="si">{</span><span class="n">arg_func_name</span><span class="si">}</span><span class="s1"> found.'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No tasks deferring function name </span><span class="si">{</span><span class="n">arg_func_name</span><span class="si">}</span><span class="s2"> found."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="c1"># check if an maleformed request was created</span>
|
||||
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s1">'Task command misformed.'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s1">'Proper format tasks[/switch] [function name or task id]'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Task command misformed."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Proper format tasks[/switch] [function name or task id]"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># No task manupilation requested, build a table of tasks and display it</span>
|
||||
<span class="c1"># get the width of screen in characters</span>
|
||||
<span class="n">width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client_width</span><span class="p">()</span>
|
||||
<span class="c1"># create table header and list to hold tasks data and actions</span>
|
||||
<span class="n">tasks_header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Task ID'</span><span class="p">,</span> <span class="s1">'Completion Date'</span><span class="p">,</span> <span class="s1">'Function'</span><span class="p">,</span> <span class="s1">'Arguments'</span><span class="p">,</span> <span class="s1">'KWARGS'</span><span class="p">,</span>
|
||||
<span class="s1">'persistent'</span><span class="p">)</span>
|
||||
<span class="n">tasks_header</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"Task ID"</span><span class="p">,</span>
|
||||
<span class="s2">"Completion Date"</span><span class="p">,</span>
|
||||
<span class="s2">"Function"</span><span class="p">,</span>
|
||||
<span class="s2">"Arguments"</span><span class="p">,</span>
|
||||
<span class="s2">"KWARGS"</span><span class="p">,</span>
|
||||
<span class="s2">"persistent"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># empty list of lists, the size of the header</span>
|
||||
<span class="n">tasks_list</span> <span class="o">=</span> <span class="p">[</span><span class="nb">list</span><span class="p">()</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tasks_header</span><span class="p">))]</span>
|
||||
<span class="k">for</span> <span class="n">task_id</span><span class="p">,</span> <span class="n">task</span> <span class="ow">in</span> <span class="n">_TASK_HANDLER</span><span class="o">.</span><span class="n">tasks</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="c1"># collect data from the task</span>
|
||||
<span class="n">t_comp_date</span><span class="p">,</span> <span class="n">t_func_mem_ref</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">coll_date_func</span><span class="p">(</span><span class="n">task</span><span class="p">)</span>
|
||||
<span class="n">t_func_name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">task</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">' '</span><span class="p">)</span>
|
||||
<span class="n">t_func_name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">task</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span>
|
||||
<span class="n">t_func_name</span> <span class="o">=</span> <span class="n">t_func_name</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">t_func_name</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">2</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="n">t_args</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">task</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
|
||||
<span class="n">t_kwargs</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">task</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
|
||||
|
|
@ -1190,9 +1208,10 @@
|
|||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tasks_header</span><span class="p">)):</span>
|
||||
<span class="n">tasks_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">task_data</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
|
||||
<span class="c1"># create and display the table</span>
|
||||
<span class="n">tasks_table</span> <span class="o">=</span> <span class="n">EvTable</span><span class="p">(</span><span class="o">*</span><span class="n">tasks_header</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="n">tasks_list</span><span class="p">,</span> <span class="n">maxwidth</span><span class="o">=</span><span class="n">width</span><span class="p">,</span> <span class="n">border</span><span class="o">=</span><span class="s1">'cells'</span><span class="p">,</span>
|
||||
<span class="n">align</span><span class="o">=</span><span class="s1">'center'</span><span class="p">)</span>
|
||||
<span class="n">actions</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s1">'/</span><span class="si">{</span><span class="n">switch</span><span class="si">}</span><span class="s1">'</span> <span class="k">for</span> <span class="n">switch</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switch_options</span><span class="p">)</span>
|
||||
<span class="n">tasks_table</span> <span class="o">=</span> <span class="n">EvTable</span><span class="p">(</span>
|
||||
<span class="o">*</span><span class="n">tasks_header</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="n">tasks_list</span><span class="p">,</span> <span class="n">maxwidth</span><span class="o">=</span><span class="n">width</span><span class="p">,</span> <span class="n">border</span><span class="o">=</span><span class="s2">"cells"</span><span class="p">,</span> <span class="n">align</span><span class="o">=</span><span class="s2">"center"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">actions</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"/</span><span class="si">{</span><span class="n">switch</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">switch</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switch_options</span><span class="p">)</span>
|
||||
<span class="n">helptxt</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Actions: </span><span class="si">{</span><span class="n">iter_to_str</span><span class="p">(</span><span class="n">actions</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">tasks_table</span><span class="p">)</span> <span class="o">+</span> <span class="n">helptxt</span><span class="p">)</span></div></div>
|
||||
</pre></div>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -243,13 +243,17 @@
|
|||
<span class="n">non_normalized_username</span> <span class="o">=</span> <span class="n">username</span>
|
||||
<span class="n">username</span> <span class="o">=</span> <span class="n">Account</span><span class="o">.</span><span class="n">normalize_username</span><span class="p">(</span><span class="n">username</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">non_normalized_username</span> <span class="o">!=</span> <span class="n">username</span><span class="p">:</span>
|
||||
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Note: your username was normalized to strip spaces and remove characters "</span>
|
||||
<span class="s2">"that could be visually confusing."</span><span class="p">)</span>
|
||||
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"Note: your username was normalized to strip spaces and remove characters "</span>
|
||||
<span class="s2">"that could be visually confusing."</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># have the user verify their new account was what they intended</span>
|
||||
<span class="n">answer</span> <span class="o">=</span> <span class="k">yield</span><span class="p">(</span><span class="sa">f</span><span class="s2">"You want to create an account '</span><span class="si">{</span><span class="n">username</span><span class="si">}</span><span class="s2">' with password '</span><span class="si">{</span><span class="n">password</span><span class="si">}</span><span class="s2">'."</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">Is this what you intended? [Y]/N?"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">answer</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'n'</span><span class="p">,</span> <span class="s1">'no'</span><span class="p">):</span>
|
||||
<span class="n">answer</span> <span class="o">=</span> <span class="k">yield</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"You want to create an account '</span><span class="si">{</span><span class="n">username</span><span class="si">}</span><span class="s2">' with password '</span><span class="si">{</span><span class="n">password</span><span class="si">}</span><span class="s2">'."</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">Is this what you intended? [Y]/N?"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">answer</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"n"</span><span class="p">,</span> <span class="s2">"no"</span><span class="p">):</span>
|
||||
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Aborted. If your user name contains spaces, surround it by quotes."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
|
|
@ -386,7 +390,7 @@
|
|||
|
||||
<span class="sd"> If you don't submit an encoding, the current encoding will be displayed</span>
|
||||
<span class="sd"> instead.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"encoding"</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="s2">"encode"</span>
|
||||
|
|
|
|||
|
|
@ -149,7 +149,8 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_log_file</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_log_file</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="s2">"log_file"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">log_file</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">channelname</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()))</span>
|
||||
<span class="s2">"log_file"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">log_file</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">channelname</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_log_file</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultChannel.set_log_filename"><a class="viewcode-back" href="../../../api/evennia.comms.comms.html#evennia.comms.comms.DefaultChannel.set_log_filename">[docs]</a> <span class="k">def</span> <span class="nf">set_log_filename</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
|
||||
|
|
@ -497,8 +498,13 @@
|
|||
<span class="c1"># needing to use the `channel` command explicitly.</span>
|
||||
<span class="n">msg_nick_pattern</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">channel_msg_nick_pattern</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span>
|
||||
<span class="n">msg_nick_replacement</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">channel_msg_nick_replacement</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">channelname</span><span class="o">=</span><span class="n">chan_key</span><span class="p">)</span>
|
||||
<span class="n">user</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">msg_nick_pattern</span><span class="p">,</span> <span class="n">msg_nick_replacement</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"inputline"</span><span class="p">,</span>
|
||||
<span class="n">pattern_is_regex</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="n">user</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span>
|
||||
<span class="n">msg_nick_pattern</span><span class="p">,</span>
|
||||
<span class="n">msg_nick_replacement</span><span class="p">,</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="s2">"inputline"</span><span class="p">,</span>
|
||||
<span class="n">pattern_is_regex</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">chan_key</span> <span class="o">!=</span> <span class="n">alias</span><span class="p">:</span>
|
||||
<span class="c1"># this allows for using the alias for general channel lookups</span>
|
||||
|
|
@ -588,7 +594,7 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">bypass_mute</span><span class="p">:</span>
|
||||
<span class="n">receivers</span> <span class="o">=</span> <span class="p">[</span><span class="n">receiver</span> <span class="k">for</span> <span class="n">receiver</span> <span class="ow">in</span> <span class="n">receivers</span> <span class="k">if</span> <span class="n">receiver</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mutelist</span><span class="p">]</span>
|
||||
|
||||
<span class="n">send_kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'senders'</span><span class="p">:</span> <span class="n">senders</span><span class="p">,</span> <span class="s1">'bypass_mute'</span><span class="p">:</span> <span class="n">bypass_mute</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">}</span>
|
||||
<span class="n">send_kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"senders"</span><span class="p">:</span> <span class="n">senders</span><span class="p">,</span> <span class="s2">"bypass_mute"</span><span class="p">:</span> <span class="n">bypass_mute</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">}</span>
|
||||
|
||||
<span class="c1"># pre-send hook</span>
|
||||
<span class="n">message</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">at_pre_msg</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="o">**</span><span class="n">send_kwargs</span><span class="p">)</span>
|
||||
|
|
@ -868,27 +874,37 @@
|
|||
|
||||
<span class="c1"># TODO Evennia 1.0+ removed hooks. Remove in 1.1.</span>
|
||||
<div class="viewcode-block" id="DefaultChannel.message_transform"><a class="viewcode-back" href="../../../api/evennia.comms.comms.html#evennia.comms.comms.DefaultChannel.message_transform">[docs]</a> <span class="k">def</span> <span class="nf">message_transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"Channel.message_transform is no longer used in 1.0+. "</span>
|
||||
<span class="s2">"Use Account/Object.at_pre_channel_msg instead."</span><span class="p">)</span></div>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span>
|
||||
<span class="s2">"Channel.message_transform is no longer used in 1.0+. "</span>
|
||||
<span class="s2">"Use Account/Object.at_pre_channel_msg instead."</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultChannel.distribute_message"><a class="viewcode-back" href="../../../api/evennia.comms.comms.html#evennia.comms.comms.DefaultChannel.distribute_message">[docs]</a> <span class="k">def</span> <span class="nf">distribute_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msgobj</span><span class="p">,</span> <span class="n">online</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"Channel.distribute_message is no longer used in 1.0+."</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultChannel.format_senders"><a class="viewcode-back" href="../../../api/evennia.comms.comms.html#evennia.comms.comms.DefaultChannel.format_senders">[docs]</a> <span class="k">def</span> <span class="nf">format_senders</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">senders</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"Channel.format_senders is no longer used in 1.0+. "</span>
|
||||
<span class="s2">"Use Account/Object.at_pre_channel_msg instead."</span><span class="p">)</span></div>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span>
|
||||
<span class="s2">"Channel.format_senders is no longer used in 1.0+. "</span>
|
||||
<span class="s2">"Use Account/Object.at_pre_channel_msg instead."</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultChannel.pose_transform"><a class="viewcode-back" href="../../../api/evennia.comms.comms.html#evennia.comms.comms.DefaultChannel.pose_transform">[docs]</a> <span class="k">def</span> <span class="nf">pose_transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msgobj</span><span class="p">,</span> <span class="n">sender_string</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"Channel.pose_transform is no longer used in 1.0+. "</span>
|
||||
<span class="s2">"Use Account/Object.at_pre_channel_msg instead."</span><span class="p">)</span></div>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span>
|
||||
<span class="s2">"Channel.pose_transform is no longer used in 1.0+. "</span>
|
||||
<span class="s2">"Use Account/Object.at_pre_channel_msg instead."</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultChannel.format_external"><a class="viewcode-back" href="../../../api/evennia.comms.comms.html#evennia.comms.comms.DefaultChannel.format_external">[docs]</a> <span class="k">def</span> <span class="nf">format_external</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msgobj</span><span class="p">,</span> <span class="n">senders</span><span class="p">,</span> <span class="n">emit</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"Channel.format_external is no longer used in 1.0+. "</span>
|
||||
<span class="s2">"Use Account/Object.at_pre_channel_msg instead."</span><span class="p">)</span></div>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span>
|
||||
<span class="s2">"Channel.format_external is no longer used in 1.0+. "</span>
|
||||
<span class="s2">"Use Account/Object.at_pre_channel_msg instead."</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultChannel.format_message"><a class="viewcode-back" href="../../../api/evennia.comms.comms.html#evennia.comms.comms.DefaultChannel.format_message">[docs]</a> <span class="k">def</span> <span class="nf">format_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msgobj</span><span class="p">,</span> <span class="n">emit</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"Channel.format_message is no longer used in 1.0+. "</span>
|
||||
<span class="s2">"Use Account/Object.at_pre_channel_msg instead."</span><span class="p">)</span></div>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span>
|
||||
<span class="s2">"Channel.format_message is no longer used in 1.0+. "</span>
|
||||
<span class="s2">"Use Account/Object.at_pre_channel_msg instead."</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultChannel.pre_send_message"><a class="viewcode-back" href="../../../api/evennia.comms.comms.html#evennia.comms.comms.DefaultChannel.pre_send_message">[docs]</a> <span class="k">def</span> <span class="nf">pre_send_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"Channel.pre_send_message was renamed to Channel.at_pre_msg."</span><span class="p">)</span></div>
|
||||
|
|
|
|||
|
|
@ -257,7 +257,7 @@
|
|||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_receivers_accounts</span><span class="o">=</span><span class="n">obj</span><span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">db_hide_from_accounts</span><span class="o">=</span><span class="n">obj</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">typ</span> <span class="o">==</span> <span class="s2">"object"</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_receivers_objects</span><span class="o">=</span><span class="n">obj</span><span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">db_hide_from_objects</span><span class="o">=</span><span class="n">obj</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">typ</span> <span class="o">==</span> <span class="s1">'script'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">typ</span> <span class="o">==</span> <span class="s2">"script"</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_receivers_scripts</span><span class="o">=</span><span class="n">obj</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">CommError</span></div>
|
||||
|
|
@ -299,7 +299,7 @@
|
|||
<span class="n">sender_restrict</span> <span class="o">=</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_sender_accounts__pk</span><span class="o">=</span><span class="n">spk</span><span class="p">)</span> <span class="o">&</span> <span class="o">~</span><span class="n">Q</span><span class="p">(</span><span class="n">db_hide_from_accounts__pk</span><span class="o">=</span><span class="n">spk</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">styp</span> <span class="o">==</span> <span class="s2">"object"</span><span class="p">:</span>
|
||||
<span class="n">sender_restrict</span> <span class="o">=</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_sender_objects__pk</span><span class="o">=</span><span class="n">spk</span><span class="p">)</span> <span class="o">&</span> <span class="o">~</span><span class="n">Q</span><span class="p">(</span><span class="n">db_hide_from_objects__pk</span><span class="o">=</span><span class="n">spk</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">styp</span> <span class="o">==</span> <span class="s1">'script'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">styp</span> <span class="o">==</span> <span class="s2">"script"</span><span class="p">:</span>
|
||||
<span class="n">sender_restrict</span> <span class="o">=</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_sender_scripts__pk</span><span class="o">=</span><span class="n">spk</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">sender_restrict</span> <span class="o">=</span> <span class="n">Q</span><span class="p">()</span>
|
||||
|
|
@ -308,16 +308,16 @@
|
|||
<span class="k">if</span> <span class="n">receiver</span><span class="p">:</span>
|
||||
<span class="n">rpk</span> <span class="o">=</span> <span class="n">receiver</span><span class="o">.</span><span class="n">pk</span>
|
||||
<span class="k">if</span> <span class="n">rtyp</span> <span class="o">==</span> <span class="s2">"account"</span><span class="p">:</span>
|
||||
<span class="n">receiver_restrict</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">Q</span><span class="p">(</span><span class="n">db_receivers_accounts__pk</span><span class="o">=</span><span class="n">rpk</span><span class="p">)</span> <span class="o">&</span> <span class="o">~</span><span class="n">Q</span><span class="p">(</span><span class="n">db_hide_from_accounts__pk</span><span class="o">=</span><span class="n">rpk</span><span class="p">))</span>
|
||||
<span class="n">receiver_restrict</span> <span class="o">=</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_receivers_accounts__pk</span><span class="o">=</span><span class="n">rpk</span><span class="p">)</span> <span class="o">&</span> <span class="o">~</span><span class="n">Q</span><span class="p">(</span><span class="n">db_hide_from_accounts__pk</span><span class="o">=</span><span class="n">rpk</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">rtyp</span> <span class="o">==</span> <span class="s2">"object"</span><span class="p">:</span>
|
||||
<span class="n">receiver_restrict</span> <span class="o">=</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_receivers_objects__pk</span><span class="o">=</span><span class="n">rpk</span><span class="p">)</span> <span class="o">&</span> <span class="o">~</span><span class="n">Q</span><span class="p">(</span><span class="n">db_hide_from_objects__pk</span><span class="o">=</span><span class="n">rpk</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">rtyp</span> <span class="o">==</span> <span class="s1">'script'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">rtyp</span> <span class="o">==</span> <span class="s2">"script"</span><span class="p">:</span>
|
||||
<span class="n">receiver_restrict</span> <span class="o">=</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_receivers_scripts__pk</span><span class="o">=</span><span class="n">rpk</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">rtyp</span> <span class="o">==</span> <span class="s2">"channel"</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">(</span>
|
||||
<span class="s2">"Msg.objects.search don't accept channel recipients since "</span>
|
||||
<span class="s2">"Channels no longer accepts Msg objects."</span><span class="p">)</span>
|
||||
<span class="s2">"Channels no longer accepts Msg objects."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">receiver_restrict</span> <span class="o">=</span> <span class="n">Q</span><span class="p">()</span>
|
||||
<span class="c1"># filter by full text</span>
|
||||
|
|
@ -331,8 +331,9 @@
|
|||
<span class="c1"># back-compatibility alias</span>
|
||||
<span class="n">message_search</span> <span class="o">=</span> <span class="n">search_message</span>
|
||||
|
||||
<div class="viewcode-block" id="MsgManager.create_message"><a class="viewcode-back" href="../../../api/evennia.comms.managers.html#evennia.comms.comms.MsgManager.create_message">[docs]</a> <span class="k">def</span> <span class="nf">create_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">senderobj</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">receivers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">header</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="MsgManager.create_message"><a class="viewcode-back" href="../../../api/evennia.comms.managers.html#evennia.comms.comms.MsgManager.create_message">[docs]</a> <span class="k">def</span> <span class="nf">create_message</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span> <span class="n">senderobj</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">receivers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Create a new communication Msg. Msgs represent a unit of</span>
|
||||
<span class="sd"> database-persistent communication between entites.</span>
|
||||
|
|
@ -357,7 +358,7 @@
|
|||
<span class="sd"> it's up to the command definitions to limit this as desired.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="s1">'channels'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"channels"</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">(</span>
|
||||
<span class="s2">"create_message() does not accept 'channel' kwarg anymore "</span>
|
||||
<span class="s2">"- channels no longer accept Msg objects."</span>
|
||||
|
|
@ -381,6 +382,7 @@
|
|||
<span class="n">new_message</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">new_message</span></div></div>
|
||||
|
||||
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># Channel manager</span>
|
||||
<span class="c1">#</span>
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@
|
|||
<span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">db_index</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">help_text</span><span class="o">=</span><span class="s2">"Identifier for single external sender, for use with senders "</span>
|
||||
<span class="s2">"not represented by a regular database model."</span>
|
||||
<span class="s2">"not represented by a regular database model."</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">db_receivers_accounts</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span>
|
||||
|
|
@ -179,7 +179,7 @@
|
|||
<span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">db_index</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">help_text</span><span class="o">=</span><span class="s2">"Identifier for single external receiver, for use with recievers "</span>
|
||||
<span class="s2">"not represented by a regular database model."</span>
|
||||
<span class="s2">"not represented by a regular database model."</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># header could be used for meta-info about the message if your system needs</span>
|
||||
|
|
@ -328,7 +328,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">receivers</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db_receiver_external</span> <span class="o">=</span> <span class="n">receivers</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">update_fields</span><span class="o">=</span><span class="p">[</span><span class="s1">'db_receiver_external'</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">update_fields</span><span class="o">=</span><span class="p">[</span><span class="s2">"db_receiver_external"</span><span class="p">])</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">receiver</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">receivers</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -163,7 +163,11 @@
|
|||
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">bucket</span><span class="o">.</span><span class="n">Object</span><span class="o">.</span><span class="n">return_value</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">upload_fileobj</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
||||
<span class="n">content</span><span class="p">,</span> <span class="n">ExtraArgs</span><span class="o">=</span><span class="p">{</span><span class="s2">"ContentType"</span><span class="p">:</span> <span class="s2">"text/plain"</span><span class="p">,</span> <span class="s2">"ACL"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">default_acl</span><span class="p">,}</span>
|
||||
<span class="n">content</span><span class="p">,</span>
|
||||
<span class="n">ExtraArgs</span><span class="o">=</span><span class="p">{</span>
|
||||
<span class="s2">"ContentType"</span><span class="p">:</span> <span class="s2">"text/plain"</span><span class="p">,</span>
|
||||
<span class="s2">"ACL"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">default_acl</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3StorageTests.test_storage_save_with_acl"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.tests.html#evennia.contrib.base_systems.awsstorage.tests.S3Boto3StorageTests.test_storage_save_with_acl">[docs]</a> <span class="k">def</span> <span class="nf">test_storage_save_with_acl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -178,7 +182,11 @@
|
|||
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">bucket</span><span class="o">.</span><span class="n">Object</span><span class="o">.</span><span class="n">return_value</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">upload_fileobj</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
||||
<span class="n">content</span><span class="p">,</span> <span class="n">ExtraArgs</span><span class="o">=</span><span class="p">{</span><span class="s2">"ContentType"</span><span class="p">:</span> <span class="s2">"text/plain"</span><span class="p">,</span> <span class="s2">"ACL"</span><span class="p">:</span> <span class="s2">"private"</span><span class="p">,}</span>
|
||||
<span class="n">content</span><span class="p">,</span>
|
||||
<span class="n">ExtraArgs</span><span class="o">=</span><span class="p">{</span>
|
||||
<span class="s2">"ContentType"</span><span class="p">:</span> <span class="s2">"text/plain"</span><span class="p">,</span>
|
||||
<span class="s2">"ACL"</span><span class="p">:</span> <span class="s2">"private"</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3StorageTests.test_content_type"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.tests.html#evennia.contrib.base_systems.awsstorage.tests.S3Boto3StorageTests.test_content_type">[docs]</a> <span class="k">def</span> <span class="nf">test_content_type</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -193,7 +201,11 @@
|
|||
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">bucket</span><span class="o">.</span><span class="n">Object</span><span class="o">.</span><span class="n">return_value</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">upload_fileobj</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
||||
<span class="n">content</span><span class="p">,</span> <span class="n">ExtraArgs</span><span class="o">=</span><span class="p">{</span><span class="s2">"ContentType"</span><span class="p">:</span> <span class="s2">"image/jpeg"</span><span class="p">,</span> <span class="s2">"ACL"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">default_acl</span><span class="p">,}</span>
|
||||
<span class="n">content</span><span class="p">,</span>
|
||||
<span class="n">ExtraArgs</span><span class="o">=</span><span class="p">{</span>
|
||||
<span class="s2">"ContentType"</span><span class="p">:</span> <span class="s2">"image/jpeg"</span><span class="p">,</span>
|
||||
<span class="s2">"ACL"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">default_acl</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3StorageTests.test_storage_save_gzipped"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.tests.html#evennia.contrib.base_systems.awsstorage.tests.S3Boto3StorageTests.test_storage_save_gzipped">[docs]</a> <span class="k">def</span> <span class="nf">test_storage_save_gzipped</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -421,7 +433,10 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">uploaded_content</span><span class="p">,</span> <span class="n">written_content</span><span class="p">)</span>
|
||||
<span class="n">multipart</span><span class="o">.</span><span class="n">complete</span><span class="o">.</span><span class="n">assert_called_once_with</span><span class="p">(</span>
|
||||
<span class="n">MultipartUpload</span><span class="o">=</span><span class="p">{</span>
|
||||
<span class="s2">"Parts"</span><span class="p">:</span> <span class="p">[{</span><span class="s2">"ETag"</span><span class="p">:</span> <span class="s2">"123"</span><span class="p">,</span> <span class="s2">"PartNumber"</span><span class="p">:</span> <span class="mi">1</span><span class="p">},</span> <span class="p">{</span><span class="s2">"ETag"</span><span class="p">:</span> <span class="s2">"456"</span><span class="p">,</span> <span class="s2">"PartNumber"</span><span class="p">:</span> <span class="mi">2</span><span class="p">},]</span>
|
||||
<span class="s2">"Parts"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="p">{</span><span class="s2">"ETag"</span><span class="p">:</span> <span class="s2">"123"</span><span class="p">,</span> <span class="s2">"PartNumber"</span><span class="p">:</span> <span class="mi">1</span><span class="p">},</span>
|
||||
<span class="p">{</span><span class="s2">"ETag"</span><span class="p">:</span> <span class="s2">"456"</span><span class="p">,</span> <span class="s2">"PartNumber"</span><span class="p">:</span> <span class="mi">2</span><span class="p">},</span>
|
||||
<span class="p">]</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
|
|
@ -436,7 +451,10 @@
|
|||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">_get_or_create_bucket</span><span class="p">(</span><span class="s2">"testbucketname"</span><span class="p">)</span>
|
||||
<span class="n">Bucket</span><span class="o">.</span><span class="n">create</span><span class="o">.</span><span class="n">assert_called_once_with</span><span class="p">(</span>
|
||||
<span class="n">ACL</span><span class="o">=</span><span class="s2">"public-read"</span><span class="p">,</span> <span class="n">CreateBucketConfiguration</span><span class="o">=</span><span class="p">{</span><span class="s2">"LocationConstraint"</span><span class="p">:</span> <span class="s2">"sa-east-1"</span><span class="p">,}</span>
|
||||
<span class="n">ACL</span><span class="o">=</span><span class="s2">"public-read"</span><span class="p">,</span>
|
||||
<span class="n">CreateBucketConfiguration</span><span class="o">=</span><span class="p">{</span>
|
||||
<span class="s2">"LocationConstraint"</span><span class="p">:</span> <span class="s2">"sa-east-1"</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3StorageTests.test_auto_creating_bucket_with_acl"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.tests.html#evennia.contrib.base_systems.awsstorage.tests.S3Boto3StorageTests.test_auto_creating_bucket_with_acl">[docs]</a> <span class="k">def</span> <span class="nf">test_auto_creating_bucket_with_acl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -451,22 +469,28 @@
|
|||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">_get_or_create_bucket</span><span class="p">(</span><span class="s2">"testbucketname"</span><span class="p">)</span>
|
||||
<span class="n">Bucket</span><span class="o">.</span><span class="n">create</span><span class="o">.</span><span class="n">assert_called_once_with</span><span class="p">(</span>
|
||||
<span class="n">ACL</span><span class="o">=</span><span class="s2">"public-read"</span><span class="p">,</span> <span class="n">CreateBucketConfiguration</span><span class="o">=</span><span class="p">{</span><span class="s2">"LocationConstraint"</span><span class="p">:</span> <span class="s2">"sa-east-1"</span><span class="p">,}</span>
|
||||
<span class="n">ACL</span><span class="o">=</span><span class="s2">"public-read"</span><span class="p">,</span>
|
||||
<span class="n">CreateBucketConfiguration</span><span class="o">=</span><span class="p">{</span>
|
||||
<span class="s2">"LocationConstraint"</span><span class="p">:</span> <span class="s2">"sa-east-1"</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3StorageTests.test_storage_exists"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.tests.html#evennia.contrib.base_systems.awsstorage.tests.S3Boto3StorageTests.test_storage_exists">[docs]</a> <span class="k">def</span> <span class="nf">test_storage_exists</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="s2">"file.txt"</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">head_object</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
||||
<span class="n">Bucket</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">bucket_name</span><span class="p">,</span> <span class="n">Key</span><span class="o">=</span><span class="s2">"file.txt"</span><span class="p">,</span>
|
||||
<span class="n">Bucket</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">bucket_name</span><span class="p">,</span>
|
||||
<span class="n">Key</span><span class="o">=</span><span class="s2">"file.txt"</span><span class="p">,</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3StorageTests.test_storage_exists_false"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.tests.html#evennia.contrib.base_systems.awsstorage.tests.S3Boto3StorageTests.test_storage_exists_false">[docs]</a> <span class="k">def</span> <span class="nf">test_storage_exists_false</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">head_object</span><span class="o">.</span><span class="n">side_effect</span> <span class="o">=</span> <span class="n">ClientError</span><span class="p">(</span>
|
||||
<span class="p">{</span><span class="s2">"Error"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"Code"</span><span class="p">:</span> <span class="s2">"404"</span><span class="p">,</span> <span class="s2">"Message"</span><span class="p">:</span> <span class="s2">"Not Found"</span><span class="p">}},</span> <span class="s2">"HeadObject"</span><span class="p">,</span>
|
||||
<span class="p">{</span><span class="s2">"Error"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"Code"</span><span class="p">:</span> <span class="s2">"404"</span><span class="p">,</span> <span class="s2">"Message"</span><span class="p">:</span> <span class="s2">"Not Found"</span><span class="p">}},</span>
|
||||
<span class="s2">"HeadObject"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertFalse</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="s2">"file.txt"</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">head_object</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span>
|
||||
<span class="n">Bucket</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">bucket_name</span><span class="p">,</span> <span class="n">Key</span><span class="o">=</span><span class="s2">"file.txt"</span><span class="p">,</span>
|
||||
<span class="n">Bucket</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">bucket_name</span><span class="p">,</span>
|
||||
<span class="n">Key</span><span class="o">=</span><span class="s2">"file.txt"</span><span class="p">,</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="S3Boto3StorageTests.test_storage_exists_doesnt_create_bucket"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.awsstorage.tests.html#evennia.contrib.base_systems.awsstorage.tests.S3Boto3StorageTests.test_storage_exists_doesnt_create_bucket">[docs]</a> <span class="k">def</span> <span class="nf">test_storage_exists_doesnt_create_bucket</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -487,8 +511,14 @@
|
|||
<span class="c1"># 4.txt</span>
|
||||
<span class="n">pages</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"CommonPrefixes"</span><span class="p">:</span> <span class="p">[{</span><span class="s2">"Prefix"</span><span class="p">:</span> <span class="s2">"some"</span><span class="p">},</span> <span class="p">{</span><span class="s2">"Prefix"</span><span class="p">:</span> <span class="s2">"other"</span><span class="p">},],</span>
|
||||
<span class="s2">"Contents"</span><span class="p">:</span> <span class="p">[{</span><span class="s2">"Key"</span><span class="p">:</span> <span class="s2">"2.txt"</span><span class="p">},</span> <span class="p">{</span><span class="s2">"Key"</span><span class="p">:</span> <span class="s2">"4.txt"</span><span class="p">},],</span>
|
||||
<span class="s2">"CommonPrefixes"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="p">{</span><span class="s2">"Prefix"</span><span class="p">:</span> <span class="s2">"some"</span><span class="p">},</span>
|
||||
<span class="p">{</span><span class="s2">"Prefix"</span><span class="p">:</span> <span class="s2">"other"</span><span class="p">},</span>
|
||||
<span class="p">],</span>
|
||||
<span class="s2">"Contents"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="p">{</span><span class="s2">"Key"</span><span class="p">:</span> <span class="s2">"2.txt"</span><span class="p">},</span>
|
||||
<span class="p">{</span><span class="s2">"Key"</span><span class="p">:</span> <span class="s2">"4.txt"</span><span class="p">},</span>
|
||||
<span class="p">],</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
|
|
@ -507,7 +537,14 @@
|
|||
<span class="c1"># some/path/1.txt</span>
|
||||
<span class="c1"># some/2.txt</span>
|
||||
<span class="n">pages</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="p">{</span><span class="s2">"CommonPrefixes"</span><span class="p">:</span> <span class="p">[{</span><span class="s2">"Prefix"</span><span class="p">:</span> <span class="s2">"some/path"</span><span class="p">},],</span> <span class="s2">"Contents"</span><span class="p">:</span> <span class="p">[{</span><span class="s2">"Key"</span><span class="p">:</span> <span class="s2">"some/2.txt"</span><span class="p">},],},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"CommonPrefixes"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="p">{</span><span class="s2">"Prefix"</span><span class="p">:</span> <span class="s2">"some/path"</span><span class="p">},</span>
|
||||
<span class="p">],</span>
|
||||
<span class="s2">"Contents"</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="p">{</span><span class="s2">"Key"</span><span class="p">:</span> <span class="s2">"some/2.txt"</span><span class="p">},</span>
|
||||
<span class="p">],</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="n">paginator</span> <span class="o">=</span> <span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">()</span>
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@
|
|||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default.tests</span> <span class="kn">import</span> <span class="n">BaseEvenniaCommandTest</span>
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="n">building_menu</span> <span class="kn">import</span> <span class="nn">BuildingMenu</span><span class="o">,</span> <span class="nn">CmdNoMatch</span>
|
||||
<span class="kn">from</span> <span class="nn">.building_menu</span> <span class="kn">import</span> <span class="n">BuildingMenu</span><span class="p">,</span> <span class="n">CmdNoMatch</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Submenu"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.building_menu.tests.html#evennia.contrib.base_systems.building_menu.tests.Submenu">[docs]</a><span class="k">class</span> <span class="nc">Submenu</span><span class="p">(</span><span class="n">BuildingMenu</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -193,8 +193,9 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">days</span> <span class="o"><=</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">weeks</span> <span class="o"><=</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">months</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"realtime_to_gametime: days/weeks/months cannot be set <= 0, "</span>
|
||||
<span class="s2">"they start from 1."</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
|
||||
<span class="s2">"realtime_to_gametime: days/weeks/months cannot be set <= 0, "</span> <span class="s2">"they start from 1."</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># days/weeks/months start from 1, we need to adjust them to work mathematically.</span>
|
||||
<span class="n">days</span><span class="p">,</span> <span class="n">weeks</span><span class="p">,</span> <span class="n">months</span> <span class="o">=</span> <span class="n">days</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">weeks</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">months</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
|
|
|
|||
|
|
@ -73,17 +73,27 @@
|
|||
<div class="viewcode-block" id="TestEventHandler.setUp"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.ingame_python.tests.html#evennia.contrib.base_systems.ingame_python.tests.TestEventHandler.setUp">[docs]</a> <span class="k">def</span> <span class="nf">setUp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Create the event handler."""</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">setUp</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handler</span> <span class="o">=</span> <span class="n">create_script</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.scripts.EventHandler"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handler</span> <span class="o">=</span> <span class="n">create_script</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.scripts.EventHandler"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Copy old events if necessary</span>
|
||||
<span class="k">if</span> <span class="n">OLD_EVENTS</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">events</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">OLD_EVENTS</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Alter typeclasses</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventCharacter"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char2</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventCharacter"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">room1</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventRoom"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">room2</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventRoom"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventCharacter"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char2</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventCharacter"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">room1</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventRoom"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">room2</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventRoom"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventExit"</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestEventHandler.tearDown"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.ingame_python.tests.html#evennia.contrib.base_systems.ingame_python.tests.TestEventHandler.tearDown">[docs]</a> <span class="k">def</span> <span class="nf">tearDown</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -295,17 +305,27 @@
|
|||
<div class="viewcode-block" id="TestCmdCallback.setUp"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.ingame_python.tests.html#evennia.contrib.base_systems.ingame_python.tests.TestCmdCallback.setUp">[docs]</a> <span class="k">def</span> <span class="nf">setUp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Create the callback handler."""</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">setUp</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handler</span> <span class="o">=</span> <span class="n">create_script</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.scripts.EventHandler"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handler</span> <span class="o">=</span> <span class="n">create_script</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.scripts.EventHandler"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Copy old events if necessary</span>
|
||||
<span class="k">if</span> <span class="n">OLD_EVENTS</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">events</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">OLD_EVENTS</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Alter typeclasses</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventCharacter"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char2</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventCharacter"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">room1</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventRoom"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">room2</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventRoom"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventCharacter"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char2</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventCharacter"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">room1</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventRoom"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">room2</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventRoom"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventExit"</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestCmdCallback.tearDown"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.ingame_python.tests.html#evennia.contrib.base_systems.ingame_python.tests.TestCmdCallback.tearDown">[docs]</a> <span class="k">def</span> <span class="nf">tearDown</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -474,17 +494,27 @@
|
|||
<div class="viewcode-block" id="TestDefaultCallbacks.setUp"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.ingame_python.tests.html#evennia.contrib.base_systems.ingame_python.tests.TestDefaultCallbacks.setUp">[docs]</a> <span class="k">def</span> <span class="nf">setUp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Create the callback handler."""</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">setUp</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handler</span> <span class="o">=</span> <span class="n">create_script</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.scripts.EventHandler"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handler</span> <span class="o">=</span> <span class="n">create_script</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.scripts.EventHandler"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Copy old events if necessary</span>
|
||||
<span class="k">if</span> <span class="n">OLD_EVENTS</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">events</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">OLD_EVENTS</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Alter typeclasses</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventCharacter"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char2</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventCharacter"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">room1</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventRoom"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">room2</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventRoom"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventCharacter"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char2</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventCharacter"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">room1</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventRoom"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">room2</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventRoom"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.base_systems.ingame_python.typeclasses.EventExit"</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestDefaultCallbacks.tearDown"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.ingame_python.tests.html#evennia.contrib.base_systems.ingame_python.tests.TestDefaultCallbacks.tearDown">[docs]</a> <span class="k">def</span> <span class="nf">tearDown</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -215,7 +215,9 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="n">seconds</span><span class="p">,</span> <span class="n">usual</span><span class="p">,</span> <span class="n">key</span> <span class="o">=</span> <span class="n">get_next_wait</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span>
|
||||
<span class="n">script</span> <span class="o">=</span> <span class="n">create_script</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.scripts.TimeEventScript"</span><span class="p">,</span> <span class="n">interval</span><span class="o">=</span><span class="n">seconds</span><span class="p">,</span> <span class="n">obj</span><span class="o">=</span><span class="n">obj</span>
|
||||
<span class="s2">"evennia.contrib.base_systems.ingame_python.scripts.TimeEventScript"</span><span class="p">,</span>
|
||||
<span class="n">interval</span><span class="o">=</span><span class="n">seconds</span><span class="p">,</span>
|
||||
<span class="n">obj</span><span class="o">=</span><span class="n">obj</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">key</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="s2">"event on </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@
|
|||
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<div class="viewcode-block" id="CmdDelCom.func"><a class="viewcode-back" href="../../../../../api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html#evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.CmdDelCom.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Implementing the command. """</span>
|
||||
<span class="sd">"""Implementing the command."""</span>
|
||||
|
||||
<span class="n">caller</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
|
||||
|
|
@ -249,8 +249,7 @@
|
|||
<span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">args</span><span class="p">:</span>
|
||||
<span class="n">subscribed</span><span class="p">,</span> <span class="n">available</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">list_channels</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">|wAvailable channels:</span><span class="se">\n</span><span class="si">{table}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">|wAvailable channels:</span><span class="se">\n</span><span class="si">{table}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
|
|
@ -395,7 +394,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">success</span><span class="p">,</span> <span class="n">err</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">boot_user</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="s1">'quiet'</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">)</span>
|
||||
<span class="n">success</span><span class="p">,</span> <span class="n">err</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">boot_user</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="s2">"quiet"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">success</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Booted </span><span class="si">{</span><span class="n">target</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="n">channel</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
|
||||
|
|
|
|||
|
|
@ -385,7 +385,7 @@
|
|||
<span class="c1"># Evennia hooks</span>
|
||||
|
||||
<div class="viewcode-block" id="EvscaperoomObject.return_appearance"><a class="viewcode-back" href="../../../../../api/evennia.contrib.full_systems.evscaperoom.objects.html#evennia.contrib.full_systems.evscaperoom.objects.EvscaperoomObject.return_appearance">[docs]</a> <span class="k">def</span> <span class="nf">return_appearance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">looker</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">""" Could be modified per state. We generally don't worry about the</span>
|
||||
<span class="sd">"""Could be modified per state. We generally don't worry about the</span>
|
||||
<span class="sd"> contents of the object by default.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
|
|
|||
|
|
@ -709,8 +709,8 @@
|
|||
<span class="n">consumable_kwargs</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">location</span><span class="p">:</span>
|
||||
<span class="n">tool_kwargs</span><span class="p">[</span><span class="s1">'location'</span><span class="p">]</span> <span class="o">=</span> <span class="n">location</span>
|
||||
<span class="n">consumable_kwargs</span><span class="p">[</span><span class="s1">'location'</span><span class="p">]</span> <span class="o">=</span> <span class="n">location</span>
|
||||
<span class="n">tool_kwargs</span><span class="p">[</span><span class="s2">"location"</span><span class="p">]</span> <span class="o">=</span> <span class="n">location</span>
|
||||
<span class="n">consumable_kwargs</span><span class="p">[</span><span class="s2">"location"</span><span class="p">]</span> <span class="o">=</span> <span class="n">location</span>
|
||||
|
||||
<span class="n">tool_key</span> <span class="o">=</span> <span class="n">tool_kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"key"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">cons_key</span> <span class="o">=</span> <span class="n">consumable_kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"key"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
|
|
@ -1008,6 +1008,7 @@
|
|||
<span class="sd"> things in the current location, like a furnace, windmill or anvil.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"craft"</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:all()"</span>
|
||||
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"General"</span>
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@
|
|||
<span class="c1"># Sword recipe</span>
|
||||
<span class="c1"># ------------------------------------------------------------</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="PigIronRecipe"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.crafting.example_recipes.html#evennia.contrib.game_systems.crafting.example_recipes.PigIronRecipe">[docs]</a><span class="k">class</span> <span class="nc">PigIronRecipe</span><span class="p">(</span><span class="n">CraftingRecipe</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Pig iron is a high-carbon result of melting iron in a blast furnace.</span>
|
||||
|
|
@ -373,9 +374,9 @@
|
|||
<span class="n">exact_consumable_order</span> <span class="o">=</span> <span class="kc">True</span></div>
|
||||
|
||||
|
||||
<span class="c1">#------------------------------------------------------------</span>
|
||||
<span class="c1"># ------------------------------------------------------------</span>
|
||||
<span class="c1"># Recipes for spell casting</span>
|
||||
<span class="c1">#------------------------------------------------------------</span>
|
||||
<span class="c1"># ------------------------------------------------------------</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">_MagicRecipe</span><span class="p">(</span><span class="n">CraftingRecipe</span><span class="p">):</span>
|
||||
|
|
@ -390,6 +391,7 @@
|
|||
<span class="sd"> We also assume that the crafter has skills set on itself as plain Attributes.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="c1"># all spells require a spellbook and a wand (so there!)</span>
|
||||
<span class="n">tool_tags</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"spellbook"</span><span class="p">,</span> <span class="s2">"wand"</span><span class="p">]</span>
|
||||
|
|
@ -432,15 +434,15 @@
|
|||
<span class="n">skill_value</span> <span class="o">=</span> <span class="n">crafter</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">skill_name</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">skill_value</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">skill_value</span> <span class="o"><</span> <span class="n">min_value</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">error_too_low_skill_level</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">skill_name</span><span class="o">=</span><span class="n">skill_name</span><span class="p">,</span>
|
||||
<span class="n">spell</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">error_too_low_skill_level</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">skill_name</span><span class="o">=</span><span class="n">skill_name</span><span class="p">,</span> <span class="n">spell</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">CraftingValidationError</span>
|
||||
|
||||
<span class="c1"># get the value of the skill to roll</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">skill_roll_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">skill_roll</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">skill_roll_value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">error_no_skill_roll</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">skill_name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">skill_roll</span><span class="p">,</span>
|
||||
<span class="n">spell</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">error_no_skill_roll</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">skill_name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">skill_roll</span><span class="p">,</span> <span class="n">spell</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
|
||||
<span class="k">raise</span> <span class="n">CraftingValidationError</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">do_craft</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
|
|
@ -488,12 +490,13 @@
|
|||
<span class="sd"> need to be created to understand what they mean when used.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="s2">"fireball"</span>
|
||||
<span class="n">skill_requirements</span> <span class="o">=</span> <span class="p">[(</span><span class="s1">'firemagic'</span><span class="p">,</span> <span class="mi">10</span><span class="p">)]</span> <span class="c1"># skill 'firemagic' lvl 10 or higher</span>
|
||||
<span class="n">skill_requirements</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"firemagic"</span><span class="p">,</span> <span class="mi">10</span><span class="p">)]</span> <span class="c1"># skill 'firemagic' lvl 10 or higher</span>
|
||||
<span class="n">skill_roll</span> <span class="o">=</span> <span class="s2">"firemagic"</span>
|
||||
<span class="n">success_message</span> <span class="o">=</span> <span class="s2">"A ball of flame appears!"</span>
|
||||
<span class="n">desired_effects</span> <span class="o">=</span> <span class="p">[(</span><span class="s1">'target_fire_damage'</span><span class="p">,</span> <span class="mi">25</span><span class="p">),</span> <span class="p">(</span><span class="s1">'ranged_attack'</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">),</span> <span class="p">(</span><span class="s1">'mana_cost'</span><span class="p">,</span> <span class="mi">12</span><span class="p">)]</span>
|
||||
<span class="n">failure_effects</span> <span class="o">=</span> <span class="p">[(</span><span class="s1">'self_fire_damage'</span><span class="p">,</span> <span class="mi">5</span><span class="p">),</span> <span class="p">(</span><span class="s1">'mana_cost'</span><span class="p">,</span> <span class="mi">5</span><span class="p">)]</span></div>
|
||||
<span class="n">desired_effects</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"target_fire_damage"</span><span class="p">,</span> <span class="mi">25</span><span class="p">),</span> <span class="p">(</span><span class="s2">"ranged_attack"</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">),</span> <span class="p">(</span><span class="s2">"mana_cost"</span><span class="p">,</span> <span class="mi">12</span><span class="p">)]</span>
|
||||
<span class="n">failure_effects</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"self_fire_damage"</span><span class="p">,</span> <span class="mi">5</span><span class="p">),</span> <span class="p">(</span><span class="s2">"mana_cost"</span><span class="p">,</span> <span class="mi">5</span><span class="p">)]</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="HealingRecipe"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.crafting.example_recipes.html#evennia.contrib.game_systems.crafting.example_recipes.HealingRecipe">[docs]</a><span class="k">class</span> <span class="nc">HealingRecipe</span><span class="p">(</span><span class="n">_MagicRecipe</span><span class="p">):</span>
|
||||
|
|
@ -504,11 +507,12 @@
|
|||
<span class="sd"> need to be created to understand what they mean.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="s2">"heal"</span>
|
||||
<span class="n">skill_requirements</span> <span class="o">=</span> <span class="p">[(</span><span class="s1">'bodymagic'</span><span class="p">,</span> <span class="mi">5</span><span class="p">),</span> <span class="p">(</span><span class="s2">"empathy"</span><span class="p">,</span> <span class="mi">10</span><span class="p">)]</span>
|
||||
<span class="n">skill_requirements</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"bodymagic"</span><span class="p">,</span> <span class="mi">5</span><span class="p">),</span> <span class="p">(</span><span class="s2">"empathy"</span><span class="p">,</span> <span class="mi">10</span><span class="p">)]</span>
|
||||
<span class="n">skill_roll</span> <span class="o">=</span> <span class="s2">"bodymagic"</span>
|
||||
<span class="n">success_message</span> <span class="o">=</span> <span class="s2">"You successfully extend your healing aura."</span>
|
||||
<span class="n">desired_effects</span> <span class="o">=</span> <span class="p">[(</span><span class="s1">'healing'</span><span class="p">,</span> <span class="mi">15</span><span class="p">),</span> <span class="p">(</span><span class="s1">'mana_cost'</span><span class="p">,</span> <span class="mi">5</span><span class="p">)]</span>
|
||||
<span class="n">desired_effects</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"healing"</span><span class="p">,</span> <span class="mi">15</span><span class="p">),</span> <span class="p">(</span><span class="s2">"mana_cost"</span><span class="p">,</span> <span class="mi">5</span><span class="p">)]</span>
|
||||
<span class="n">failure_effects</span> <span class="o">=</span> <span class="p">[]</span></div>
|
||||
|
||||
|
||||
|
|
@ -520,7 +524,8 @@
|
|||
<span class="sd"> cast <spell> <target></span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s1">'cast'</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"cast"</span>
|
||||
|
||||
<div class="viewcode-block" id="CmdCast.parse"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.crafting.example_recipes.html#evennia.contrib.game_systems.crafting.example_recipes.CmdCast.parse">[docs]</a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -530,8 +535,8 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
<span class="n">target</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="s1">' '</span> <span class="ow">in</span> <span class="n">args</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">spellname</span><span class="p">,</span> <span class="o">*</span><span class="n">target</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">' '</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="s2">" "</span> <span class="ow">in</span> <span class="n">args</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">spellname</span><span class="p">,</span> <span class="o">*</span><span class="n">target</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">spellname</span> <span class="o">=</span> <span class="n">args</span>
|
||||
|
||||
|
|
@ -554,8 +559,9 @@
|
|||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="c1"># if this completes without an exception, the caster will have</span>
|
||||
<span class="c1"># a new magic_effect set on themselves, ready to use or apply in some way.</span>
|
||||
<span class="n">success</span><span class="p">,</span> <span class="n">effects</span> <span class="o">=</span> <span class="n">craft</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">spellname</span><span class="p">,</span> <span class="o">*</span><span class="n">possible_tools</span><span class="p">,</span>
|
||||
<span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">success</span><span class="p">,</span> <span class="n">effects</span> <span class="o">=</span> <span class="n">craft</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">spellname</span><span class="p">,</span> <span class="o">*</span><span class="n">possible_tools</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">CraftingValidationError</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
|
||||
|
|
@ -569,8 +575,10 @@
|
|||
<span class="c1"># (which could be yourself) by a number of health points given by the recipe.</span>
|
||||
<span class="n">effect_txt</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">eff</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">eff</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">eff</span> <span class="ow">in</span> <span class="n">effects</span><span class="p">)</span>
|
||||
<span class="n">success_txt</span> <span class="o">=</span> <span class="s2">"|gsucceeded|n"</span> <span class="k">if</span> <span class="n">success</span> <span class="k">else</span> <span class="s2">"|rfailed|n"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Casting the spell </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">spellname</span><span class="si">}</span><span class="s2"> on </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">success_txt</span><span class="si">}</span><span class="s2">, "</span>
|
||||
<span class="sa">f</span><span class="s2">"causing the following effects: </span><span class="si">{</span><span class="n">effect_txt</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span></div></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Casting the spell </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">spellname</span><span class="si">}</span><span class="s2"> on </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">success_txt</span><span class="si">}</span><span class="s2">, "</span>
|
||||
<span class="sa">f</span><span class="s2">"causing the following effects: </span><span class="si">{</span><span class="n">effect_txt</span><span class="si">}</span><span class="s2">."</span>
|
||||
<span class="p">)</span></div></div>
|
||||
</pre></div>
|
||||
|
||||
<div class="clearer"></div>
|
||||
|
|
|
|||
|
|
@ -207,7 +207,7 @@
|
|||
<span class="k">pass</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestCraftingRecipe.test_error_format"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.crafting.tests.html#evennia.contrib.game_systems.crafting.tests.TestCraftingRecipe.test_error_format">[docs]</a> <span class="k">def</span> <span class="nf">test_error_format</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Test the automatic error formatter """</span>
|
||||
<span class="sd">"""Test the automatic error formatter"""</span>
|
||||
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons3</span>
|
||||
<span class="p">)</span>
|
||||
|
|
@ -470,7 +470,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestCraftingRecipe.test_craft_tool_order__fail"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.crafting.tests.html#evennia.contrib.game_systems.crafting.tests.TestCraftingRecipe.test_craft_tool_order__fail">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_tool_order__fail</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Strict tool-order recipe fail """</span>
|
||||
<span class="sd">"""Strict tool-order recipe fail"""</span>
|
||||
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons3</span>
|
||||
<span class="p">)</span>
|
||||
|
|
@ -493,7 +493,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">assertIsNotNone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestCraftingRecipe.test_craft_cons_order__fail"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.crafting.tests.html#evennia.contrib.game_systems.crafting.tests.TestCraftingRecipe.test_craft_cons_order__fail">[docs]</a> <span class="k">def</span> <span class="nf">test_craft_cons_order__fail</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Strict tool-order recipe fail """</span>
|
||||
<span class="sd">"""Strict tool-order recipe fail"""</span>
|
||||
<span class="n">recipe</span> <span class="o">=</span> <span class="n">_MockRecipe</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">crafter</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tool2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons3</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cons1</span>
|
||||
<span class="p">)</span>
|
||||
|
|
@ -695,7 +695,10 @@
|
|||
|
||||
|
||||
<div class="viewcode-block" id="TestCraftCommand"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.crafting.tests.html#evennia.contrib.game_systems.crafting.tests.TestCraftCommand">[docs]</a><span class="nd">@mock</span><span class="o">.</span><span class="n">patch</span><span class="p">(</span><span class="s2">"evennia.contrib.game_systems.crafting.crafting._load_recipes"</span><span class="p">,</span> <span class="n">new</span><span class="o">=</span><span class="n">mock</span><span class="o">.</span><span class="n">MagicMock</span><span class="p">())</span>
|
||||
<span class="nd">@mock</span><span class="o">.</span><span class="n">patch</span><span class="p">(</span><span class="s2">"evennia.contrib.game_systems.crafting.crafting._RECIPE_CLASSES"</span><span class="p">,</span> <span class="n">new</span><span class="o">=</span><span class="p">{</span><span class="s2">"testrecipe"</span><span class="p">:</span> <span class="n">_MockRecipe</span><span class="p">})</span>
|
||||
<span class="nd">@mock</span><span class="o">.</span><span class="n">patch</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.game_systems.crafting.crafting._RECIPE_CLASSES"</span><span class="p">,</span>
|
||||
<span class="n">new</span><span class="o">=</span><span class="p">{</span><span class="s2">"testrecipe"</span><span class="p">:</span> <span class="n">_MockRecipe</span><span class="p">},</span>
|
||||
<span class="p">)</span>
|
||||
<span class="nd">@override_settings</span><span class="p">(</span><span class="n">CRAFT_RECIPE_MODULES</span><span class="o">=</span><span class="p">[])</span>
|
||||
<span class="k">class</span> <span class="nc">TestCraftCommand</span><span class="p">(</span><span class="n">BaseEvenniaCommandTest</span><span class="p">):</span>
|
||||
<span class="sd">"""Test the crafting command"""</span>
|
||||
|
|
|
|||
|
|
@ -64,7 +64,9 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
<span class="n">gendersub</span><span class="o">.</span><span class="n">_RE_GENDER_PRONOUN</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="n">char</span><span class="o">.</span><span class="n">_get_pronoun</span><span class="p">,</span> <span class="n">txt</span><span class="p">),</span> <span class="s2">"Test their gender"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">with</span> <span class="n">patch</span><span class="p">(</span><span class="s2">"evennia.contrib.game_systems.gendersub.gendersub.DefaultCharacter.msg"</span><span class="p">)</span> <span class="k">as</span> <span class="n">mock_msg</span><span class="p">:</span>
|
||||
<span class="k">with</span> <span class="n">patch</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.game_systems.gendersub.gendersub.DefaultCharacter.msg"</span>
|
||||
<span class="p">)</span> <span class="k">as</span> <span class="n">mock_msg</span><span class="p">:</span>
|
||||
<span class="n">char</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">gender</span> <span class="o">=</span> <span class="s2">"female"</span>
|
||||
<span class="n">char</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Test |p gender"</span><span class="p">)</span>
|
||||
<span class="n">mock_msg</span><span class="o">.</span><span class="n">assert_called_with</span><span class="p">(</span><span class="s2">"Test her gender"</span><span class="p">,</span> <span class="n">from_obj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></div></div>
|
||||
|
|
|
|||
|
|
@ -346,6 +346,7 @@
|
|||
<span class="sd"> A character able to participate in turn-based combat. Has attributes for current</span>
|
||||
<span class="sd"> and maximum HP, and access to combat commands.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">rules</span> <span class="o">=</span> <span class="n">COMBAT_RULES</span>
|
||||
|
||||
<div class="viewcode-block" id="TBBasicCharacter.at_object_creation"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_basic.html#evennia.contrib.game_systems.turnbattle.tb_basic.TBBasicCharacter.at_object_creation">[docs]</a> <span class="k">def</span> <span class="nf">at_object_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -285,6 +285,7 @@
|
|||
<span class="sd"> Fights persist until only one participant is left with any HP or all</span>
|
||||
<span class="sd"> remaining participants choose to end the combat with the 'disengage' command.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">rules</span> <span class="o">=</span> <span class="n">COMBAT_RULES</span></div>
|
||||
|
||||
|
||||
|
|
@ -300,6 +301,7 @@
|
|||
<span class="sd"> A weapon which can be wielded in combat with the 'wield' command.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">rules</span> <span class="o">=</span> <span class="n">COMBAT_RULES</span>
|
||||
|
||||
<div class="viewcode-block" id="TBEWeapon.at_object_creation"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_equip.html#evennia.contrib.game_systems.turnbattle.tb_equip.TBEWeapon.at_object_creation">[docs]</a> <span class="k">def</span> <span class="nf">at_object_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -555,8 +557,9 @@
|
|||
<span class="n">weapon</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">candidates</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">weapon</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">weapon</span><span class="o">.</span><span class="n">is_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.game_systems.turnbattle.tb_equip.TBEWeapon"</span><span class="p">,</span>
|
||||
<span class="n">exact</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">weapon</span><span class="o">.</span><span class="n">is_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.game_systems.turnbattle.tb_equip.TBEWeapon"</span><span class="p">,</span> <span class="n">exact</span><span class="o">=</span><span class="kc">True</span>
|
||||
<span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"That's not a weapon!"</span><span class="p">)</span>
|
||||
<span class="c1"># Remember to update the path to the weapon typeclass if you move this module!</span>
|
||||
<span class="k">return</span>
|
||||
|
|
@ -639,8 +642,9 @@
|
|||
<span class="n">armor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">candidates</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">armor</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">armor</span><span class="o">.</span><span class="n">is_typeclass</span><span class="p">(</span><span class="s2">"evennia.contrib.game_systems.turnbattle.tb_equip.TBEArmor"</span><span class="p">,</span>
|
||||
<span class="n">exact</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">armor</span><span class="o">.</span><span class="n">is_typeclass</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.game_systems.turnbattle.tb_equip.TBEArmor"</span><span class="p">,</span> <span class="n">exact</span><span class="o">=</span><span class="kc">True</span>
|
||||
<span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"That's not armor!"</span><span class="p">)</span>
|
||||
<span class="c1"># Remember to update the path to the armor typeclass if you move this module!</span>
|
||||
<span class="k">return</span>
|
||||
|
|
|
|||
|
|
@ -146,7 +146,6 @@
|
|||
|
||||
|
||||
<div class="viewcode-block" id="ItemCombatRules"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_items.html#evennia.contrib.game_systems.turnbattle.tb_items.ItemCombatRules">[docs]</a><span class="k">class</span> <span class="nc">ItemCombatRules</span><span class="p">(</span><span class="n">tb_basic</span><span class="o">.</span><span class="n">BasicCombatRules</span><span class="p">):</span>
|
||||
|
||||
<div class="viewcode-block" id="ItemCombatRules.get_attack"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_items.html#evennia.contrib.game_systems.turnbattle.tb_items.ItemCombatRules.get_attack">[docs]</a> <span class="k">def</span> <span class="nf">get_attack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attacker</span><span class="p">,</span> <span class="n">defender</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Returns a value for an attack roll.</span>
|
||||
|
|
@ -741,7 +740,7 @@
|
|||
<span class="n">AMULET_OF_WEAKNESS</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"The Amulet of Weakness"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"The one who holds this amulet can call upon its power to gain great weakness. "</span>
|
||||
<span class="s2">"It's not a terribly useful artifact."</span><span class="p">,</span>
|
||||
<span class="s2">"It's not a terribly useful artifact."</span><span class="p">,</span>
|
||||
<span class="s2">"item_func"</span><span class="p">:</span> <span class="s2">"add_condition"</span><span class="p">,</span>
|
||||
<span class="s2">"item_selfonly"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<span class="s2">"item_kwargs"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"conditions"</span><span class="p">:</span> <span class="p">[(</span><span class="s2">"Damage Down"</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="p">(</span><span class="s2">"Accuracy Down"</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="p">(</span><span class="s2">"Defense Down"</span><span class="p">,</span> <span class="mi">3</span><span class="p">)]},</span>
|
||||
|
|
|
|||
|
|
@ -135,8 +135,8 @@
|
|||
<span class="sd">in the docstring for each function.</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<div class="viewcode-block" id="MagicCombatRules"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_magic.html#evennia.contrib.game_systems.turnbattle.tb_magic.MagicCombatRules">[docs]</a><span class="k">class</span> <span class="nc">MagicCombatRules</span><span class="p">(</span><span class="n">tb_basic</span><span class="o">.</span><span class="n">BasicCombatRules</span><span class="p">):</span>
|
||||
|
||||
<div class="viewcode-block" id="MagicCombatRules"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_magic.html#evennia.contrib.game_systems.turnbattle.tb_magic.MagicCombatRules">[docs]</a><span class="k">class</span> <span class="nc">MagicCombatRules</span><span class="p">(</span><span class="n">tb_basic</span><span class="o">.</span><span class="n">BasicCombatRules</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="MagicCombatRules.spell_healing"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_magic.html#evennia.contrib.game_systems.turnbattle.tb_magic.MagicCombatRules.spell_healing">[docs]</a> <span class="k">def</span> <span class="nf">spell_healing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">caster</span><span class="p">,</span> <span class="n">spell_name</span><span class="p">,</span> <span class="n">targets</span><span class="p">,</span> <span class="n">cost</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Spell that restores HP to a target or targets.</span>
|
||||
|
|
@ -367,11 +367,7 @@
|
|||
<span class="s2">"attack_name"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"A jet of flame"</span><span class="p">,</span> <span class="s2">"jets of flame"</span><span class="p">),</span>
|
||||
<span class="s2">"damage_range"</span><span class="p">:</span> <span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">35</span><span class="p">),</span>
|
||||
<span class="p">},</span>
|
||||
<span class="s2">"cure wounds"</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s2">"spellfunc"</span><span class="p">:</span> <span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">spell_healing</span><span class="p">,</span>
|
||||
<span class="s2">"target"</span><span class="p">:</span> <span class="s2">"anychar"</span><span class="p">,</span>
|
||||
<span class="s2">"cost"</span><span class="p">:</span> <span class="mi">5</span>
|
||||
<span class="p">},</span>
|
||||
<span class="s2">"cure wounds"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"spellfunc"</span><span class="p">:</span> <span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">spell_healing</span><span class="p">,</span> <span class="s2">"target"</span><span class="p">:</span> <span class="s2">"anychar"</span><span class="p">,</span> <span class="s2">"cost"</span><span class="p">:</span> <span class="mi">5</span><span class="p">},</span>
|
||||
<span class="s2">"mass cure wounds"</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s2">"spellfunc"</span><span class="p">:</span> <span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">spell_healing</span><span class="p">,</span>
|
||||
<span class="s2">"target"</span><span class="p">:</span> <span class="s2">"anychar"</span><span class="p">,</span>
|
||||
|
|
@ -418,6 +414,7 @@
|
|||
<span class="sd"> and maximum HP, access to combat commands and magic.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">rules</span> <span class="o">=</span> <span class="n">COMBAT_RULES</span>
|
||||
|
||||
<div class="viewcode-block" id="TBMagicCharacter.at_object_creation"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_magic.html#evennia.contrib.game_systems.turnbattle.tb_magic.TBMagicCharacter.at_object_creation">[docs]</a> <span class="k">def</span> <span class="nf">at_object_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -164,7 +164,6 @@
|
|||
|
||||
|
||||
<div class="viewcode-block" id="RangedCombatRules"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_range.html#evennia.contrib.game_systems.turnbattle.tb_range.RangedCombatRules">[docs]</a><span class="k">class</span> <span class="nc">RangedCombatRules</span><span class="p">(</span><span class="n">tb_basic</span><span class="o">.</span><span class="n">BasicCombatRules</span><span class="p">):</span>
|
||||
|
||||
<div class="viewcode-block" id="RangedCombatRules.get_attack"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_range.html#evennia.contrib.game_systems.turnbattle.tb_range.RangedCombatRules.get_attack">[docs]</a> <span class="k">def</span> <span class="nf">get_attack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attacker</span><span class="p">,</span> <span class="n">defender</span><span class="p">,</span> <span class="n">attack_type</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Returns a value for an attack roll.</span>
|
||||
|
|
@ -196,7 +195,7 @@
|
|||
<span class="n">attack_value</span> <span class="o">-=</span> <span class="mi">15</span>
|
||||
<span class="k">return</span> <span class="n">attack_value</span></div>
|
||||
|
||||
<div class="viewcode-block" id="RangedCombatRules.get_defense"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_range.html#evennia.contrib.game_systems.turnbattle.tb_range.RangedCombatRules.get_defense">[docs]</a> <span class="k">def</span> <span class="nf">get_defense</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attacker</span><span class="p">,</span> <span class="n">defender</span><span class="p">,</span> <span class="n">attack_type</span><span class="o">=</span><span class="s1">'melee'</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="RangedCombatRules.get_defense"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_range.html#evennia.contrib.game_systems.turnbattle.tb_range.RangedCombatRules.get_defense">[docs]</a> <span class="k">def</span> <span class="nf">get_defense</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attacker</span><span class="p">,</span> <span class="n">defender</span><span class="p">,</span> <span class="n">attack_type</span><span class="o">=</span><span class="s2">"melee"</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Returns a value for defense, which an attack roll must equal or exceed in order</span>
|
||||
<span class="sd"> for an attack to hit.</span>
|
||||
|
|
@ -326,8 +325,9 @@
|
|||
<span class="k">if</span> <span class="n">thing</span> <span class="o">!=</span> <span class="n">mover</span> <span class="ow">and</span> <span class="n">thing</span> <span class="o">!=</span> <span class="n">target</span><span class="p">:</span>
|
||||
<span class="c1"># Move away from each object closer to the target than you, if it's also closer to</span>
|
||||
<span class="c1"># you than you are to the target.</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_range</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">thing</span><span class="p">)</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_range</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">thing</span><span class="p">)</span>
|
||||
<span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_range</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">thing</span><span class="p">)</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_range</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">target</span><span class="p">)):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_range</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">thing</span><span class="p">)</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_range</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">thing</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_range</span><span class="p">(</span>
|
||||
<span class="n">mover</span><span class="p">,</span> <span class="n">thing</span>
|
||||
<span class="p">)</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_range</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">distance_inc</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">thing</span><span class="p">)</span>
|
||||
<span class="c1"># Move away from anything your target is engaged with</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_range</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">thing</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
|
|
@ -338,8 +338,9 @@
|
|||
<span class="c1"># Then, move away from your target.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">distance_inc</span><span class="p">(</span><span class="n">mover</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="RangedCombatRules.resolve_attack"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_range.html#evennia.contrib.game_systems.turnbattle.tb_range.RangedCombatRules.resolve_attack">[docs]</a> <span class="k">def</span> <span class="nf">resolve_attack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attacker</span><span class="p">,</span> <span class="n">defender</span><span class="p">,</span> <span class="n">attack_value</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">defense_value</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">attack_type</span><span class="o">=</span><span class="s1">'melee'</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="RangedCombatRules.resolve_attack"><a class="viewcode-back" href="../../../../../api/evennia.contrib.game_systems.turnbattle.tb_range.html#evennia.contrib.game_systems.turnbattle.tb_range.RangedCombatRules.resolve_attack">[docs]</a> <span class="k">def</span> <span class="nf">resolve_attack</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span> <span class="n">attacker</span><span class="p">,</span> <span class="n">defender</span><span class="p">,</span> <span class="n">attack_value</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">defense_value</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">attack_type</span><span class="o">=</span><span class="s2">"melee"</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Resolves an attack and outputs the result.</span>
|
||||
|
||||
|
|
@ -538,6 +539,7 @@
|
|||
<span class="sd"> A character able to participate in turn-based combat. Has attributes for current</span>
|
||||
<span class="sd"> and maximum HP, and access to combat commands.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">rules</span> <span class="o">=</span> <span class="n">COMBAT_RULES</span></div>
|
||||
|
||||
|
||||
|
|
@ -839,15 +841,17 @@
|
|||
<span class="n">in_melee</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">target</span> <span class="ow">in</span> <span class="n">attacker</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">combat_range</span><span class="p">:</span>
|
||||
<span class="c1"># Object is engaged and has HP</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rules</span><span class="o">.</span><span class="n">get_range</span><span class="p">(</span><span class="n">attacker</span><span class="p">,</span> <span class="n">defender</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span>
|
||||
<span class="ow">and</span> <span class="n">target</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span> <span class="ow">and</span> <span class="n">target</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">rules</span><span class="o">.</span><span class="n">get_range</span><span class="p">(</span><span class="n">attacker</span><span class="p">,</span> <span class="n">defender</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span>
|
||||
<span class="ow">and</span> <span class="n">target</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span>
|
||||
<span class="ow">and</span> <span class="n">target</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
<span class="p">):</span>
|
||||
<span class="n">in_melee</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">target</span><span class="p">)</span> <span class="c1"># Add to list of targets in melee</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">in_melee</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"You can't shoot because there are fighters engaged with you (</span><span class="si">%s</span><span class="s2">) - you need "</span>
|
||||
<span class="s2">"to retreat! (see: help withdraw)"</span>
|
||||
<span class="o">%</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">in_melee</span><span class="p">)</span>
|
||||
<span class="s2">"to retreat! (see: help withdraw)"</span> <span class="o">%</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">in_melee</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
|
|
|
|||
|
|
@ -175,8 +175,9 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span> <span class="o">==</span> <span class="mi">7</span><span class="p">)</span>
|
||||
<span class="c1"># Resolve attack</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span> <span class="o">=</span> <span class="mi">40</span>
|
||||
<span class="n">tb_basic</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">resolve_attack</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="p">,</span>
|
||||
<span class="n">attack_value</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">defense_value</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
|
||||
<span class="n">tb_basic</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">resolve_attack</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="p">,</span> <span class="n">attack_value</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">defense_value</span><span class="o">=</span><span class="mi">10</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span> <span class="o"><</span> <span class="mi">40</span><span class="p">)</span>
|
||||
<span class="c1"># Combat cleanup</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">Combat_attribute</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
|
@ -269,7 +270,9 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span> <span class="o">==</span> <span class="mi">7</span><span class="p">)</span>
|
||||
<span class="c1"># Resolve attack</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span> <span class="o">=</span> <span class="mi">40</span>
|
||||
<span class="n">tb_equip</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">resolve_attack</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="p">,</span> <span class="n">attack_value</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">defense_value</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
|
||||
<span class="n">tb_equip</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">resolve_attack</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="p">,</span> <span class="n">attack_value</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">defense_value</span><span class="o">=</span><span class="mi">10</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span> <span class="o"><</span> <span class="mi">40</span><span class="p">)</span>
|
||||
<span class="c1"># Combat cleanup</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">Combat_attribute</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
|
@ -347,12 +350,14 @@
|
|||
<span class="n">initiative</span> <span class="o">=</span> <span class="n">tb_range</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">roll_init</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="n">initiative</span> <span class="o">>=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">initiative</span> <span class="o"><=</span> <span class="mi">1000</span><span class="p">)</span>
|
||||
<span class="c1"># Attack roll</span>
|
||||
<span class="n">attack_roll</span> <span class="o">=</span> <span class="n">tb_range</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">get_attack</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="p">,</span>
|
||||
<span class="n">attack_type</span><span class="o">=</span><span class="s2">"test"</span><span class="p">)</span>
|
||||
<span class="n">attack_roll</span> <span class="o">=</span> <span class="n">tb_range</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">get_attack</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="p">,</span> <span class="n">attack_type</span><span class="o">=</span><span class="s2">"test"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="n">attack_roll</span> <span class="o">>=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">attack_roll</span> <span class="o"><=</span> <span class="mi">100</span><span class="p">)</span>
|
||||
<span class="c1"># Defense roll</span>
|
||||
<span class="n">defense_roll</span> <span class="o">=</span> <span class="n">tb_range</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">get_defense</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="p">,</span>
|
||||
<span class="n">attack_type</span><span class="o">=</span><span class="s2">"test"</span><span class="p">)</span>
|
||||
<span class="n">defense_roll</span> <span class="o">=</span> <span class="n">tb_range</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">get_defense</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="p">,</span> <span class="n">attack_type</span><span class="o">=</span><span class="s2">"test"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="n">defense_roll</span> <span class="o">==</span> <span class="mi">50</span><span class="p">)</span>
|
||||
<span class="c1"># Damage roll</span>
|
||||
<span class="n">damage_roll</span> <span class="o">=</span> <span class="n">tb_range</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">get_damage</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="p">)</span>
|
||||
|
|
@ -478,8 +483,9 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span> <span class="o">==</span> <span class="mi">7</span><span class="p">)</span>
|
||||
<span class="c1"># Resolve attack</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span> <span class="o">=</span> <span class="mi">40</span>
|
||||
<span class="n">tb_items</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">resolve_attack</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="p">,</span> <span class="n">attack_value</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span>
|
||||
<span class="n">defense_value</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
|
||||
<span class="n">tb_items</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">resolve_attack</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="p">,</span> <span class="n">attack_value</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">defense_value</span><span class="o">=</span><span class="mi">10</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span> <span class="o"><</span> <span class="mi">40</span><span class="p">)</span>
|
||||
<span class="c1"># Combat cleanup</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">Combat_attribute</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
|
@ -597,8 +603,9 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span> <span class="o">==</span> <span class="mi">7</span><span class="p">)</span>
|
||||
<span class="c1"># Resolve attack</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span> <span class="o">=</span> <span class="mi">40</span>
|
||||
<span class="n">tb_magic</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">resolve_attack</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="p">,</span> <span class="n">attack_value</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span>
|
||||
<span class="n">defense_value</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
|
||||
<span class="n">tb_magic</span><span class="o">.</span><span class="n">COMBAT_RULES</span><span class="o">.</span><span class="n">resolve_attack</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="p">,</span> <span class="n">attack_value</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">defense_value</span><span class="o">=</span><span class="mi">10</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">defender</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">hp</span> <span class="o"><</span> <span class="mi">40</span><span class="p">)</span>
|
||||
<span class="c1"># Combat cleanup</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attacker</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">Combat_attribute</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@
|
|||
<span class="sd"> are given, the target is a location on the XYZGrid.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_search_by_xyz</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inp</span><span class="p">):</span>
|
||||
<span class="n">inp</span> <span class="o">=</span> <span class="n">inp</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"()"</span><span class="p">)</span>
|
||||
<span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="o">*</span><span class="n">Z</span> <span class="o">=</span> <span class="n">inp</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
|
|
@ -111,8 +112,10 @@
|
|||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">xyz</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">xyz</span>
|
||||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Z-coordinate is also required since you are not currently "</span>
|
||||
<span class="s2">"in a room with a Z coordinate of its own."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"Z-coordinate is also required since you are not currently "</span>
|
||||
<span class="s2">"in a room with a Z coordinate of its own."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">InterruptCommand</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">Z</span> <span class="o">=</span> <span class="n">xyz</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
|
||||
|
|
@ -176,9 +179,11 @@
|
|||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">location</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage: open <new exit>[;alias...][:typeclass]"</span>
|
||||
<span class="s2">"[,<return exit>[;alias..][:typeclass]]] "</span>
|
||||
<span class="s2">"= <destination or (X,Y,Z)>"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"Usage: open <new exit>[;alias...][:typeclass]"</span>
|
||||
<span class="s2">"[,<return exit>[;alias..][:typeclass]]] "</span>
|
||||
<span class="s2">"= <destination or (X,Y,Z)>"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">InterruptCommand</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You cannot create an exit from a None-location."</span><span class="p">)</span>
|
||||
|
|
@ -226,6 +231,7 @@
|
|||
<span class="sd"> Builders can optionally specify a specific grid coordinate (X,Y) to go to.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"goto"</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="s2">"path"</span>
|
||||
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"General"</span>
|
||||
|
|
@ -249,11 +255,19 @@
|
|||
|
||||
<span class="k">def</span> <span class="nf">_search_by_key_and_alias</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inp</span><span class="p">,</span> <span class="n">xyz_start</span><span class="p">):</span>
|
||||
<span class="n">Z</span> <span class="o">=</span> <span class="n">xyz_start</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="n">candidates</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">XYZRoom</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter_xyz</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">,</span> <span class="n">Z</span><span class="p">)))</span>
|
||||
<span class="n">candidates</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">XYZRoom</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter_xyz</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">,</span> <span class="n">Z</span><span class="p">)))</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">inp</span><span class="p">,</span> <span class="n">candidates</span><span class="o">=</span><span class="n">candidates</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_auto_step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">xymap</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">directions</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">step_sequence</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">_auto_step</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">session</span><span class="p">,</span>
|
||||
<span class="n">target</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">xymap</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">directions</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">step_sequence</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">step</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
|
||||
<span class="n">path_data</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">xy_path_data</span>
|
||||
|
||||
|
|
@ -263,8 +277,12 @@
|
|||
<span class="c1"># stop any old task in its tracks</span>
|
||||
<span class="n">path_data</span><span class="o">.</span><span class="n">task</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span>
|
||||
<span class="n">path_data</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">xy_path_data</span> <span class="o">=</span> <span class="n">PathData</span><span class="p">(</span>
|
||||
<span class="n">target</span><span class="o">=</span><span class="n">target</span><span class="p">,</span> <span class="n">xymap</span><span class="o">=</span><span class="n">xymap</span><span class="p">,</span> <span class="n">directions</span><span class="o">=</span><span class="n">directions</span><span class="p">,</span>
|
||||
<span class="n">step_sequence</span><span class="o">=</span><span class="n">step_sequence</span><span class="p">,</span> <span class="n">task</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">target</span><span class="o">=</span><span class="n">target</span><span class="p">,</span>
|
||||
<span class="n">xymap</span><span class="o">=</span><span class="n">xymap</span><span class="p">,</span>
|
||||
<span class="n">directions</span><span class="o">=</span><span class="n">directions</span><span class="p">,</span>
|
||||
<span class="n">step_sequence</span><span class="o">=</span><span class="n">step_sequence</span><span class="p">,</span>
|
||||
<span class="n">task</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">step</span> <span class="ow">and</span> <span class="n">path_data</span><span class="p">:</span>
|
||||
|
||||
|
|
@ -327,7 +345,7 @@
|
|||
<span class="n">xymap</span><span class="o">=</span><span class="n">path_data</span><span class="o">.</span><span class="n">xymap</span><span class="p">,</span>
|
||||
<span class="n">directions</span><span class="o">=</span><span class="n">directions</span><span class="p">,</span>
|
||||
<span class="n">step_sequence</span><span class="o">=</span><span class="n">step_sequence</span><span class="p">,</span>
|
||||
<span class="n">task</span><span class="o">=</span><span class="kc">None</span>
|
||||
<span class="n">task</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># the map can itself tell the stepper to stop the auto-step prematurely</span>
|
||||
<span class="n">interrupt_node_or_link</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
|
@ -343,7 +361,8 @@
|
|||
|
||||
<span class="c1"># the exit name does not need to be the same as the cardinal direction!</span>
|
||||
<span class="n">exit_name</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span> <span class="o">=</span> <span class="n">first_link</span><span class="o">.</span><span class="n">spawn_aliases</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">direction</span><span class="p">,</span> <span class="n">current_node</span><span class="o">.</span><span class="n">direction_spawn_defaults</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">direction</span><span class="p">,</span> <span class="p">(</span><span class="s1">'unknown'</span><span class="p">,</span> <span class="p">)))</span>
|
||||
<span class="n">direction</span><span class="p">,</span> <span class="n">current_node</span><span class="o">.</span><span class="n">direction_spawn_defaults</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">direction</span><span class="p">,</span> <span class="p">(</span><span class="s2">"unknown"</span><span class="p">,))</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">exit_obj</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">exit_name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">exit_obj</span><span class="p">:</span>
|
||||
|
|
@ -357,13 +376,15 @@
|
|||
<span class="c1"># premature stop of pathfind-step because of map node/link of interrupt type</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">interrupt_node_or_link</span><span class="p">,</span> <span class="s2">"node_index"</span><span class="p">):</span>
|
||||
<span class="n">message</span> <span class="o">=</span> <span class="n">exit_obj</span><span class="o">.</span><span class="n">destination</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="s2">"xyz_path_interrupt_msg"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">default_xyz_path_interrupt_msg</span><span class="p">)</span>
|
||||
<span class="s2">"xyz_path_interrupt_msg"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">default_xyz_path_interrupt_msg</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># we move into the node/room and then stop</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">execute_cmd</span><span class="p">(</span><span class="n">exit_name</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># if the link is interrupted we don't cross it at all</span>
|
||||
<span class="n">message</span> <span class="o">=</span> <span class="n">exit_obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="s2">"xyz_path_interrupt_msg"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">default_xyz_path_interrupt_msg</span><span class="p">)</span>
|
||||
<span class="s2">"xyz_path_interrupt_msg"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">default_xyz_path_interrupt_msg</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
|
|
@ -377,7 +398,7 @@
|
|||
<span class="n">xymap</span><span class="o">=</span><span class="n">path_data</span><span class="o">.</span><span class="n">xymap</span><span class="p">,</span>
|
||||
<span class="n">directions</span><span class="o">=</span><span class="n">path_data</span><span class="o">.</span><span class="n">directions</span><span class="p">,</span>
|
||||
<span class="n">step_sequence</span><span class="o">=</span><span class="n">path_data</span><span class="o">.</span><span class="n">step_sequence</span><span class="p">,</span>
|
||||
<span class="n">task</span><span class="o">=</span><span class="n">delay</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">auto_step_delay</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_auto_step</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span> <span class="n">session</span><span class="p">)</span>
|
||||
<span class="n">task</span><span class="o">=</span><span class="n">delay</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">auto_step_delay</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_auto_step</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span> <span class="n">session</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="CmdGoto.func"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.commands.html#evennia.contrib.grid.xyzgrid.commands.CmdGoto.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -386,7 +407,7 @@
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">caller</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
<span class="n">goto_mode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmdname</span> <span class="o">==</span> <span class="s1">'goto'</span>
|
||||
<span class="n">goto_mode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmdname</span> <span class="o">==</span> <span class="s2">"goto"</span>
|
||||
|
||||
<span class="c1"># check if we have an existing path</span>
|
||||
<span class="n">path_data</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">xy_path_data</span>
|
||||
|
|
@ -401,8 +422,7 @@
|
|||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Aborted auto-walking to </span><span class="si">{</span><span class="n">target_name</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="c1"># goto/path-command will show current path</span>
|
||||
<span class="n">current_path</span> <span class="o">=</span> <span class="n">list_to_string</span><span class="p">(</span>
|
||||
<span class="p">[</span><span class="sa">f</span><span class="s2">"|w</span><span class="si">{</span><span class="n">step</span><span class="si">}</span><span class="s2">|n"</span> <span class="k">for</span> <span class="n">step</span> <span class="ow">in</span> <span class="n">path_data</span><span class="o">.</span><span class="n">directions</span><span class="p">])</span>
|
||||
<span class="n">current_path</span> <span class="o">=</span> <span class="n">list_to_string</span><span class="p">([</span><span class="sa">f</span><span class="s2">"|w</span><span class="si">{</span><span class="n">step</span><span class="si">}</span><span class="s2">|n"</span> <span class="k">for</span> <span class="n">step</span> <span class="ow">in</span> <span class="n">path_data</span><span class="o">.</span><span class="n">directions</span><span class="p">])</span>
|
||||
<span class="n">moving</span> <span class="o">=</span> <span class="s2">"(moving)"</span> <span class="k">if</span> <span class="n">task</span> <span class="ow">and</span> <span class="n">task</span><span class="o">.</span><span class="n">active</span><span class="p">()</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Path to </span><span class="si">{</span><span class="n">target_name</span><span class="si">}{</span><span class="n">moving</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">current_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -447,12 +467,21 @@
|
|||
<span class="n">xy_end</span> <span class="o">=</span> <span class="n">xyz_end</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="n">directions</span><span class="p">,</span> <span class="n">step_sequence</span> <span class="o">=</span> <span class="n">xymap</span><span class="o">.</span><span class="n">get_shortest_path</span><span class="p">(</span><span class="n">xy_start</span><span class="p">,</span> <span class="n">xy_end</span><span class="p">)</span>
|
||||
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"There are </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">directions</span><span class="p">)</span><span class="si">}</span><span class="s2"> steps to </span><span class="si">{</span><span class="n">target</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span><span class="si">}</span><span class="s2">: "</span>
|
||||
<span class="sa">f</span><span class="s2">"|w</span><span class="si">{</span><span class="n">list_to_string</span><span class="p">(</span><span class="n">directions</span><span class="p">,</span> <span class="n">endsep</span><span class="o">=</span><span class="s1">'|n, and finally|w'</span><span class="p">)</span><span class="si">}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"There are </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">directions</span><span class="p">)</span><span class="si">}</span><span class="s2"> steps to </span><span class="si">{</span><span class="n">target</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span><span class="si">}</span><span class="s2">: "</span>
|
||||
<span class="sa">f</span><span class="s2">"|w</span><span class="si">{</span><span class="n">list_to_string</span><span class="p">(</span><span class="n">directions</span><span class="p">,</span> <span class="n">endsep</span><span class="o">=</span><span class="s1">'|n, and finally|w'</span><span class="p">)</span><span class="si">}</span><span class="s2">|n"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># create data for display and start stepping if we used goto</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_auto_step</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="n">target</span><span class="p">,</span> <span class="n">xymap</span><span class="o">=</span><span class="n">xymap</span><span class="p">,</span>
|
||||
<span class="n">directions</span><span class="o">=</span><span class="n">directions</span><span class="p">,</span> <span class="n">step_sequence</span><span class="o">=</span><span class="n">step_sequence</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="n">goto_mode</span><span class="p">)</span></div></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_auto_step</span><span class="p">(</span>
|
||||
<span class="n">caller</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">,</span>
|
||||
<span class="n">target</span><span class="o">=</span><span class="n">target</span><span class="p">,</span>
|
||||
<span class="n">xymap</span><span class="o">=</span><span class="n">xymap</span><span class="p">,</span>
|
||||
<span class="n">directions</span><span class="o">=</span><span class="n">directions</span><span class="p">,</span>
|
||||
<span class="n">step_sequence</span><span class="o">=</span><span class="n">step_sequence</span><span class="p">,</span>
|
||||
<span class="n">step</span><span class="o">=</span><span class="n">goto_mode</span><span class="p">,</span>
|
||||
<span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdMap"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.commands.html#evennia.contrib.grid.xyzgrid.commands.CmdMap">[docs]</a><span class="k">class</span> <span class="nc">CmdMap</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
||||
|
|
@ -466,6 +495,7 @@
|
|||
<span class="sd"> This is a builder-command.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"map"</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:perm(Builders)"</span>
|
||||
|
||||
|
|
@ -495,8 +525,10 @@
|
|||
|
||||
<span class="n">xymap</span> <span class="o">=</span> <span class="n">xyzgrid</span><span class="o">.</span><span class="n">get_map</span><span class="p">(</span><span class="n">Z</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">xymap</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"XYMap '</span><span class="si">{</span><span class="n">Z</span><span class="si">}</span><span class="s2">' is not found on the grid. Try 'map list' to see "</span>
|
||||
<span class="s2">"available maps/Zcoords."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"XYMap '</span><span class="si">{</span><span class="n">Z</span><span class="si">}</span><span class="s2">' is not found on the grid. Try 'map list' to see "</span>
|
||||
<span class="s2">"available maps/Zcoords."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">ansi</span><span class="o">.</span><span class="n">raw</span><span class="p">(</span><span class="n">xymap</span><span class="o">.</span><span class="n">mapstring</span><span class="p">))</span></div></div>
|
||||
|
|
@ -507,6 +539,7 @@
|
|||
<span class="sd"> Cmdset for easily adding the above cmds to the character cmdset.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"xyzgrid_cmdset"</span>
|
||||
|
||||
<div class="viewcode-block" id="XYZGridCmdSet.at_cmdset_creation"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.commands.html#evennia.contrib.grid.xyzgrid.commands.XYZGridCmdSet.at_cmdset_creation">[docs]</a> <span class="k">def</span> <span class="nf">at_cmdset_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -123,14 +123,13 @@
|
|||
<span class="sd"> into a room but only acts as a target for finding the exit's destination.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s1">'T'</span>
|
||||
<span class="n">target_map_xyz</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'the small cave'</span><span class="p">)</span></div>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"T"</span>
|
||||
<span class="n">target_map_xyz</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"the small cave"</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="c1"># extends the default legend</span>
|
||||
<span class="n">LEGEND_MAP1</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'T'</span><span class="p">:</span> <span class="n">TransitionToCave</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">LEGEND_MAP1</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"T"</span><span class="p">:</span> <span class="n">TransitionToCave</span><span class="p">}</span>
|
||||
|
||||
|
||||
<span class="c1"># link coordinates to rooms</span>
|
||||
|
|
@ -138,70 +137,62 @@
|
|||
<span class="c1"># node/room prototypes</span>
|
||||
<span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"Dungeon Entrance"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"To the east, a narrow opening leads into darkness."</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"To the east, a narrow opening leads into darkness."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">1</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"Under the foilage of a giant tree"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"High above the branches of a giant tree blocks out the sunlight. A slide "</span>
|
||||
<span class="s2">"leading down from the upper branches ends here."</span>
|
||||
<span class="s2">"leading down from the upper branches ends here."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">4</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"The slide"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"A slide leads down to the ground from here. It looks like a one-way trip."</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"A slide leads down to the ground from here. It looks like a one-way trip."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">1</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"Thorny path"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"To the east is a pathway of thorns. If you get through, you don't think you'll be "</span>
|
||||
<span class="s2">"able to get back here the same way."</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">1</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"By a large tree"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"You are standing at the root of a great tree."</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">3</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"At the top of the tree"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"You are at the top of the tree."</span>
|
||||
<span class="s2">"able to get back here the same way."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">1</span><span class="p">):</span> <span class="p">{</span><span class="s2">"key"</span><span class="p">:</span> <span class="s2">"By a large tree"</span><span class="p">,</span> <span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"You are standing at the root of a great tree."</span><span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">3</span><span class="p">):</span> <span class="p">{</span><span class="s2">"key"</span><span class="p">:</span> <span class="s2">"At the top of the tree"</span><span class="p">,</span> <span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"You are at the top of the tree."</span><span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"Dense foilage"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"The foilage to the east is extra dense. It will take forever to get through it."</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"The foilage to the east is extra dense. It will take forever to get through it."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"On a huge branch"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"To the east is a glowing light, may be a teleporter to a higher branch."</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"To the east is a glowing light, may be a teleporter to a higher branch."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">9</span><span class="p">,</span> <span class="mi">7</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"On an enormous branch"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"To the west is a glowing light. It may be a teleporter to a lower branch."</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"To the west is a glowing light. It may be a teleporter to a lower branch."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">8</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"A gorgeous view"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"The view from here is breathtaking, showing the forest stretching far and wide."</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"The view from here is breathtaking, showing the forest stretching far and wide."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="c1"># default rooms</span>
|
||||
<span class="p">(</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="p">(</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"Among the branches of a giant tree"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"These branches are wide enough to easily walk on. There's green all around."</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"These branches are wide enough to easily walk on. There's green all around."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="c1"># directional prototypes</span>
|
||||
<span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"A dark passage into the underworld."</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"e"</span><span class="p">):</span> <span class="p">{</span><span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"A dark passage into the underworld."</span><span class="p">},</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">prot</span> <span class="ow">in</span> <span class="n">PROTOTYPES_MAP1</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="c1"># we don't want to give exits the room typeclass!</span>
|
||||
<span class="n">prot</span><span class="p">[</span><span class="s1">'prototype_parent'</span><span class="p">]</span> <span class="o">=</span> <span class="n">ROOM_PARENT</span>
|
||||
<span class="n">prot</span><span class="p">[</span><span class="s2">"prototype_parent"</span><span class="p">]</span> <span class="o">=</span> <span class="n">ROOM_PARENT</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">prot</span><span class="p">[</span><span class="s1">'prototype_parent'</span><span class="p">]</span> <span class="o">=</span> <span class="n">EXIT_PARENT</span>
|
||||
<span class="n">prot</span><span class="p">[</span><span class="s2">"prototype_parent"</span><span class="p">]</span> <span class="o">=</span> <span class="n">EXIT_PARENT</span>
|
||||
|
||||
|
||||
<span class="n">XYMAP_DATA_MAP1</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"zcoord"</span><span class="p">:</span> <span class="s2">"the large tree"</span><span class="p">,</span>
|
||||
<span class="s2">"map"</span><span class="p">:</span> <span class="n">MAP1</span><span class="p">,</span>
|
||||
<span class="s2">"legend"</span><span class="p">:</span> <span class="n">LEGEND_MAP1</span><span class="p">,</span>
|
||||
<span class="s2">"prototypes"</span><span class="p">:</span> <span class="n">PROTOTYPES_MAP1</span>
|
||||
<span class="s2">"prototypes"</span><span class="p">:</span> <span class="n">PROTOTYPES_MAP1</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="c1"># -------------------------------------- map2</span>
|
||||
|
|
@ -230,14 +221,13 @@
|
|||
<span class="sd"> into a room by only acts as a target for finding the exit's destination.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s1">'T'</span>
|
||||
<span class="n">target_map_xyz</span> <span class="o">=</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'the large tree'</span><span class="p">)</span></div>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"T"</span>
|
||||
<span class="n">target_map_xyz</span> <span class="o">=</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"the large tree"</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="c1"># this extends the default legend (that defines #,-+ etc)</span>
|
||||
<span class="n">LEGEND_MAP2</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"T"</span><span class="p">:</span> <span class="n">TransitionToLargeTree</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">LEGEND_MAP2</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"T"</span><span class="p">:</span> <span class="n">TransitionToLargeTree</span><span class="p">}</span>
|
||||
|
||||
<span class="c1"># prototypes for specific locations</span>
|
||||
<span class="n">PROTOTYPES_MAP2</span> <span class="o">=</span> <span class="p">{</span>
|
||||
|
|
@ -245,64 +235,54 @@
|
|||
<span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"The entrance"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"This is the entrance to a small cave leading into the ground. "</span>
|
||||
<span class="s2">"Light sifts in from the outside, while cavernous passages disappear "</span>
|
||||
<span class="s2">"into darkness."</span>
|
||||
<span class="s2">"Light sifts in from the outside, while cavernous passages disappear "</span>
|
||||
<span class="s2">"into darkness."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"A gruesome sight."</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"Something was killed here recently. The smell is unbearable."</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"Something was killed here recently. The smell is unbearable."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"A dark pathway"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"The path splits three ways here. To the north a faint light can be seen."</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"The path splits three ways here. To the north a faint light can be seen."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"Stagnant water"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"A pool of stagnant, black water dominates this small chamber. To the nortwest "</span>
|
||||
<span class="s2">"a faint light can be seen."</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"A dark alcove"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"This alcove is empty."</span>
|
||||
<span class="s2">"a faint light can be seen."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">):</span> <span class="p">{</span><span class="s2">"key"</span><span class="p">:</span> <span class="s2">"A dark alcove"</span><span class="p">,</span> <span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"This alcove is empty."</span><span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"South-west corner of the atrium"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"Sunlight sifts down into a large underground chamber. Weeds and grass sprout "</span>
|
||||
<span class="s2">"between the stones."</span>
|
||||
<span class="s2">"between the stones."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"South-east corner of the atrium"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"Sunlight sifts down into a large underground chamber. Weeds and grass sprout "</span>
|
||||
<span class="s2">"between the stones."</span>
|
||||
<span class="s2">"between the stones."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"North-west corner of the atrium"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"Sunlight sifts down into a large underground chamber. Weeds and grass sprout "</span>
|
||||
<span class="s2">"between the stones."</span>
|
||||
<span class="s2">"between the stones."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"North-east corner of the atrium"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"Sunlight sifts down into a large underground chamber. Weeds and grass sprout "</span>
|
||||
<span class="s2">"between the stones. To the east is a dark passage."</span>
|
||||
<span class="s2">"between the stones. To the east is a dark passage."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"Craggy crevice"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"This is the deepest part of the dungeon. The path shrinks away and there "</span>
|
||||
<span class="s2">"is no way to continue deeper."</span>
|
||||
<span class="s2">"is no way to continue deeper."</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="c1"># default fallback for undefined nodes</span>
|
||||
<span class="p">(</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"key"</span><span class="p">:</span> <span class="s2">"A dark room"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"A dark, but empty, room."</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">):</span> <span class="p">{</span><span class="s2">"key"</span><span class="p">:</span> <span class="s2">"A dark room"</span><span class="p">,</span> <span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"A dark, but empty, room."</span><span class="p">},</span>
|
||||
<span class="c1"># directional prototypes</span>
|
||||
<span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"A narrow path to the fresh air of the outside world."</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">):</span> <span class="p">{</span><span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"A narrow path to the fresh air of the outside world."</span><span class="p">},</span>
|
||||
<span class="c1"># directional fallbacks for unset directions</span>
|
||||
<span class="p">(</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">):</span> <span class="p">{</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"A dark passage"</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">(</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">):</span> <span class="p">{</span><span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"A dark passage"</span><span class="p">},</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="c1"># this is required by the prototypes, but we add it all at once so we don't</span>
|
||||
|
|
@ -310,9 +290,9 @@
|
|||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">prot</span> <span class="ow">in</span> <span class="n">PROTOTYPES_MAP2</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="c1"># we don't want to give exits the room typeclass!</span>
|
||||
<span class="n">prot</span><span class="p">[</span><span class="s1">'prototype_parent'</span><span class="p">]</span> <span class="o">=</span> <span class="n">ROOM_PARENT</span>
|
||||
<span class="n">prot</span><span class="p">[</span><span class="s2">"prototype_parent"</span><span class="p">]</span> <span class="o">=</span> <span class="n">ROOM_PARENT</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">prot</span><span class="p">[</span><span class="s1">'prototype_parent'</span><span class="p">]</span> <span class="o">=</span> <span class="n">EXIT_PARENT</span>
|
||||
<span class="n">prot</span><span class="p">[</span><span class="s2">"prototype_parent"</span><span class="p">]</span> <span class="o">=</span> <span class="n">EXIT_PARENT</span>
|
||||
|
||||
|
||||
<span class="n">XYMAP_DATA_MAP2</span> <span class="o">=</span> <span class="p">{</span>
|
||||
|
|
@ -320,17 +300,11 @@
|
|||
<span class="s2">"zcoord"</span><span class="p">:</span> <span class="s2">"the small cave"</span><span class="p">,</span>
|
||||
<span class="s2">"legend"</span><span class="p">:</span> <span class="n">LEGEND_MAP2</span><span class="p">,</span>
|
||||
<span class="s2">"prototypes"</span><span class="p">:</span> <span class="n">PROTOTYPES_MAP2</span><span class="p">,</span>
|
||||
<span class="s2">"options"</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s2">"map_visual_range"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="s2">"map_mode"</span><span class="p">:</span> <span class="s1">'scan'</span>
|
||||
<span class="p">}</span>
|
||||
<span class="s2">"options"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"map_visual_range"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s2">"map_mode"</span><span class="p">:</span> <span class="s2">"scan"</span><span class="p">},</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="c1"># This is read by the parser</span>
|
||||
<span class="n">XYMAP_DATA_LIST</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">XYMAP_DATA_MAP1</span><span class="p">,</span>
|
||||
<span class="n">XYMAP_DATA_MAP2</span>
|
||||
<span class="p">]</span>
|
||||
<span class="n">XYMAP_DATA_LIST</span> <span class="o">=</span> <span class="p">[</span><span class="n">XYMAP_DATA_MAP1</span><span class="p">,</span> <span class="n">XYMAP_DATA_MAP2</span><span class="p">]</span>
|
||||
</pre></div>
|
||||
|
||||
<div class="clearer"></div>
|
||||
|
|
|
|||
|
|
@ -202,11 +202,12 @@
|
|||
<span class="s2">"add"</span><span class="p">:</span> <span class="n">_HELP_ADD</span><span class="p">,</span>
|
||||
<span class="s2">"spawn"</span><span class="p">:</span> <span class="n">_HELP_SPAWN</span><span class="p">,</span>
|
||||
<span class="s2">"initpath"</span><span class="p">:</span> <span class="n">_HELP_INITPATH</span><span class="p">,</span>
|
||||
<span class="s2">"delete"</span><span class="p">:</span> <span class="n">_HELP_DELETE</span>
|
||||
<span class="s2">"delete"</span><span class="p">:</span> <span class="n">_HELP_DELETE</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="n">evennia</span><span class="o">.</span><span class="n">_init</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_option_help</span><span class="p">(</span><span class="o">*</span><span class="n">suboptions</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Show help <command> aid.</span>
|
||||
|
|
@ -230,6 +231,7 @@
|
|||
<span class="c1"># override grid's logger to echo directly to console</span>
|
||||
<span class="k">def</span> <span class="nf">_log</span><span class="p">(</span><span class="n">msg</span><span class="p">):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
|
||||
<span class="n">xyzgrid</span><span class="o">.</span><span class="n">log</span> <span class="o">=</span> <span class="n">_log</span>
|
||||
|
||||
<span class="n">xymap_data</span> <span class="o">=</span> <span class="n">xyzgrid</span><span class="o">.</span><span class="n">grid</span>
|
||||
|
|
@ -252,7 +254,7 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">xymap</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No XYMap with Z='</span><span class="si">{</span><span class="n">zcoord</span><span class="si">}</span><span class="s2">' was found on grid."</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">nrooms</span> <span class="o">=</span> <span class="n">xyzgrid</span><span class="o">.</span><span class="n">get_room</span><span class="p">((</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">,</span> <span class="n">zcoord</span><span class="p">))</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
||||
<span class="n">nrooms</span> <span class="o">=</span> <span class="n">xyzgrid</span><span class="o">.</span><span class="n">get_room</span><span class="p">((</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">,</span> <span class="n">zcoord</span><span class="p">))</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
||||
<span class="n">nnodes</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">xymap</span><span class="o">.</span><span class="n">node_index_map</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="nb">repr</span><span class="p">(</span><span class="n">xymap</span><span class="p">))</span> <span class="o">+</span> <span class="s2">":</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">checkwarning</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
|
@ -260,22 +262,29 @@
|
|||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">nrooms</span><span class="si">}</span><span class="s2"> / </span><span class="si">{</span><span class="n">nnodes</span><span class="si">}</span><span class="s2"> rooms are spawned."</span><span class="p">)</span>
|
||||
<span class="n">checkwarning</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="k">elif</span> <span class="n">nrooms</span> <span class="o"><</span> <span class="n">nnodes</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">nrooms</span><span class="si">}</span><span class="s2"> / </span><span class="si">{</span><span class="n">nnodes</span><span class="si">}</span><span class="s2"> rooms are spawned</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"Note: Transitional nodes are *not* spawned (they just point </span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"to another map), so the 'missing room(s)' may just be from such nodes."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">nrooms</span><span class="si">}</span><span class="s2"> / </span><span class="si">{</span><span class="n">nnodes</span><span class="si">}</span><span class="s2"> rooms are spawned</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"Note: Transitional nodes are *not* spawned (they just point </span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"to another map), so the 'missing room(s)' may just be from such nodes."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">nrooms</span> <span class="o">></span> <span class="n">nnodes</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">nrooms</span><span class="si">}</span><span class="s2"> / </span><span class="si">{</span><span class="n">nnodes</span><span class="si">}</span><span class="s2"> rooms are spawned</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"Note: Maybe some rooms were removed from map. Run 'spawn' to re-sync."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">nrooms</span><span class="si">}</span><span class="s2"> / </span><span class="si">{</span><span class="n">nnodes</span><span class="si">}</span><span class="s2"> rooms are spawned</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"Note: Maybe some rooms were removed from map. Run 'spawn' to re-sync."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">nrooms</span><span class="si">}</span><span class="s2"> / </span><span class="si">{</span><span class="n">nnodes</span><span class="si">}</span><span class="s2"> rooms are spawned</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">checkwarning</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Note: This check is not complete; it does not consider changed map "</span>
|
||||
<span class="s2">"topology</span><span class="se">\n</span><span class="s2">like relocated nodes/rooms and new/removed links/exits - this "</span>
|
||||
<span class="s2">"is calculated only during a spawn."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="s2">"Note: This check is not complete; it does not consider changed map "</span>
|
||||
<span class="s2">"topology</span><span class="se">\n</span><span class="s2">like relocated nodes/rooms and new/removed links/exits - this "</span>
|
||||
<span class="s2">"is calculated only during a spawn."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Displayed map (as appearing in-game):</span><span class="se">\n\n</span><span class="s2">"</span> <span class="o">+</span> <span class="n">ansi</span><span class="o">.</span><span class="n">parse_ansi</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">xymap</span><span class="p">)))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Raw map string (including axes and invisible nodes/links):</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">xymap</span><span class="o">.</span><span class="n">mapstring</span><span class="p">))</span>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">Raw map string (including axes and invisible nodes/links):</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">xymap</span><span class="o">.</span><span class="n">mapstring</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Custom map options: </span><span class="si">{</span><span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">legend</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">node_or_link</span> <span class="ow">in</span> <span class="n">xymap</span><span class="o">.</span><span class="n">legend</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
|
|
@ -302,6 +311,7 @@
|
|||
<span class="c1"># override grid's logger to echo directly to console</span>
|
||||
<span class="k">def</span> <span class="nf">_log</span><span class="p">(</span><span class="n">msg</span><span class="p">):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
|
||||
<span class="n">grid</span><span class="o">.</span><span class="n">log</span> <span class="o">=</span> <span class="n">_log</span>
|
||||
|
||||
<span class="n">xymap_data_list</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
|
@ -332,35 +342,44 @@
|
|||
<span class="c1"># override grid's logger to echo directly to console</span>
|
||||
<span class="k">def</span> <span class="nf">_log</span><span class="p">(</span><span class="n">msg</span><span class="p">):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
|
||||
<span class="n">grid</span><span class="o">.</span><span class="n">log</span> <span class="o">=</span> <span class="n">_log</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">suboptions</span><span class="p">:</span>
|
||||
<span class="n">opts</span> <span class="o">=</span> <span class="s1">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">suboptions</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s1">'()'</span><span class="p">)</span>
|
||||
<span class="n">opts</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">suboptions</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"()"</span><span class="p">)</span>
|
||||
<span class="c1"># coordinate tuple</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span> <span class="o">=</span> <span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">opts</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">))</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"spawn coordinate must be given as (X, Y, Z) tuple, where '*' act "</span>
|
||||
<span class="s2">"wild cards and Z is the mapname/z-coord of the map to load."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="s2">"spawn coordinate must be given as (X, Y, Z) tuple, where '*' act "</span>
|
||||
<span class="s2">"wild cards and Z is the mapname/z-coord of the map to load."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span> <span class="o">=</span> <span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span> <span class="o">=</span> <span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="n">y</span> <span class="o">==</span> <span class="n">z</span> <span class="o">==</span> <span class="s1">'*'</span><span class="p">:</span>
|
||||
<span class="n">inp</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"This will (re)spawn the entire grid. If it was built before, it may spawn </span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"new rooms or delete rooms that no longer matches the grid.</span><span class="se">\n</span><span class="s2">Do you want to "</span>
|
||||
<span class="s2">"continue? [Y]/N? "</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="n">y</span> <span class="o">==</span> <span class="n">z</span> <span class="o">==</span> <span class="s2">"*"</span><span class="p">:</span>
|
||||
<span class="n">inp</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span>
|
||||
<span class="s2">"This will (re)spawn the entire grid. If it was built before, it may spawn </span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"new rooms or delete rooms that no longer matches the grid.</span><span class="se">\n</span><span class="s2">Do you want to "</span>
|
||||
<span class="s2">"continue? [Y]/N? "</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">inp</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"This will spawn/delete objects in the database matching grid coordinates </span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">x</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">y</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">z</span><span class="si">}</span><span class="s2">) (where '*' is a wildcard).</span><span class="se">\n</span><span class="s2">Do you want to continue? [Y]/N? "</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">inp</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'no'</span><span class="p">,</span> <span class="s1">'n'</span><span class="p">):</span>
|
||||
<span class="n">inp</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span>
|
||||
<span class="s2">"This will spawn/delete objects in the database matching grid coordinates </span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">x</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">y</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">z</span><span class="si">}</span><span class="s2">) (where '*' is a wildcard).</span><span class="se">\n</span><span class="s2">Do you want to continue? [Y]/N? "</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">inp</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"no"</span><span class="p">,</span> <span class="s2">"n"</span><span class="p">):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Aborted."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Beginner-Tutorial spawn ..."</span><span class="p">)</span>
|
||||
<span class="n">grid</span><span class="o">.</span><span class="n">spawn</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"... spawn complete!</span><span class="se">\n</span><span class="s2">It's recommended to reload the server to refresh caches if this "</span>
|
||||
<span class="s2">"modified an existing grid."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="s2">"... spawn complete!</span><span class="se">\n</span><span class="s2">It's recommended to reload the server to refresh caches if this "</span>
|
||||
<span class="s2">"modified an existing grid."</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_option_initpath</span><span class="p">(</span><span class="o">*</span><span class="n">suboptions</span><span class="p">):</span>
|
||||
|
|
@ -373,6 +392,7 @@
|
|||
<span class="c1"># override grid's logger to echo directly to console</span>
|
||||
<span class="k">def</span> <span class="nf">_log</span><span class="p">(</span><span class="n">msg</span><span class="p">):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
|
||||
<span class="n">grid</span><span class="o">.</span><span class="n">log</span> <span class="o">=</span> <span class="n">_log</span>
|
||||
|
||||
<span class="n">xymaps</span> <span class="o">=</span> <span class="n">grid</span><span class="o">.</span><span class="n">all_maps</span><span class="p">()</span>
|
||||
|
|
@ -396,19 +416,24 @@
|
|||
<span class="c1"># override grid's logger to echo directly to console</span>
|
||||
<span class="k">def</span> <span class="nf">_log</span><span class="p">(</span><span class="n">msg</span><span class="p">):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
|
||||
<span class="n">grid</span><span class="o">.</span><span class="n">log</span> <span class="o">=</span> <span class="n">_log</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">suboptions</span><span class="p">:</span>
|
||||
<span class="n">repl</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"WARNING: This will delete the ENTIRE Grid and wipe all rooms/exits!"</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">Objects/Chars inside deleted rooms will be moved to their home locations."</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">This can't be undone. Are you sure you want to continue? Y/[N]? "</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">repl</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'yes'</span><span class="p">,</span> <span class="s1">'y'</span><span class="p">):</span>
|
||||
<span class="n">repl</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span>
|
||||
<span class="s2">"WARNING: This will delete the ENTIRE Grid and wipe all rooms/exits!"</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">Objects/Chars inside deleted rooms will be moved to their home locations."</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">This can't be undone. Are you sure you want to continue? Y/[N]? "</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">repl</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"yes"</span><span class="p">,</span> <span class="s2">"y"</span><span class="p">):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Aborted."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Deleting grid ..."</span><span class="p">)</span>
|
||||
<span class="n">grid</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"... done.</span><span class="se">\n</span><span class="s2">Please reload the server now; otherwise "</span>
|
||||
<span class="s2">"removed rooms may linger in cache."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="s2">"... done.</span><span class="se">\n</span><span class="s2">Please reload the server now; otherwise "</span>
|
||||
<span class="s2">"removed rooms may linger in cache."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">zcoords</span> <span class="o">=</span> <span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">suboptions</span><span class="p">)</span>
|
||||
|
|
@ -418,21 +443,24 @@
|
|||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Mapname/zcoord </span><span class="si">{</span><span class="n">zcoord</span><span class="si">}</span><span class="s2"> is not a part of the grid."</span><span class="p">)</span>
|
||||
<span class="n">err</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="k">if</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Valid mapnames/zcoords are</span><span class="se">\n</span><span class="s2">:"</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">xymap</span><span class="o">.</span><span class="n">Z</span> <span class="k">for</span> <span class="n">xymap</span> <span class="ow">in</span> <span class="n">grid</span><span class="o">.</span><span class="n">all_rooms</span><span class="p">()))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Valid mapnames/zcoords are</span><span class="se">\n</span><span class="s2">:"</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">xymap</span><span class="o">.</span><span class="n">Z</span> <span class="k">for</span> <span class="n">xymap</span> <span class="ow">in</span> <span class="n">grid</span><span class="o">.</span><span class="n">all_rooms</span><span class="p">()))</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">repl</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"This will delete map(s) {', '.join(zcoords)} and wipe all corresponding</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"rooms/exits!"</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">Objects/Chars inside deleted rooms will be moved to their home locations."</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">This can't be undone. Are you sure you want to continue? Y/[N]? "</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">repl</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'yes'</span><span class="p">,</span> <span class="s1">'y'</span><span class="p">):</span>
|
||||
<span class="n">repl</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span>
|
||||
<span class="s2">"This will delete map(s) {', '.join(zcoords)} and wipe all corresponding</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"rooms/exits!"</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">Objects/Chars inside deleted rooms will be moved to their home locations."</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">This can't be undone. Are you sure you want to continue? Y/[N]? "</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">repl</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"yes"</span><span class="p">,</span> <span class="s2">"y"</span><span class="p">):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Aborted."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Deleting selected xymaps ..."</span><span class="p">)</span>
|
||||
<span class="n">grid</span><span class="o">.</span><span class="n">remove_map</span><span class="p">(</span><span class="o">*</span><span class="n">zcoords</span><span class="p">,</span> <span class="n">remove_objects</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"... done.</span><span class="se">\n</span><span class="s2">Please reload the server to refresh room caches."</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">Also remember to remove any links from remaining maps pointing to deleted maps."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="s2">"... done.</span><span class="se">\n</span><span class="s2">Please reload the server to refresh room caches."</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">Also remember to remove any links from remaining maps pointing to deleted maps."</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="xyzcommand"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.launchcmd.html#evennia.contrib.grid.xyzgrid.launchcmd.xyzcommand">[docs]</a><span class="k">def</span> <span class="nf">xyzcommand</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
|
|
@ -447,23 +475,22 @@
|
|||
|
||||
<span class="n">option</span><span class="p">,</span> <span class="o">*</span><span class="n">suboptions</span> <span class="o">=</span> <span class="n">args</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">option</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'help'</span><span class="p">,</span> <span class="s1">'h'</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">option</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"help"</span><span class="p">,</span> <span class="s2">"h"</span><span class="p">):</span>
|
||||
<span class="n">_option_help</span><span class="p">(</span><span class="o">*</span><span class="n">suboptions</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">option</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'list'</span><span class="p">,</span> <span class="s1">'show'</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">option</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"list"</span><span class="p">,</span> <span class="s2">"show"</span><span class="p">):</span>
|
||||
<span class="n">_option_list</span><span class="p">(</span><span class="o">*</span><span class="n">suboptions</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">option</span> <span class="o">==</span> <span class="s1">'init'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">option</span> <span class="o">==</span> <span class="s2">"init"</span><span class="p">:</span>
|
||||
<span class="n">_option_init</span><span class="p">(</span><span class="o">*</span><span class="n">suboptions</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">option</span> <span class="o">==</span> <span class="s1">'add'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">option</span> <span class="o">==</span> <span class="s2">"add"</span><span class="p">:</span>
|
||||
<span class="n">_option_add</span><span class="p">(</span><span class="o">*</span><span class="n">suboptions</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">option</span> <span class="o">==</span> <span class="s1">'spawn'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">option</span> <span class="o">==</span> <span class="s2">"spawn"</span><span class="p">:</span>
|
||||
<span class="n">_option_spawn</span><span class="p">(</span><span class="o">*</span><span class="n">suboptions</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">option</span> <span class="o">==</span> <span class="s1">'initpath'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">option</span> <span class="o">==</span> <span class="s2">"initpath"</span><span class="p">:</span>
|
||||
<span class="n">_option_initpath</span><span class="p">(</span><span class="o">*</span><span class="n">suboptions</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">option</span> <span class="o">==</span> <span class="s1">'delete'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">option</span> <span class="o">==</span> <span class="s2">"delete"</span><span class="p">:</span>
|
||||
<span class="n">_option_delete</span><span class="p">(</span><span class="o">*</span><span class="n">suboptions</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown option '</span><span class="si">{</span><span class="n">option</span><span class="si">}</span><span class="s2">'. Use 'evennia xyzgrid help' for valid arguments."</span><span class="p">)</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
<div class="clearer"></div>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -72,13 +72,15 @@
|
|||
|
||||
<span class="c1"># errors for Map system</span>
|
||||
|
||||
<div class="viewcode-block" id="MapError"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.utils.html#evennia.contrib.grid.xyzgrid.utils.MapError">[docs]</a><span class="k">class</span> <span class="nc">MapError</span><span class="p">(</span><span class="ne">RuntimeError</span><span class="p">):</span>
|
||||
|
||||
<div class="viewcode-block" id="MapError"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.utils.html#evennia.contrib.grid.xyzgrid.utils.MapError">[docs]</a><span class="k">class</span> <span class="nc">MapError</span><span class="p">(</span><span class="ne">RuntimeError</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="MapError.__init__"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.utils.html#evennia.contrib.grid.xyzgrid.utils.MapError.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">error</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">node_or_link</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="n">prefix</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">if</span> <span class="n">node_or_link</span><span class="p">:</span>
|
||||
<span class="n">prefix</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">node_or_link</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2"> '</span><span class="si">{</span><span class="n">node_or_link</span><span class="o">.</span><span class="n">symbol</span><span class="si">}</span><span class="s2">' "</span>
|
||||
<span class="sa">f</span><span class="s2">"at XYZ=(</span><span class="si">{</span><span class="n">node_or_link</span><span class="o">.</span><span class="n">X</span><span class="si">:</span><span class="s2">g</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">node_or_link</span><span class="o">.</span><span class="n">Y</span><span class="si">:</span><span class="s2">g</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">node_or_link</span><span class="o">.</span><span class="n">Z</span><span class="si">}</span><span class="s2">) "</span><span class="p">)</span>
|
||||
<span class="n">prefix</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">node_or_link</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2"> '</span><span class="si">{</span><span class="n">node_or_link</span><span class="o">.</span><span class="n">symbol</span><span class="si">}</span><span class="s2">' "</span>
|
||||
<span class="sa">f</span><span class="s2">"at XYZ=(</span><span class="si">{</span><span class="n">node_or_link</span><span class="o">.</span><span class="n">X</span><span class="si">:</span><span class="s2">g</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">node_or_link</span><span class="o">.</span><span class="n">Y</span><span class="si">:</span><span class="s2">g</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">node_or_link</span><span class="o">.</span><span class="n">Z</span><span class="si">}</span><span class="s2">) "</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">node_or_link</span> <span class="o">=</span> <span class="n">node_or_link</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">error</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">message</span><span class="p">)</span></div></div>
|
||||
|
|
@ -94,6 +96,7 @@
|
|||
<span class="sd"> leads to another map.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">pass</span></div>
|
||||
</pre></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -146,7 +146,8 @@
|
|||
<span class="k">except</span> <span class="ne">ImportError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="se">\n</span><span class="s2">The XYZgrid contrib requires "</span>
|
||||
<span class="s2">"the SciPy package. Install with `pip install scipy'."</span><span class="p">)</span>
|
||||
<span class="s2">"the SciPy package. Install with `pip install scipy'."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">variable_from_module</span><span class="p">,</span> <span class="n">mod_import</span><span class="p">,</span> <span class="n">is_iter</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">logger</span>
|
||||
|
|
@ -164,9 +165,7 @@
|
|||
<span class="n">_LOADED_PROTOTYPES</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">_XYZROOMCLASS</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="n">MAP_DATA_KEYS</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="s2">"zcoord"</span><span class="p">,</span> <span class="s2">"map"</span><span class="p">,</span> <span class="s2">"legend"</span><span class="p">,</span> <span class="s2">"prototypes"</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="s2">"module_path"</span>
|
||||
<span class="p">]</span>
|
||||
<span class="n">MAP_DATA_KEYS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"zcoord"</span><span class="p">,</span> <span class="s2">"map"</span><span class="p">,</span> <span class="s2">"legend"</span><span class="p">,</span> <span class="s2">"prototypes"</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="s2">"module_path"</span><span class="p">]</span>
|
||||
|
||||
<span class="n">DEFAULT_LEGEND</span> <span class="o">=</span> <span class="n">xymap_legend</span><span class="o">.</span><span class="n">LEGEND</span>
|
||||
|
||||
|
|
@ -214,11 +213,11 @@
|
|||
<span class="sd"> but recommended for readability!</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">mapcorner_symbol</span> <span class="o">=</span> <span class="s1">'+'</span>
|
||||
<span class="n">mapcorner_symbol</span> <span class="o">=</span> <span class="s2">"+"</span>
|
||||
<span class="n">max_pathfinding_length</span> <span class="o">=</span> <span class="mi">500</span>
|
||||
<span class="n">empty_symbol</span> <span class="o">=</span> <span class="s1">' '</span>
|
||||
<span class="n">empty_symbol</span> <span class="o">=</span> <span class="s2">" "</span>
|
||||
<span class="c1"># we normally only accept one single character for the legend key</span>
|
||||
<span class="n">legend_key_exceptions</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">legend_key_exceptions</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span>
|
||||
|
||||
<div class="viewcode-block" id="XYMap.__init__"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap.html#evennia.contrib.grid.xyzgrid.xymap.XYMap.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">map_module_or_dict</span><span class="p">,</span> <span class="n">Z</span><span class="o">=</span><span class="s2">"map"</span><span class="p">,</span> <span class="n">xyzgrid</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -252,7 +251,9 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_LOADED_PROTOTYPES</span><span class="p">:</span>
|
||||
<span class="c1"># inject default prototypes, but don't override prototype-keys loaded from</span>
|
||||
<span class="c1"># settings, if they exist (that means the user wants to replace the defaults)</span>
|
||||
<span class="n">protlib</span><span class="o">.</span><span class="n">load_module_prototypes</span><span class="p">(</span><span class="s2">"evennia.contrib.grid.xyzgrid.prototypes"</span><span class="p">,</span> <span class="n">override</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="n">protlib</span><span class="o">.</span><span class="n">load_module_prototypes</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.grid.xyzgrid.prototypes"</span><span class="p">,</span> <span class="n">override</span><span class="o">=</span><span class="kc">False</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">_LOADED_PROTOTYPES</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">Z</span> <span class="o">=</span> <span class="n">Z</span>
|
||||
|
|
@ -306,7 +307,7 @@
|
|||
<span class="n">nnodes</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">node_index_map</span><span class="p">:</span>
|
||||
<span class="n">nnodes</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">node_index_map</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"<XYMap(Z=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">Z</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">max_X</span> <span class="o">+</span> <span class="mi">1</span><span class="si">}</span><span class="s2">x</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">max_Y</span> <span class="o">+</span> <span class="mi">1</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">nnodes</span><span class="si">}</span><span class="s2"> nodes>"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"<XYMap(Z=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">Z</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">max_X</span> <span class="o">+</span> <span class="mi">1</span><span class="si">}</span><span class="s2">x</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">max_Y</span> <span class="o">+</span> <span class="mi">1</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">nnodes</span><span class="si">}</span><span class="s2"> nodes>"</span>
|
||||
|
||||
<div class="viewcode-block" id="XYMap.log"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap.html#evennia.contrib.grid.xyzgrid.xymap.XYMap.log">[docs]</a> <span class="k">def</span> <span class="nf">log</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msg</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">xyzgrid</span><span class="p">:</span>
|
||||
|
|
@ -359,34 +360,41 @@
|
|||
<span class="n">mapdata</span> <span class="o">=</span> <span class="n">variable_from_module</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <span class="s2">"XYMAP_DATA"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">mapdata</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span><span class="s2">"No valid XYMAP_DATA or XYMAP_DATA_LIST could be found from "</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">map_module_or_dict</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span>
|
||||
<span class="s2">"No valid XYMAP_DATA or XYMAP_DATA_LIST could be found from "</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">map_module_or_dict</span><span class="si">}</span><span class="s2">."</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># validate</span>
|
||||
<span class="k">if</span> <span class="nb">any</span><span class="p">(</span><span class="n">key</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">mapdata</span> <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">MAP_DATA_KEYS</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Mapdata has keys </span><span class="si">{</span><span class="nb">list</span><span class="p">(</span><span class="n">mapdata</span><span class="p">)</span><span class="si">}</span><span class="s2">, but only "</span>
|
||||
<span class="sa">f</span><span class="s2">"keys </span><span class="si">{</span><span class="n">MAP_DATA_KEYS</span><span class="si">}</span><span class="s2"> are allowed."</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Mapdata has keys </span><span class="si">{</span><span class="nb">list</span><span class="p">(</span><span class="n">mapdata</span><span class="p">)</span><span class="si">}</span><span class="s2">, but only "</span> <span class="sa">f</span><span class="s2">"keys </span><span class="si">{</span><span class="n">MAP_DATA_KEYS</span><span class="si">}</span><span class="s2"> are allowed."</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">mapdata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'legend'</span><span class="p">,</span> <span class="n">DEFAULT_LEGEND</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">mapdata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"legend"</span><span class="p">,</span> <span class="n">DEFAULT_LEGEND</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">key</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">legend_key_exceptions</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Map-legend key '</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">' is invalid: All keys must "</span>
|
||||
<span class="s2">"be exactly one character long. Use the node/link's "</span>
|
||||
<span class="s2">"`.display_symbol` property to change how it is "</span>
|
||||
<span class="s2">"displayed."</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="s1">'map'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">mapdata</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">mapdata</span><span class="p">[</span><span class="s1">'map'</span><span class="p">]:</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Map-legend key '</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">' is invalid: All keys must "</span>
|
||||
<span class="s2">"be exactly one character long. Use the node/link's "</span>
|
||||
<span class="s2">"`.display_symbol` property to change how it is "</span>
|
||||
<span class="s2">"displayed."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="s2">"map"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">mapdata</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">mapdata</span><span class="p">[</span><span class="s2">"map"</span><span class="p">]:</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span><span class="s2">"No map found. Add 'map' key to map-data dict."</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">prototype</span> <span class="ow">in</span> <span class="n">mapdata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'prototypes'</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">prototype</span> <span class="ow">in</span> <span class="n">mapdata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"prototypes"</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">is_iter</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="mi">2</span> <span class="o"><=</span> <span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="o"><=</span> <span class="mi">3</span><span class="p">)):</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Prototype override key </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2"> is malformed: It must be a "</span>
|
||||
<span class="s2">"coordinate (X, Y) for nodes or (X, Y, direction) for links; "</span>
|
||||
<span class="s2">"where direction is a supported direction string ('n', 'ne', etc)."</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Prototype override key </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2"> is malformed: It must be a "</span>
|
||||
<span class="s2">"coordinate (X, Y) for nodes or (X, Y, direction) for links; "</span>
|
||||
<span class="s2">"where direction is a supported direction string ('n', 'ne', etc)."</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># store/update result</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">Z</span> <span class="o">=</span> <span class="n">mapdata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'zcoord'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Z</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">mapstring</span> <span class="o">=</span> <span class="n">mapdata</span><span class="p">[</span><span class="s1">'map'</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">prototypes</span> <span class="o">=</span> <span class="n">mapdata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'prototypes'</span><span class="p">,</span> <span class="p">{})</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="n">mapdata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'options'</span><span class="p">,</span> <span class="p">{})</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">Z</span> <span class="o">=</span> <span class="n">mapdata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zcoord"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Z</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">mapstring</span> <span class="o">=</span> <span class="n">mapdata</span><span class="p">[</span><span class="s2">"map"</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">prototypes</span> <span class="o">=</span> <span class="n">mapdata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"prototypes"</span><span class="p">,</span> <span class="p">{})</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="n">mapdata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"options"</span><span class="p">,</span> <span class="p">{})</span>
|
||||
|
||||
<span class="c1"># merge the custom legend onto the default legend to allow easily</span>
|
||||
<span class="c1"># overriding only parts of it</span>
|
||||
|
|
@ -399,8 +407,9 @@
|
|||
<span class="c1"># nothing more to do</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="c1"># we need to load the prototype dict onto each for ease of access. Note that</span>
|
||||
<span class="n">proto</span> <span class="o">=</span> <span class="n">protlib</span><span class="o">.</span><span class="n">search_prototype</span><span class="p">(</span><span class="n">prototype</span><span class="p">,</span> <span class="n">require_single</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">no_db</span><span class="o">=</span><span class="n">_NO_DB_PROTOTYPES</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">proto</span> <span class="o">=</span> <span class="n">protlib</span><span class="o">.</span><span class="n">search_prototype</span><span class="p">(</span>
|
||||
<span class="n">prototype</span><span class="p">,</span> <span class="n">require_single</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">no_db</span><span class="o">=</span><span class="n">_NO_DB_PROTOTYPES</span>
|
||||
<span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">node_or_link_class</span><span class="o">.</span><span class="n">prototype</span> <span class="o">=</span> <span class="n">proto</span></div>
|
||||
|
||||
<div class="viewcode-block" id="XYMap.parse"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap.html#evennia.contrib.grid.xyzgrid.xymap.XYMap.parse">[docs]</a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -433,7 +442,8 @@
|
|||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"The mapstring must have at least two '</span><span class="si">{</span><span class="n">mapcorner_symbol</span><span class="si">}</span><span class="s2">' "</span>
|
||||
<span class="s2">"symbols marking the upper- and bottom-left corners of the "</span>
|
||||
<span class="s2">"grid area."</span><span class="p">)</span>
|
||||
<span class="s2">"grid area."</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># find the the position (in the string as a whole) of the top-left corner-marker</span>
|
||||
<span class="n">maplines</span> <span class="o">=</span> <span class="n">mapstring</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
|
@ -448,13 +458,15 @@
|
|||
<span class="c1"># find the position (in the string as a whole) of the bottom-left corner-marker</span>
|
||||
<span class="c1"># this is always in a stright line down from the first marker</span>
|
||||
<span class="n">botleft_marker_x</span><span class="p">,</span> <span class="n">botleft_marker_y</span> <span class="o">=</span> <span class="n">topleft_marker_x</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="k">for</span> <span class="n">botleft_marker_y</span><span class="p">,</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">maplines</span><span class="p">[</span><span class="n">topleft_marker_y</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:]):</span>
|
||||
<span class="k">for</span> <span class="n">botleft_marker_y</span><span class="p">,</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">maplines</span><span class="p">[</span><span class="n">topleft_marker_y</span> <span class="o">+</span> <span class="mi">1</span> <span class="p">:]):</span>
|
||||
<span class="k">if</span> <span class="n">line</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">mapcorner_symbol</span><span class="p">)</span> <span class="o">==</span> <span class="n">topleft_marker_x</span><span class="p">:</span>
|
||||
<span class="k">break</span>
|
||||
<span class="k">if</span> <span class="n">botleft_marker_y</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No bottom-left corner-marker (</span><span class="si">{</span><span class="n">mapcorner_symbol</span><span class="si">}</span><span class="s2">) found! "</span>
|
||||
<span class="s2">"Make sure it lines up with the top-left corner-marker "</span>
|
||||
<span class="sa">f</span><span class="s2">"(found at column </span><span class="si">{</span><span class="n">topleft_marker_x</span><span class="si">}</span><span class="s2"> of the string)."</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"No bottom-left corner-marker (</span><span class="si">{</span><span class="n">mapcorner_symbol</span><span class="si">}</span><span class="s2">) found! "</span>
|
||||
<span class="s2">"Make sure it lines up with the top-left corner-marker "</span>
|
||||
<span class="sa">f</span><span class="s2">"(found at column </span><span class="si">{</span><span class="n">topleft_marker_x</span><span class="si">}</span><span class="s2"> of the string)."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># the actual coordinate is dy below the topleft marker so we need to shift</span>
|
||||
<span class="n">botleft_marker_y</span> <span class="o">+=</span> <span class="n">topleft_marker_y</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
|
||||
|
|
@ -485,8 +497,7 @@
|
|||
<span class="n">mapnode_or_link_class</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">legend</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">char</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">mapnode_or_link_class</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Symbol '</span><span class="si">{</span><span class="n">char</span><span class="si">}</span><span class="s2">' on XY=(</span><span class="si">{</span><span class="n">ix</span> <span class="o">/</span> <span class="mi">2</span><span class="si">:</span><span class="s2">g</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">iy</span> <span class="o">/</span> <span class="mi">2</span><span class="si">:</span><span class="s2">g</span><span class="si">}</span><span class="s2">) "</span>
|
||||
<span class="s2">"is not found in LEGEND."</span>
|
||||
<span class="sa">f</span><span class="s2">"Symbol '</span><span class="si">{</span><span class="n">char</span><span class="si">}</span><span class="s2">' on XY=(</span><span class="si">{</span><span class="n">ix</span> <span class="o">/</span> <span class="mi">2</span><span class="si">:</span><span class="s2">g</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">iy</span> <span class="o">/</span> <span class="mi">2</span><span class="si">:</span><span class="s2">g</span><span class="si">}</span><span class="s2">) "</span> <span class="s2">"is not found in LEGEND."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">mapnode_or_link_class</span><span class="p">,</span> <span class="s2">"node_index"</span><span class="p">):</span>
|
||||
<span class="c1"># A mapnode. Mapnodes can only be placed on even grid positions, where</span>
|
||||
|
|
@ -496,7 +507,8 @@
|
|||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Symbol '</span><span class="si">{</span><span class="n">char</span><span class="si">}</span><span class="s2">' on XY=(</span><span class="si">{</span><span class="n">ix</span> <span class="o">/</span> <span class="mi">2</span><span class="si">:</span><span class="s2">g</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">iy</span> <span class="o">/</span> <span class="mi">2</span><span class="si">:</span><span class="s2">g</span><span class="si">}</span><span class="s2">) marks a "</span>
|
||||
<span class="s2">"MapNode but is located between integer (X,Y) positions (only "</span>
|
||||
<span class="s2">"Links can be placed between coordinates)!"</span><span class="p">)</span>
|
||||
<span class="s2">"Links can be placed between coordinates)!"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># save the node to several different maps for different uses</span>
|
||||
<span class="c1"># in both coordinate systems</span>
|
||||
|
|
@ -504,14 +516,17 @@
|
|||
<span class="n">max_X</span><span class="p">,</span> <span class="n">max_Y</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">max_X</span><span class="p">,</span> <span class="n">iX</span><span class="p">),</span> <span class="nb">max</span><span class="p">(</span><span class="n">max_Y</span><span class="p">,</span> <span class="n">iY</span><span class="p">)</span>
|
||||
<span class="n">node_index</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="n">xygrid</span><span class="p">[</span><span class="n">ix</span><span class="p">][</span><span class="n">iy</span><span class="p">]</span> <span class="o">=</span> <span class="n">XYgrid</span><span class="p">[</span><span class="n">iX</span><span class="p">][</span><span class="n">iY</span><span class="p">]</span> <span class="o">=</span> <span class="n">node_index_map</span><span class="p">[</span><span class="n">node_index</span><span class="p">]</span> <span class="o">=</span> \
|
||||
<span class="n">mapnode_or_link_class</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="n">ix</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="n">iy</span><span class="p">,</span> <span class="n">Z</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">Z</span><span class="p">,</span>
|
||||
<span class="n">node_index</span><span class="o">=</span><span class="n">node_index</span><span class="p">,</span> <span class="n">symbol</span><span class="o">=</span><span class="n">char</span><span class="p">,</span> <span class="n">xymap</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
|
||||
<span class="n">xygrid</span><span class="p">[</span><span class="n">ix</span><span class="p">][</span><span class="n">iy</span><span class="p">]</span> <span class="o">=</span> <span class="n">XYgrid</span><span class="p">[</span><span class="n">iX</span><span class="p">][</span><span class="n">iY</span><span class="p">]</span> <span class="o">=</span> <span class="n">node_index_map</span><span class="p">[</span>
|
||||
<span class="n">node_index</span>
|
||||
<span class="p">]</span> <span class="o">=</span> <span class="n">mapnode_or_link_class</span><span class="p">(</span>
|
||||
<span class="n">x</span><span class="o">=</span><span class="n">ix</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="n">iy</span><span class="p">,</span> <span class="n">Z</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">Z</span><span class="p">,</span> <span class="n">node_index</span><span class="o">=</span><span class="n">node_index</span><span class="p">,</span> <span class="n">symbol</span><span class="o">=</span><span class="n">char</span><span class="p">,</span> <span class="n">xymap</span><span class="o">=</span><span class="bp">self</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># we have a link at this xygrid position (this is ok everywhere)</span>
|
||||
<span class="n">xygrid</span><span class="p">[</span><span class="n">ix</span><span class="p">][</span><span class="n">iy</span><span class="p">]</span> <span class="o">=</span> <span class="n">mapnode_or_link_class</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="n">ix</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="n">iy</span><span class="p">,</span> <span class="n">Z</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">Z</span><span class="p">,</span> <span class="n">symbol</span><span class="o">=</span><span class="n">char</span><span class="p">,</span>
|
||||
<span class="n">xymap</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
|
||||
<span class="n">xygrid</span><span class="p">[</span><span class="n">ix</span><span class="p">][</span><span class="n">iy</span><span class="p">]</span> <span class="o">=</span> <span class="n">mapnode_or_link_class</span><span class="p">(</span>
|
||||
<span class="n">x</span><span class="o">=</span><span class="n">ix</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="n">iy</span><span class="p">,</span> <span class="n">Z</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">Z</span><span class="p">,</span> <span class="n">symbol</span><span class="o">=</span><span class="n">char</span><span class="p">,</span> <span class="n">xymap</span><span class="o">=</span><span class="bp">self</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># store the symbol mapping for transition lookups</span>
|
||||
<span class="n">symbol_map</span><span class="p">[</span><span class="n">char</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">xygrid</span><span class="p">[</span><span class="n">ix</span><span class="p">][</span><span class="n">iy</span><span class="p">])</span>
|
||||
|
|
@ -541,20 +556,23 @@
|
|||
<span class="n">node_coord</span> <span class="o">=</span> <span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">X</span><span class="p">,</span> <span class="n">node</span><span class="o">.</span><span class="n">Y</span><span class="p">)</span>
|
||||
<span class="c1"># load prototype from override, or use default</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">node</span><span class="o">.</span><span class="n">prototype</span> <span class="o">=</span> <span class="n">flatten_prototype</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prototypes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">node_coord</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">prototypes</span><span class="o">.</span><span class="n">get</span><span class="p">((</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">),</span> <span class="n">node</span><span class="o">.</span><span class="n">prototype</span><span class="p">)),</span>
|
||||
<span class="n">no_db</span><span class="o">=</span><span class="n">_NO_DB_PROTOTYPES</span>
|
||||
<span class="n">node</span><span class="o">.</span><span class="n">prototype</span> <span class="o">=</span> <span class="n">flatten_prototype</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">prototypes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">node_coord</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">prototypes</span><span class="o">.</span><span class="n">get</span><span class="p">((</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">),</span> <span class="n">node</span><span class="o">.</span><span class="n">prototype</span><span class="p">)</span>
|
||||
<span class="p">),</span>
|
||||
<span class="n">no_db</span><span class="o">=</span><span class="n">_NO_DB_PROTOTYPES</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Room prototype malformed: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
||||
<span class="c1"># do the same for links (x, y, direction) coords</span>
|
||||
<span class="k">for</span> <span class="n">direction</span><span class="p">,</span> <span class="n">maplink</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">first_links</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">maplink</span><span class="o">.</span><span class="n">prototype</span> <span class="o">=</span> <span class="n">flatten_prototype</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prototypes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">node_coord</span> <span class="o">+</span> <span class="p">(</span><span class="n">direction</span><span class="p">,),</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">prototypes</span><span class="o">.</span><span class="n">get</span><span class="p">((</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">),</span> <span class="n">maplink</span><span class="o">.</span><span class="n">prototype</span><span class="p">)),</span>
|
||||
<span class="n">no_db</span><span class="o">=</span><span class="n">_NO_DB_PROTOTYPES</span>
|
||||
<span class="n">maplink</span><span class="o">.</span><span class="n">prototype</span> <span class="o">=</span> <span class="n">flatten_prototype</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">prototypes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">node_coord</span> <span class="o">+</span> <span class="p">(</span><span class="n">direction</span><span class="p">,),</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">prototypes</span><span class="o">.</span><span class="n">get</span><span class="p">((</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">),</span> <span class="n">maplink</span><span class="o">.</span><span class="n">prototype</span><span class="p">),</span>
|
||||
<span class="p">),</span>
|
||||
<span class="n">no_db</span><span class="o">=</span><span class="n">_NO_DB_PROTOTYPES</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Exit prototype malformed: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">maplink</span><span class="p">)</span>
|
||||
|
|
@ -581,8 +599,10 @@
|
|||
<span class="sd"> This performs a depth-first pass down the the given dist.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="nf">_scan_neighbors</span><span class="p">(</span><span class="n">start_node</span><span class="p">,</span> <span class="n">points</span><span class="p">,</span> <span class="n">dist</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="n">xmin</span><span class="o">=</span><span class="n">BIGVAL</span><span class="p">,</span> <span class="n">ymin</span><span class="o">=</span><span class="n">BIGVAL</span><span class="p">,</span> <span class="n">xmax</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">ymax</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">depth</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_scan_neighbors</span><span class="p">(</span>
|
||||
<span class="n">start_node</span><span class="p">,</span> <span class="n">points</span><span class="p">,</span> <span class="n">dist</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">xmin</span><span class="o">=</span><span class="n">BIGVAL</span><span class="p">,</span> <span class="n">ymin</span><span class="o">=</span><span class="n">BIGVAL</span><span class="p">,</span> <span class="n">xmax</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">ymax</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">depth</span><span class="o">=</span><span class="mi">0</span>
|
||||
<span class="p">):</span>
|
||||
|
||||
<span class="n">x0</span><span class="p">,</span> <span class="n">y0</span> <span class="o">=</span> <span class="n">start_node</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">start_node</span><span class="o">.</span><span class="n">y</span>
|
||||
<span class="n">points</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">x0</span><span class="p">,</span> <span class="n">y0</span><span class="p">))</span>
|
||||
|
|
@ -600,9 +620,15 @@
|
|||
<span class="n">ymin</span><span class="p">,</span> <span class="n">ymax</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">ymin</span><span class="p">,</span> <span class="n">y</span><span class="p">),</span> <span class="nb">max</span><span class="p">(</span><span class="n">ymax</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
||||
|
||||
<span class="n">points</span><span class="p">,</span> <span class="n">xmin</span><span class="p">,</span> <span class="n">xmax</span><span class="p">,</span> <span class="n">ymin</span><span class="p">,</span> <span class="n">ymax</span> <span class="o">=</span> <span class="n">_scan_neighbors</span><span class="p">(</span>
|
||||
<span class="n">end_node</span><span class="p">,</span> <span class="n">points</span><span class="p">,</span> <span class="n">dist</span><span class="o">=</span><span class="n">dist</span><span class="p">,</span>
|
||||
<span class="n">xmin</span><span class="o">=</span><span class="n">xmin</span><span class="p">,</span> <span class="n">ymin</span><span class="o">=</span><span class="n">ymin</span><span class="p">,</span> <span class="n">xmax</span><span class="o">=</span><span class="n">xmax</span><span class="p">,</span> <span class="n">ymax</span><span class="o">=</span><span class="n">ymax</span><span class="p">,</span>
|
||||
<span class="n">depth</span><span class="o">=</span><span class="n">depth</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">end_node</span><span class="p">,</span>
|
||||
<span class="n">points</span><span class="p">,</span>
|
||||
<span class="n">dist</span><span class="o">=</span><span class="n">dist</span><span class="p">,</span>
|
||||
<span class="n">xmin</span><span class="o">=</span><span class="n">xmin</span><span class="p">,</span>
|
||||
<span class="n">ymin</span><span class="o">=</span><span class="n">ymin</span><span class="p">,</span>
|
||||
<span class="n">xmax</span><span class="o">=</span><span class="n">xmax</span><span class="p">,</span>
|
||||
<span class="n">ymax</span><span class="o">=</span><span class="n">ymax</span><span class="p">,</span>
|
||||
<span class="n">depth</span><span class="o">=</span><span class="n">depth</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">points</span><span class="p">,</span> <span class="n">xmin</span><span class="p">,</span> <span class="n">xmax</span><span class="p">,</span> <span class="n">ymin</span><span class="p">,</span> <span class="n">ymax</span>
|
||||
|
||||
|
|
@ -623,14 +649,16 @@
|
|||
<span class="c1"># check if the solution for this grid was already solved previously.</span>
|
||||
|
||||
<span class="n">mapstr</span><span class="p">,</span> <span class="n">dist_matrix</span><span class="p">,</span> <span class="n">pathfinding_routes</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
|
||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pathfinder_baked_filename</span><span class="p">,</span> <span class="s1">'rb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fil</span><span class="p">:</span>
|
||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pathfinder_baked_filename</span><span class="p">,</span> <span class="s2">"rb"</span><span class="p">)</span> <span class="k">as</span> <span class="n">fil</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">mapstr</span><span class="p">,</span> <span class="n">dist_matrix</span><span class="p">,</span> <span class="n">pathfinding_routes</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">fil</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">mapstr</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">mapstring</span>
|
||||
<span class="ow">and</span> <span class="n">dist_matrix</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
|
||||
<span class="ow">and</span> <span class="n">pathfinding_routes</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="p">(</span>
|
||||
<span class="n">mapstr</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">mapstring</span>
|
||||
<span class="ow">and</span> <span class="n">dist_matrix</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
|
||||
<span class="ow">and</span> <span class="n">pathfinding_routes</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
|
||||
<span class="p">):</span>
|
||||
<span class="c1"># this is important - it means the map hasn't changed so</span>
|
||||
<span class="c1"># we can re-use the stored data!</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dist_matrix</span> <span class="o">=</span> <span class="n">dist_matrix</span>
|
||||
|
|
@ -648,16 +676,20 @@
|
|||
|
||||
<span class="c1"># solve using Dijkstra's algorithm</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dist_matrix</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">pathfinding_routes</span> <span class="o">=</span> <span class="n">dijkstra</span><span class="p">(</span>
|
||||
<span class="n">pathfinding_matrix</span><span class="p">,</span> <span class="n">directed</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">return_predecessors</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">max_pathfinding_length</span><span class="p">)</span>
|
||||
<span class="n">pathfinding_matrix</span><span class="p">,</span>
|
||||
<span class="n">directed</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">return_predecessors</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">limit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">max_pathfinding_length</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pathfinder_baked_filename</span><span class="p">:</span>
|
||||
<span class="c1"># try to cache the results</span>
|
||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pathfinder_baked_filename</span><span class="p">,</span> <span class="s1">'wb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fil</span><span class="p">:</span>
|
||||
<span class="n">pickle</span><span class="o">.</span><span class="n">dump</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">mapstring</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dist_matrix</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">pathfinding_routes</span><span class="p">),</span>
|
||||
<span class="n">fil</span><span class="p">,</span> <span class="n">protocol</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span></div>
|
||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pathfinder_baked_filename</span><span class="p">,</span> <span class="s2">"wb"</span><span class="p">)</span> <span class="k">as</span> <span class="n">fil</span><span class="p">:</span>
|
||||
<span class="n">pickle</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span>
|
||||
<span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mapstring</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dist_matrix</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">pathfinding_routes</span><span class="p">),</span> <span class="n">fil</span><span class="p">,</span> <span class="n">protocol</span><span class="o">=</span><span class="mi">4</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="XYMap.spawn_nodes"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap.html#evennia.contrib.grid.xyzgrid.xymap.XYMap.spawn_nodes">[docs]</a> <span class="k">def</span> <span class="nf">spawn_nodes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xy</span><span class="o">=</span><span class="p">(</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">)):</span>
|
||||
<div class="viewcode-block" id="XYMap.spawn_nodes"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap.html#evennia.contrib.grid.xyzgrid.xymap.XYMap.spawn_nodes">[docs]</a> <span class="k">def</span> <span class="nf">spawn_nodes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xy</span><span class="o">=</span><span class="p">(</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">)):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Convert the nodes of this XYMap into actual in-world rooms by spawning their</span>
|
||||
<span class="sd"> related prototypes in the correct coordinate positions. This must be done *first*</span>
|
||||
|
|
@ -680,12 +712,14 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_XYZROOMCLASS</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.contrib.grid.xyzgrid.xyzroom</span> <span class="kn">import</span> <span class="n">XYZRoom</span> <span class="k">as</span> <span class="n">_XYZROOMCLASS</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">xy</span>
|
||||
<span class="n">wildcard</span> <span class="o">=</span> <span class="s1">'*'</span>
|
||||
<span class="n">wildcard</span> <span class="o">=</span> <span class="s2">"*"</span>
|
||||
<span class="n">spawned</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
<span class="c1"># find existing nodes, in case some rooms need to be removed</span>
|
||||
<span class="n">map_coords</span> <span class="o">=</span> <span class="p">[(</span><span class="n">node</span><span class="o">.</span><span class="n">X</span><span class="p">,</span> <span class="n">node</span><span class="o">.</span><span class="n">Y</span><span class="p">)</span> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span>
|
||||
<span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">node_index_map</span><span class="o">.</span><span class="n">values</span><span class="p">(),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="p">(</span><span class="n">n</span><span class="o">.</span><span class="n">Y</span><span class="p">,</span> <span class="n">n</span><span class="o">.</span><span class="n">X</span><span class="p">))]</span>
|
||||
<span class="n">map_coords</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">X</span><span class="p">,</span> <span class="n">node</span><span class="o">.</span><span class="n">Y</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">node_index_map</span><span class="o">.</span><span class="n">values</span><span class="p">(),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="p">(</span><span class="n">n</span><span class="o">.</span><span class="n">Y</span><span class="p">,</span> <span class="n">n</span><span class="o">.</span><span class="n">X</span><span class="p">))</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">for</span> <span class="n">existing_room</span> <span class="ow">in</span> <span class="n">_XYZROOMCLASS</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter_xyz</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Z</span><span class="p">)):</span>
|
||||
<span class="n">roomX</span><span class="p">,</span> <span class="n">roomY</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">existing_room</span><span class="o">.</span><span class="n">xyz</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">roomX</span><span class="p">,</span> <span class="n">roomY</span><span class="p">)</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">map_coords</span><span class="p">:</span>
|
||||
|
|
@ -699,7 +733,7 @@
|
|||
<span class="n">spawned</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">spawned</span></div>
|
||||
|
||||
<div class="viewcode-block" id="XYMap.spawn_links"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap.html#evennia.contrib.grid.xyzgrid.xymap.XYMap.spawn_links">[docs]</a> <span class="k">def</span> <span class="nf">spawn_links</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xy</span><span class="o">=</span><span class="p">(</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">),</span> <span class="n">nodes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">directions</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="XYMap.spawn_links"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap.html#evennia.contrib.grid.xyzgrid.xymap.XYMap.spawn_links">[docs]</a> <span class="k">def</span> <span class="nf">spawn_links</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xy</span><span class="o">=</span><span class="p">(</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">),</span> <span class="n">nodes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">directions</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Convert links of this XYMap into actual in-game exits by spawning their related</span>
|
||||
<span class="sd"> prototypes. It's possible to only spawn a specic exit by specifying the node and</span>
|
||||
|
|
@ -718,7 +752,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">xy</span>
|
||||
<span class="n">wildcard</span> <span class="o">=</span> <span class="s1">'*'</span>
|
||||
<span class="n">wildcard</span> <span class="o">=</span> <span class="s2">"*"</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">nodes</span><span class="p">:</span>
|
||||
<span class="n">nodes</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">node_index_map</span><span class="o">.</span><span class="n">values</span><span class="p">(),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="p">(</span><span class="n">n</span><span class="o">.</span><span class="n">Z</span><span class="p">,</span> <span class="n">n</span><span class="o">.</span><span class="n">Y</span><span class="p">,</span> <span class="n">n</span><span class="o">.</span><span class="n">X</span><span class="p">))</span>
|
||||
|
|
@ -748,8 +782,10 @@
|
|||
|
||||
<span class="n">iX</span><span class="p">,</span> <span class="n">iY</span> <span class="o">=</span> <span class="n">xy</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">((</span><span class="mi">0</span> <span class="o"><=</span> <span class="n">iX</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_X</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="mi">0</span> <span class="o"><=</span> <span class="n">iY</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_Y</span><span class="p">)):</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"get_node_from_coord got coordinate </span><span class="si">{</span><span class="n">xy</span><span class="si">}</span><span class="s2"> which is "</span>
|
||||
<span class="sa">f</span><span class="s2">"outside the grid size of (0,0) - (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">max_X</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">max_Y</span><span class="si">}</span><span class="s2">)."</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"get_node_from_coord got coordinate </span><span class="si">{</span><span class="n">xy</span><span class="si">}</span><span class="s2"> which is "</span>
|
||||
<span class="sa">f</span><span class="s2">"outside the grid size of (0,0) - (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">max_X</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">max_Y</span><span class="si">}</span><span class="s2">)."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">XYgrid</span><span class="p">[</span><span class="n">iX</span><span class="p">][</span><span class="n">iY</span><span class="p">]</span>
|
||||
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
|
||||
|
|
@ -795,8 +831,10 @@
|
|||
<span class="n">istartnode</span> <span class="o">=</span> <span class="n">startnode</span><span class="o">.</span><span class="n">node_index</span>
|
||||
<span class="n">inextnode</span> <span class="o">=</span> <span class="n">endnode</span><span class="o">.</span><span class="n">node_index</span>
|
||||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Map.get_shortest_path received start/end nodes </span><span class="si">{</span><span class="n">startnode</span><span class="si">}</span><span class="s2"> and "</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">endnode</span><span class="si">}</span><span class="s2">. They must both be MapNodes (not Links)"</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Map.get_shortest_path received start/end nodes </span><span class="si">{</span><span class="n">startnode</span><span class="si">}</span><span class="s2"> and "</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">endnode</span><span class="si">}</span><span class="s2">. They must both be MapNodes (not Links)"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pathfinding_routes</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">calculate_path_matrix</span><span class="p">()</span>
|
||||
|
|
@ -824,13 +862,18 @@
|
|||
|
||||
<span class="k">return</span> <span class="n">directions</span><span class="p">,</span> <span class="n">path</span></div>
|
||||
|
||||
<div class="viewcode-block" id="XYMap.get_visual_range"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap.html#evennia.contrib.grid.xyzgrid.xymap.XYMap.get_visual_range">[docs]</a> <span class="k">def</span> <span class="nf">get_visual_range</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xy</span><span class="p">,</span> <span class="n">dist</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">'nodes'</span><span class="p">,</span>
|
||||
<span class="n">character</span><span class="o">=</span><span class="s1">'@'</span><span class="p">,</span>
|
||||
<span class="n">target</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">target_path_style</span><span class="o">=</span><span class="s2">"|y</span><span class="si">{display_symbol}</span><span class="s2">|n"</span><span class="p">,</span>
|
||||
<span class="n">max_size</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">indent</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
|
||||
<span class="n">return_str</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="XYMap.get_visual_range"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap.html#evennia.contrib.grid.xyzgrid.xymap.XYMap.get_visual_range">[docs]</a> <span class="k">def</span> <span class="nf">get_visual_range</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">xy</span><span class="p">,</span>
|
||||
<span class="n">dist</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="n">mode</span><span class="o">=</span><span class="s2">"nodes"</span><span class="p">,</span>
|
||||
<span class="n">character</span><span class="o">=</span><span class="s2">"@"</span><span class="p">,</span>
|
||||
<span class="n">target</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">target_path_style</span><span class="o">=</span><span class="s2">"|y</span><span class="si">{display_symbol}</span><span class="s2">|n"</span><span class="p">,</span>
|
||||
<span class="n">max_size</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">indent</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
|
||||
<span class="n">return_str</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Get a part of the grid centered on a specific point and extended a certain number</span>
|
||||
<span class="sd"> of nodes or grid points in every direction.</span>
|
||||
|
|
@ -918,7 +961,7 @@
|
|||
<span class="c1"># nothing but ourselves or emptiness</span>
|
||||
<span class="k">return</span> <span class="n">character</span> <span class="k">if</span> <span class="n">character</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">empty_symbol</span>
|
||||
|
||||
<span class="k">elif</span> <span class="n">mode</span> <span class="o">==</span> <span class="s1">'nodes'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">mode</span> <span class="o">==</span> <span class="s2">"nodes"</span><span class="p">:</span>
|
||||
<span class="c1"># dist measures only full, reachable nodes.</span>
|
||||
<span class="n">points</span><span class="p">,</span> <span class="n">xmin</span><span class="p">,</span> <span class="n">xmax</span><span class="p">,</span> <span class="n">ymin</span><span class="p">,</span> <span class="n">ymax</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_topology_around_coord</span><span class="p">(</span><span class="n">xy</span><span class="p">,</span> <span class="n">dist</span><span class="o">=</span><span class="n">dist</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -930,7 +973,7 @@
|
|||
<span class="k">for</span> <span class="p">(</span><span class="n">ix0</span><span class="p">,</span> <span class="n">iy0</span><span class="p">)</span> <span class="ow">in</span> <span class="n">points</span><span class="p">:</span>
|
||||
<span class="n">gridmap</span><span class="p">[</span><span class="n">iy0</span> <span class="o">-</span> <span class="n">ymin</span><span class="p">][</span><span class="n">ix0</span> <span class="o">-</span> <span class="n">xmin</span><span class="p">]</span> <span class="o">=</span> <span class="n">display_map</span><span class="p">[</span><span class="n">iy0</span><span class="p">][</span><span class="n">ix0</span><span class="p">]</span>
|
||||
|
||||
<span class="k">elif</span> <span class="n">mode</span> <span class="o">==</span> <span class="s1">'scan'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">mode</span> <span class="o">==</span> <span class="s2">"scan"</span><span class="p">:</span>
|
||||
<span class="c1"># scan-mode - dist measures individual grid points</span>
|
||||
|
||||
<span class="n">xmin</span><span class="p">,</span> <span class="n">xmax</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">ix</span> <span class="o">-</span> <span class="n">dist</span><span class="p">),</span> <span class="nb">min</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">ix</span> <span class="o">+</span> <span class="n">dist</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
|
||||
|
|
@ -939,8 +982,10 @@
|
|||
<span class="n">gridmap</span> <span class="o">=</span> <span class="p">[</span><span class="n">line</span><span class="p">[</span><span class="n">xmin</span><span class="p">:</span><span class="n">xmax</span><span class="p">]</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">display_map</span><span class="p">[</span><span class="n">ymin</span><span class="p">:</span><span class="n">ymax</span><span class="p">]]</span>
|
||||
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Map.get_visual_range 'mode' was '</span><span class="si">{</span><span class="n">mode</span><span class="si">}</span><span class="s2">' "</span>
|
||||
<span class="s2">"- it must be either 'scan' or 'nodes'."</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">MapError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Map.get_visual_range 'mode' was '</span><span class="si">{</span><span class="n">mode</span><span class="si">}</span><span class="s2">' "</span>
|
||||
<span class="s2">"- it must be either 'scan' or 'nodes'."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">character</span><span class="p">:</span>
|
||||
<span class="n">gridmap</span><span class="p">[</span><span class="n">iyc</span><span class="p">][</span><span class="n">ixc</span><span class="p">]</span> <span class="o">=</span> <span class="n">character</span> <span class="c1"># correct indexing; it's a list of lines</span>
|
||||
|
||||
|
|
@ -948,8 +993,7 @@
|
|||
<span class="c1"># stylize path to target</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_default_callable</span><span class="p">(</span><span class="n">node</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">target_path_style</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">display_symbol</span><span class="o">=</span><span class="n">node</span><span class="o">.</span><span class="n">get_display_symbol</span><span class="p">())</span>
|
||||
<span class="k">return</span> <span class="n">target_path_style</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">display_symbol</span><span class="o">=</span><span class="n">node</span><span class="o">.</span><span class="n">get_display_symbol</span><span class="p">())</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">target_path_style</span><span class="p">):</span>
|
||||
<span class="n">_target_path_style</span> <span class="o">=</span> <span class="n">target_path_style</span>
|
||||
|
|
@ -958,7 +1002,7 @@
|
|||
|
||||
<span class="n">_</span><span class="p">,</span> <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_shortest_path</span><span class="p">(</span><span class="n">xy</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span>
|
||||
|
||||
<span class="n">maxstep</span> <span class="o">=</span> <span class="n">dist</span> <span class="k">if</span> <span class="n">mode</span> <span class="o">==</span> <span class="s1">'nodes'</span> <span class="k">else</span> <span class="n">dist</span> <span class="o">/</span> <span class="mi">2</span>
|
||||
<span class="n">maxstep</span> <span class="o">=</span> <span class="n">dist</span> <span class="k">if</span> <span class="n">mode</span> <span class="o">==</span> <span class="s2">"nodes"</span> <span class="k">else</span> <span class="n">dist</span> <span class="o">/</span> <span class="mi">2</span>
|
||||
<span class="n">nsteps</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">node_or_link</span> <span class="ow">in</span> <span class="n">path</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">node_or_link</span><span class="p">,</span> <span class="s2">"node_index"</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -56,7 +56,8 @@
|
|||
<span class="k">except</span> <span class="ne">ImportError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="se">\n</span><span class="s2">The XYZgrid contrib requires "</span>
|
||||
<span class="s2">"the SciPy package. Install with `pip install scipy'."</span><span class="p">)</span>
|
||||
<span class="s2">"the SciPy package. Install with `pip install scipy'."</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">uuid</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">defaultdict</span>
|
||||
|
|
@ -75,6 +76,7 @@
|
|||
|
||||
<span class="c1"># Nodes/Links</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="MapNode"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.MapNode">[docs]</a><span class="k">class</span> <span class="nc">MapNode</span><span class="p">:</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> This represents a 'room' node on the map. Note that the map system deals with two grids, the</span>
|
||||
|
|
@ -104,8 +106,9 @@
|
|||
<span class="sd"> for various reasons, mostly map-transitions).</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="c1"># symbol used to identify this link on the map</span>
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s1">'#'</span>
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"#"</span>
|
||||
<span class="c1"># if printing this node should show another symbol. If set</span>
|
||||
<span class="c1"># to the empty string, use `symbol`.</span>
|
||||
<span class="n">display_symbol</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
|
@ -121,16 +124,16 @@
|
|||
<span class="n">multilink</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="c1"># default values to use if the exit doesn't have a 'spawn_aliases' iterable</span>
|
||||
<span class="n">direction_spawn_defaults</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'n'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'north'</span><span class="p">,</span> <span class="s1">'n'</span><span class="p">),</span>
|
||||
<span class="s1">'ne'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'northeast'</span><span class="p">,</span> <span class="s1">'ne'</span><span class="p">,</span> <span class="s1">'north-east'</span><span class="p">),</span>
|
||||
<span class="s1">'e'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'east'</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">),</span>
|
||||
<span class="s1">'se'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'southeast'</span><span class="p">,</span> <span class="s1">'se'</span><span class="p">,</span> <span class="s1">'south-east'</span><span class="p">),</span>
|
||||
<span class="s1">'s'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'south'</span><span class="p">,</span> <span class="s1">'s'</span><span class="p">),</span>
|
||||
<span class="s1">'sw'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'southwest'</span><span class="p">,</span> <span class="s1">'sw'</span><span class="p">,</span> <span class="s1">'south-west'</span><span class="p">),</span>
|
||||
<span class="s1">'w'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'west'</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">),</span>
|
||||
<span class="s1">'nw'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'northwest'</span><span class="p">,</span> <span class="s1">'nw'</span><span class="p">,</span> <span class="s1">'north-west'</span><span class="p">),</span>
|
||||
<span class="s1">'d'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'down'</span><span class="p">,</span> <span class="s1">'d'</span><span class="p">,</span> <span class="s1">'do'</span><span class="p">),</span>
|
||||
<span class="s1">'u'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'up'</span><span class="p">,</span> <span class="s1">'u'</span><span class="p">),</span>
|
||||
<span class="s2">"n"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"north"</span><span class="p">,</span> <span class="s2">"n"</span><span class="p">),</span>
|
||||
<span class="s2">"ne"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"northeast"</span><span class="p">,</span> <span class="s2">"ne"</span><span class="p">,</span> <span class="s2">"north-east"</span><span class="p">),</span>
|
||||
<span class="s2">"e"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"east"</span><span class="p">,</span> <span class="s2">"e"</span><span class="p">),</span>
|
||||
<span class="s2">"se"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"southeast"</span><span class="p">,</span> <span class="s2">"se"</span><span class="p">,</span> <span class="s2">"south-east"</span><span class="p">),</span>
|
||||
<span class="s2">"s"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"south"</span><span class="p">,</span> <span class="s2">"s"</span><span class="p">),</span>
|
||||
<span class="s2">"sw"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"southwest"</span><span class="p">,</span> <span class="s2">"sw"</span><span class="p">,</span> <span class="s2">"south-west"</span><span class="p">),</span>
|
||||
<span class="s2">"w"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"west"</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">),</span>
|
||||
<span class="s2">"nw"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"northwest"</span><span class="p">,</span> <span class="s2">"nw"</span><span class="p">,</span> <span class="s2">"north-west"</span><span class="p">),</span>
|
||||
<span class="s2">"d"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"down"</span><span class="p">,</span> <span class="s2">"d"</span><span class="p">,</span> <span class="s2">"do"</span><span class="p">),</span>
|
||||
<span class="s2">"u"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"up"</span><span class="p">,</span> <span class="s2">"u"</span><span class="p">),</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<div class="viewcode-block" id="MapNode.__init__"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.MapNode.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">Z</span><span class="p">,</span> <span class="n">node_index</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">symbol</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">xymap</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
|
|
@ -244,7 +247,9 @@
|
|||
<span class="k">if</span> <span class="n">first_step_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">closest_neighbor_names</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"has more than one outgoing direction '</span><span class="si">{</span><span class="n">first_step_name</span><span class="si">}</span><span class="s2">'. "</span>
|
||||
<span class="s2">"All directions out of a node must be unique."</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="s2">"All directions out of a node must be unique."</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">closest_neighbor_names</span><span class="p">[</span><span class="n">first_step_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">direction</span>
|
||||
|
||||
<span class="n">node_index</span> <span class="o">=</span> <span class="n">end_node</span><span class="o">.</span><span class="n">node_index</span>
|
||||
|
|
@ -257,8 +262,9 @@
|
|||
<span class="c1"># used for building the shortest path. Note that we store the</span>
|
||||
<span class="c1"># aliased link directions here, for quick display by the</span>
|
||||
<span class="c1"># shortest-route solver</span>
|
||||
<span class="n">shortest_route</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shortest_route_to_node</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">node_index</span><span class="p">,</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="p">[],</span> <span class="n">BIGVAL</span><span class="p">))[</span><span class="mi">2</span><span class="p">]</span>
|
||||
<span class="n">shortest_route</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shortest_route_to_node</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node_index</span><span class="p">,</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="p">[],</span> <span class="n">BIGVAL</span><span class="p">))[</span>
|
||||
<span class="mi">2</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">weight</span> <span class="o"><</span> <span class="n">shortest_route</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">shortest_route_to_node</span><span class="p">[</span><span class="n">node_index</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">first_step_name</span><span class="p">,</span> <span class="n">steps</span><span class="p">,</span> <span class="n">weight</span><span class="p">)</span></div>
|
||||
|
||||
|
|
@ -322,11 +328,9 @@
|
|||
<span class="sd"> str or tuple: The key of the spawned exit, or a tuple (key, alias, alias, ...)</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">key</span><span class="p">,</span> <span class="o">*</span><span class="n">aliases</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">first_links</span><span class="p">[</span><span class="n">direction</span><span class="p">]</span>
|
||||
<span class="o">.</span><span class="n">spawn_aliases</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">direction</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">direction_spawn_defaults</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">direction</span><span class="p">,</span> <span class="p">(</span><span class="s1">'unknown'</span><span class="p">,</span> <span class="p">))))</span>
|
||||
<span class="n">key</span><span class="p">,</span> <span class="o">*</span><span class="n">aliases</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">first_links</span><span class="p">[</span><span class="n">direction</span><span class="p">]</span><span class="o">.</span><span class="n">spawn_aliases</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">direction</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">direction_spawn_defaults</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">direction</span><span class="p">,</span> <span class="p">(</span><span class="s2">"unknown"</span><span class="p">,))</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">return_aliases</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="o">*</span><span class="n">aliases</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">key</span></div>
|
||||
|
|
@ -355,28 +359,24 @@
|
|||
<span class="n">nodeobj</span> <span class="o">=</span> <span class="n">NodeTypeclass</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_xyz</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="n">xyz</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">django_exceptions</span><span class="o">.</span><span class="n">ObjectDoesNotExist</span><span class="p">:</span>
|
||||
<span class="c1"># create a new entity with proper coordinates etc</span>
|
||||
<span class="n">tclass</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prototype</span><span class="p">[</span><span class="s1">'typeclass'</span><span class="p">]</span>
|
||||
<span class="n">tclass</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s1">' (</span><span class="si">{</span><span class="n">tclass</span><span class="si">}</span><span class="s1">)'</span>
|
||||
<span class="k">if</span> <span class="n">tclass</span> <span class="o">!=</span> <span class="s1">'evennia.contrib.grid.xyzgrid.xyzroom.XYZRoom'</span>
|
||||
<span class="k">else</span> <span class="s1">''</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="sa">f</span><span class="s2">" spawning room at xyz=</span><span class="si">{</span><span class="n">xyz</span><span class="si">}{</span><span class="n">tclass</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">nodeobj</span><span class="p">,</span> <span class="n">err</span> <span class="o">=</span> <span class="n">NodeTypeclass</span><span class="o">.</span><span class="n">create</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">prototype</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'key'</span><span class="p">,</span> <span class="s1">'An empty room'</span><span class="p">),</span>
|
||||
<span class="n">xyz</span><span class="o">=</span><span class="n">xyz</span>
|
||||
<span class="n">tclass</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prototype</span><span class="p">[</span><span class="s2">"typeclass"</span><span class="p">]</span>
|
||||
<span class="n">tclass</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">tclass</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">tclass</span> <span class="o">!=</span> <span class="s2">"evennia.contrib.grid.xyzgrid.xyzroom.XYZRoom"</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="sa">f</span><span class="s2">" spawning room at xyz=</span><span class="si">{</span><span class="n">xyz</span><span class="si">}{</span><span class="n">tclass</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">nodeobj</span><span class="p">,</span> <span class="n">err</span> <span class="o">=</span> <span class="n">NodeTypeclass</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prototype</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"key"</span><span class="p">,</span> <span class="s2">"An empty room"</span><span class="p">),</span> <span class="n">xyz</span><span class="o">=</span><span class="n">xyz</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="sa">f</span><span class="s2">" updating existing room (if changed) at xyz=</span><span class="si">{</span><span class="n">xyz</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">prototype</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'prototype_key'</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">prototype</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"prototype_key"</span><span class="p">):</span>
|
||||
<span class="c1"># make sure there is a prototype_key in prototype</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">prototype</span><span class="p">[</span><span class="s1">'prototype_key'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">generate_prototype_key</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">prototype</span><span class="p">[</span><span class="s2">"prototype_key"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">generate_prototype_key</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># apply prototype to node. This will not override the XYZ tags since</span>
|
||||
<span class="c1"># these are not in the prototype and exact=False</span>
|
||||
<span class="n">spawner</span><span class="o">.</span><span class="n">batch_update_objects_with_prototype</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">prototype</span><span class="p">,</span> <span class="n">objects</span><span class="o">=</span><span class="p">[</span><span class="n">nodeobj</span><span class="p">],</span> <span class="n">exact</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></div>
|
||||
<span class="n">spawner</span><span class="o">.</span><span class="n">batch_update_objects_with_prototype</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prototype</span><span class="p">,</span> <span class="n">objects</span><span class="o">=</span><span class="p">[</span><span class="n">nodeobj</span><span class="p">],</span> <span class="n">exact</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="MapNode.spawn_links"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.MapNode.spawn_links">[docs]</a> <span class="k">def</span> <span class="nf">spawn_links</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">directions</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -406,9 +406,9 @@
|
|||
<span class="k">for</span> <span class="n">direction</span><span class="p">,</span> <span class="n">link</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">first_links</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
|
||||
<span class="n">key</span><span class="p">,</span> <span class="o">*</span><span class="n">aliases</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_exit_spawn_name</span><span class="p">(</span><span class="n">direction</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">link</span><span class="o">.</span><span class="n">prototype</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'prototype_key'</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">link</span><span class="o">.</span><span class="n">prototype</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"prototype_key"</span><span class="p">):</span>
|
||||
<span class="c1"># generate a deterministic prototype_key if it doesn't exist</span>
|
||||
<span class="n">link</span><span class="o">.</span><span class="n">prototype</span><span class="p">[</span><span class="s1">'prototype_key'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">generate_prototype_key</span><span class="p">()</span>
|
||||
<span class="n">link</span><span class="o">.</span><span class="n">prototype</span><span class="p">[</span><span class="s2">"prototype_key"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">generate_prototype_key</span><span class="p">()</span>
|
||||
<span class="n">maplinks</span><span class="p">[</span><span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()]</span> <span class="o">=</span> <span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">aliases</span><span class="p">,</span> <span class="n">direction</span><span class="p">,</span> <span class="n">link</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># remove duplicates</span>
|
||||
|
|
@ -422,8 +422,7 @@
|
|||
|
||||
<span class="c1"># we need to search for exits in all directions since some</span>
|
||||
<span class="c1"># may have been removed since last sync</span>
|
||||
<span class="n">linkobjs</span> <span class="o">=</span> <span class="p">{</span><span class="n">exi</span><span class="o">.</span><span class="n">db_key</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span> <span class="n">exi</span>
|
||||
<span class="k">for</span> <span class="n">exi</span> <span class="ow">in</span> <span class="n">ExitTypeclass</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter_xyz</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="n">xyz</span><span class="p">)}</span>
|
||||
<span class="n">linkobjs</span> <span class="o">=</span> <span class="p">{</span><span class="n">exi</span><span class="o">.</span><span class="n">db_key</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span> <span class="n">exi</span> <span class="k">for</span> <span class="n">exi</span> <span class="ow">in</span> <span class="n">ExitTypeclass</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter_xyz</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="n">xyz</span><span class="p">)}</span>
|
||||
|
||||
<span class="c1"># figure out if the topology changed between grid and map (will always</span>
|
||||
<span class="c1"># build all exits first run)</span>
|
||||
|
|
@ -453,16 +452,19 @@
|
|||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
|
||||
<span class="n">linkobjs</span><span class="p">[</span><span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()]</span> <span class="o">=</span> <span class="n">exi</span>
|
||||
<span class="n">prot</span> <span class="o">=</span> <span class="n">maplinks</span><span class="p">[</span><span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()][</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">prototype</span>
|
||||
<span class="n">tclass</span> <span class="o">=</span> <span class="n">prot</span><span class="p">[</span><span class="s1">'typeclass'</span><span class="p">]</span>
|
||||
<span class="n">tclass</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s1">' (</span><span class="si">{</span><span class="n">tclass</span><span class="si">}</span><span class="s1">)'</span>
|
||||
<span class="k">if</span> <span class="n">tclass</span> <span class="o">!=</span> <span class="s1">'evennia.contrib.grid.xyzgrid.xyzroom.XYZExit'</span>
|
||||
<span class="k">else</span> <span class="s1">''</span><span class="p">)</span>
|
||||
<span class="n">tclass</span> <span class="o">=</span> <span class="n">prot</span><span class="p">[</span><span class="s2">"typeclass"</span><span class="p">]</span>
|
||||
<span class="n">tclass</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">tclass</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="k">if</span> <span class="n">tclass</span> <span class="o">!=</span> <span class="s2">"evennia.contrib.grid.xyzgrid.xyzroom.XYZExit"</span>
|
||||
<span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="sa">f</span><span class="s2">" spawning/updating exit xyz=</span><span class="si">{</span><span class="n">xyz</span><span class="si">}</span><span class="s2">, direction=</span><span class="si">{</span><span class="n">key</span><span class="si">}{</span><span class="n">tclass</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># apply prototypes to catch any changes</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">linkobj</span> <span class="ow">in</span> <span class="n">linkobjs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="n">spawner</span><span class="o">.</span><span class="n">batch_update_objects_with_prototype</span><span class="p">(</span>
|
||||
<span class="n">maplinks</span><span class="p">[</span><span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()][</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">prototype</span><span class="p">,</span> <span class="n">objects</span><span class="o">=</span><span class="p">[</span><span class="n">linkobj</span><span class="p">],</span> <span class="n">exact</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></div>
|
||||
<span class="n">maplinks</span><span class="p">[</span><span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()][</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">prototype</span><span class="p">,</span> <span class="n">objects</span><span class="o">=</span><span class="p">[</span><span class="n">linkobj</span><span class="p">],</span> <span class="n">exact</span><span class="o">=</span><span class="kc">False</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="MapNode.unspawn"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.MapNode.unspawn">[docs]</a> <span class="k">def</span> <span class="nf">unspawn</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -508,8 +510,9 @@
|
|||
<span class="sd"> actual rooms (`#`) on the other map (NOT to the `T`s)!</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s1">'T'</span>
|
||||
<span class="n">display_symbol</span> <span class="o">=</span> <span class="s1">' '</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"T"</span>
|
||||
<span class="n">display_symbol</span> <span class="o">=</span> <span class="s2">" "</span>
|
||||
<span class="c1"># X,Y,Z coordinates of target node</span>
|
||||
<span class="n">taget_map_xyz</span> <span class="o">=</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -519,10 +522,13 @@
|
|||
<span class="sd"> the exit to this node (since the prototype is None, this node itself will not be built).</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="nb">any</span><span class="p">(</span><span class="kc">True</span> <span class="k">for</span> <span class="n">coord</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">target_map_xyz</span> <span class="k">if</span> <span class="n">coord</span> <span class="ow">in</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'unset'</span><span class="p">)):</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"(Z=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">xymap</span><span class="o">.</span><span class="n">Z</span><span class="si">}</span><span class="s2">) has not defined its "</span>
|
||||
<span class="s2">"`.target_map_xyz` property. It must point "</span>
|
||||
<span class="s2">"to another valid xymap (Z coordinate)."</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">any</span><span class="p">(</span><span class="kc">True</span> <span class="k">for</span> <span class="n">coord</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">target_map_xyz</span> <span class="k">if</span> <span class="n">coord</span> <span class="ow">in</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="s2">"unset"</span><span class="p">)):</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"(Z=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">xymap</span><span class="o">.</span><span class="n">Z</span><span class="si">}</span><span class="s2">) has not defined its "</span>
|
||||
<span class="s2">"`.target_map_xyz` property. It must point "</span>
|
||||
<span class="s2">"to another valid xymap (Z coordinate)."</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">target_map_xyz</span></div>
|
||||
|
||||
|
|
@ -590,6 +596,7 @@
|
|||
<span class="sd"> `node.get_exit_spawn_name(direction)`</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="c1"># symbol for identifying this link on the map</span>
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="c1"># if `None`, use .symbol</span>
|
||||
|
|
@ -703,7 +710,9 @@
|
|||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">None</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"was connected to from the direction </span><span class="si">{</span><span class="n">start_direction</span><span class="si">}</span><span class="s2">, but "</span>
|
||||
<span class="s2">"is not set up to link in that direction."</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="s2">"is not set up to link in that direction."</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># note that if `get_direction` returns an unknown direction, this will be equivalent</span>
|
||||
<span class="c1"># to pointing to an empty location, which makes sense</span>
|
||||
|
|
@ -716,8 +725,7 @@
|
|||
<span class="n">next_target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">at_empty_target</span><span class="p">(</span><span class="n">start_direction</span><span class="p">,</span> <span class="n">end_direction</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">next_target</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"points to empty space in the direction </span><span class="si">{</span><span class="n">end_direction</span><span class="si">}</span><span class="s2">!"</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"points to empty space in the direction </span><span class="si">{</span><span class="n">end_direction</span><span class="si">}</span><span class="s2">!"</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<span class="n">_weight</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_weight</span><span class="p">(</span><span class="n">start_direction</span><span class="p">,</span> <span class="n">_weight</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">_steps</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
|
|
@ -730,13 +738,16 @@
|
|||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="n">next_target</span><span class="p">,</span>
|
||||
<span class="n">_weight</span> <span class="o">/</span> <span class="nb">max</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">_linklen</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">average_long_link_weights</span> <span class="k">else</span> <span class="n">_weight</span><span class="p">,</span>
|
||||
<span class="n">_steps</span>
|
||||
<span class="n">_steps</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># we hit another link. Progress recursively.</span>
|
||||
<span class="k">return</span> <span class="n">next_target</span><span class="o">.</span><span class="n">traverse</span><span class="p">(</span>
|
||||
<span class="n">REVERSE_DIRECTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">end_direction</span><span class="p">,</span> <span class="n">end_direction</span><span class="p">),</span>
|
||||
<span class="n">_weight</span><span class="o">=</span><span class="n">_weight</span><span class="p">,</span> <span class="n">_linklen</span><span class="o">=</span><span class="n">_linklen</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">_steps</span><span class="o">=</span><span class="n">_steps</span><span class="p">)</span></div>
|
||||
<span class="n">_weight</span><span class="o">=</span><span class="n">_weight</span><span class="p">,</span>
|
||||
<span class="n">_linklen</span><span class="o">=</span><span class="n">_linklen</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="n">_steps</span><span class="o">=</span><span class="n">_steps</span><span class="p">,</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="MapLink.get_linked_neighbors"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.MapLink.get_linked_neighbors">[docs]</a> <span class="k">def</span> <span class="nf">get_linked_neighbors</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">directions</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -762,8 +773,7 @@
|
|||
<span class="c1"># there is is something there, we need to check if it is either</span>
|
||||
<span class="c1"># a map node or a link connecting in our direction</span>
|
||||
<span class="n">node_or_link</span> <span class="o">=</span> <span class="n">xygrid</span><span class="p">[</span><span class="n">end_x</span><span class="p">][</span><span class="n">end_y</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">node_or_link</span><span class="o">.</span><span class="n">multilink</span>
|
||||
<span class="ow">or</span> <span class="n">node_or_link</span><span class="o">.</span><span class="n">get_direction</span><span class="p">(</span><span class="n">direction</span><span class="p">)):</span>
|
||||
<span class="k">if</span> <span class="n">node_or_link</span><span class="o">.</span><span class="n">multilink</span> <span class="ow">or</span> <span class="n">node_or_link</span><span class="o">.</span><span class="n">get_direction</span><span class="p">(</span><span class="n">direction</span><span class="p">):</span>
|
||||
<span class="n">links</span><span class="p">[</span><span class="n">direction</span><span class="p">]</span> <span class="o">=</span> <span class="n">node_or_link</span>
|
||||
<span class="k">return</span> <span class="n">links</span></div>
|
||||
|
||||
|
|
@ -887,7 +897,8 @@
|
|||
<span class="k">for</span> <span class="n">direction</span> <span class="ow">in</span> <span class="n">unhandled_links_copy</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">REVERSE_DIRECTIONS</span><span class="p">[</span><span class="n">direction</span><span class="p">]</span> <span class="ow">in</span> <span class="n">unhandled_links_copy</span><span class="p">:</span>
|
||||
<span class="n">directions</span><span class="p">[</span><span class="n">direction</span><span class="p">]</span> <span class="o">=</span> <span class="n">REVERSE_DIRECTIONS</span><span class="p">[</span>
|
||||
<span class="n">unhandled_links</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">unhandled_links</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">direction</span><span class="p">))]</span>
|
||||
<span class="n">unhandled_links</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">unhandled_links</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">direction</span><span class="p">))</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="c1"># check if we have any non-cross-through paths left to handle</span>
|
||||
<span class="n">n_unhandled</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">unhandled_links</span><span class="p">)</span>
|
||||
|
|
@ -898,7 +909,8 @@
|
|||
<span class="k">if</span> <span class="n">n_unhandled</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="n">links</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">unhandled_links</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"cannot determine how to connect in/out directions </span><span class="si">{</span><span class="n">links</span><span class="si">}</span><span class="s2">."</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"cannot determine how to connect in/out directions </span><span class="si">{</span><span class="n">links</span><span class="si">}</span><span class="s2">."</span><span class="p">,</span> <span class="bp">self</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">directions</span><span class="p">[</span><span class="n">unhandled_links</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">unhandled_links</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">directions</span><span class="p">[</span><span class="n">unhandled_links</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">unhandled_links</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
|
@ -907,6 +919,7 @@
|
|||
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">directions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">start_direction</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="SmartTeleporterMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.SmartTeleporterMapLink">[docs]</a><span class="k">class</span> <span class="nc">SmartTeleporterMapLink</span><span class="p">(</span><span class="n">MapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> The teleport link works by connecting to nowhere - and will then continue</span>
|
||||
|
|
@ -931,10 +944,11 @@
|
|||
<span class="sd"> -#-t-# - invalid, only one connected link is allowed.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s1">'t'</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"t"</span>
|
||||
<span class="c1"># usually invisible</span>
|
||||
<span class="n">display_symbol</span> <span class="o">=</span> <span class="s1">' '</span>
|
||||
<span class="n">direction_name</span> <span class="o">=</span> <span class="s1">'teleport'</span>
|
||||
<span class="n">display_symbol</span> <span class="o">=</span> <span class="s2">" "</span>
|
||||
<span class="n">direction_name</span> <span class="o">=</span> <span class="s2">"teleport"</span>
|
||||
|
||||
<div class="viewcode-block" id="SmartTeleporterMapLink.__init__"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.SmartTeleporterMapLink.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
|
@ -974,7 +988,9 @@
|
|||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">found_teleporters</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span>
|
||||
<span class="s2">"found too many matching teleporters (must be exactly one more): "</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">found_teleporters</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">found_teleporters</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">other_teleporter</span> <span class="o">=</span> <span class="n">found_teleporters</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="c1"># link the two so we don't need to scan again for the other one</span>
|
||||
|
|
@ -994,9 +1010,10 @@
|
|||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">neighbors</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span><span class="s2">"must have exactly one link connected to it."</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="n">direction</span><span class="p">,</span> <span class="n">link</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">neighbors</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">link</span><span class="p">,</span> <span class="s1">'node_index'</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span><span class="s2">"can only connect to a Link. Found </span><span class="si">{link}</span><span class="s2"> in "</span>
|
||||
<span class="s2">"direction </span><span class="si">{direction}</span><span class="s2">."</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">link</span><span class="p">,</span> <span class="s2">"node_index"</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="n">MapParserError</span><span class="p">(</span>
|
||||
<span class="s2">"can only connect to a Link. Found </span><span class="si">{link}</span><span class="s2"> in "</span> <span class="s2">"direction </span><span class="si">{direction}</span><span class="s2">."</span><span class="p">,</span> <span class="bp">self</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># the string 'teleport' will not be understood by the traverser, leading to</span>
|
||||
<span class="c1"># this being interpreted as an empty target and the `at_empty_target`</span>
|
||||
<span class="c1"># hook firing when trying to traverse this link.</span>
|
||||
|
|
@ -1004,12 +1021,10 @@
|
|||
<span class="k">if</span> <span class="n">start_direction</span> <span class="o">==</span> <span class="n">direction_name</span><span class="p">:</span>
|
||||
<span class="c1"># called while traversing another teleport</span>
|
||||
<span class="c1"># - we must make sure we can always access/leave the teleport.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="n">direction_name</span><span class="p">:</span> <span class="n">direction</span><span class="p">,</span>
|
||||
<span class="n">direction</span><span class="p">:</span> <span class="n">direction_name</span><span class="p">}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="n">direction_name</span><span class="p">:</span> <span class="n">direction</span><span class="p">,</span> <span class="n">direction</span><span class="p">:</span> <span class="n">direction_name</span><span class="p">}</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># called while traversing a normal link</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="n">start_direction</span><span class="p">:</span> <span class="n">direction_name</span><span class="p">,</span>
|
||||
<span class="n">direction_name</span><span class="p">:</span> <span class="n">direction</span><span class="p">}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="n">start_direction</span><span class="p">:</span> <span class="n">direction_name</span><span class="p">,</span> <span class="n">direction_name</span><span class="p">:</span> <span class="n">direction</span><span class="p">}</span>
|
||||
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">directions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">start_direction</span><span class="p">)</span></div></div>
|
||||
|
||||
|
|
@ -1058,6 +1073,7 @@
|
|||
<span class="sd"> # |</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">multilink</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<div class="viewcode-block" id="SmartMapLink.get_direction"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.SmartMapLink.get_direction">[docs]</a> <span class="k">def</span> <span class="nf">get_direction</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start_direction</span><span class="p">):</span>
|
||||
|
|
@ -1069,8 +1085,11 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">directions</span><span class="p">:</span>
|
||||
<span class="n">directions</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">neighbors</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_linked_neighbors</span><span class="p">()</span>
|
||||
<span class="n">nodes</span> <span class="o">=</span> <span class="p">[</span><span class="n">direction</span> <span class="k">for</span> <span class="n">direction</span><span class="p">,</span> <span class="n">neighbor</span> <span class="ow">in</span> <span class="n">neighbors</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">neighbor</span><span class="p">,</span> <span class="s1">'node_index'</span><span class="p">)]</span>
|
||||
<span class="n">nodes</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">direction</span>
|
||||
<span class="k">for</span> <span class="n">direction</span><span class="p">,</span> <span class="n">neighbor</span> <span class="ow">in</span> <span class="n">neighbors</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">neighbor</span><span class="p">,</span> <span class="s2">"node_index"</span><span class="p">)</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">nodes</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="c1"># prefer link to these two nodes</span>
|
||||
|
|
@ -1084,7 +1103,9 @@
|
|||
<span class="s2">"must have exactly two connections - either directly to "</span>
|
||||
<span class="s2">"two nodes or connecting directly to one node and with exactly one other "</span>
|
||||
<span class="sa">f</span><span class="s2">"link direction. The neighbor(s) in directions </span><span class="si">{</span><span class="nb">list</span><span class="p">(</span><span class="n">neighbors</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span><span class="si">}</span><span class="s2"> do "</span>
|
||||
<span class="s2">"not fulfill these criteria."</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="s2">"not fulfill these criteria."</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">directions</span> <span class="o">=</span> <span class="n">directions</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">directions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">start_direction</span><span class="p">)</span></div></div>
|
||||
|
|
@ -1113,20 +1134,26 @@
|
|||
<span class="c1"># this allows for normal movement directions even if the invisible-node</span>
|
||||
<span class="c1"># is marked with a different symbol.</span>
|
||||
<span class="n">direction_aliases</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'n'</span><span class="p">:</span> <span class="s1">'n'</span><span class="p">,</span> <span class="s1">'ne'</span><span class="p">:</span> <span class="s1">'ne'</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">:</span> <span class="s1">'e'</span><span class="p">,</span> <span class="s1">'se'</span><span class="p">:</span> <span class="s1">'se'</span><span class="p">,</span>
|
||||
<span class="s1">'s'</span><span class="p">:</span> <span class="s1">'s'</span><span class="p">,</span> <span class="s1">'sw'</span><span class="p">:</span> <span class="s1">'sw'</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">:</span> <span class="s1">'w'</span><span class="p">,</span> <span class="s1">'nw'</span><span class="p">:</span> <span class="s1">'nw'</span>
|
||||
<span class="s2">"n"</span><span class="p">:</span> <span class="s2">"n"</span><span class="p">,</span>
|
||||
<span class="s2">"ne"</span><span class="p">:</span> <span class="s2">"ne"</span><span class="p">,</span>
|
||||
<span class="s2">"e"</span><span class="p">:</span> <span class="s2">"e"</span><span class="p">,</span>
|
||||
<span class="s2">"se"</span><span class="p">:</span> <span class="s2">"se"</span><span class="p">,</span>
|
||||
<span class="s2">"s"</span><span class="p">:</span> <span class="s2">"s"</span><span class="p">,</span>
|
||||
<span class="s2">"sw"</span><span class="p">:</span> <span class="s2">"sw"</span><span class="p">,</span>
|
||||
<span class="s2">"w"</span><span class="p">:</span> <span class="s2">"w"</span><span class="p">,</span>
|
||||
<span class="s2">"nw"</span><span class="p">:</span> <span class="s2">"nw"</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="c1"># replace current link position with what the smart links "should" look like</span>
|
||||
<span class="n">display_symbol_aliases</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="p">((</span><span class="s1">'n'</span><span class="p">,</span> <span class="s1">'s'</span><span class="p">),</span> <span class="p">(</span><span class="s1">'s'</span><span class="p">,</span> <span class="s1">'n'</span><span class="p">)):</span> <span class="s1">'|'</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s1">'n'</span><span class="p">,</span> <span class="s1">'s'</span><span class="p">),):</span> <span class="s1">'v'</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s1">'s'</span><span class="p">,</span> <span class="s1">'n'</span><span class="p">)):</span> <span class="s1">'^'</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s1">'e'</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">),</span> <span class="p">(</span><span class="s1">'w'</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">)):</span> <span class="s1">'-'</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s1">'e'</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">),):</span> <span class="s1">'>'</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s1">'w'</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">),):</span> <span class="s1">'<'</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s1">'nw'</span><span class="p">,</span> <span class="s1">'se'</span><span class="p">),</span> <span class="p">(</span><span class="s1">'sw'</span><span class="p">,</span> <span class="s1">'ne'</span><span class="p">)):</span> <span class="s1">'</span><span class="se">\\</span><span class="s1">'</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s1">'ne'</span><span class="p">,</span> <span class="s1">'sw'</span><span class="p">),</span> <span class="p">(</span><span class="s1">'sw'</span><span class="p">,</span> <span class="s1">'ne'</span><span class="p">)):</span> <span class="s1">'/'</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s2">"n"</span><span class="p">,</span> <span class="s2">"s"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"s"</span><span class="p">,</span> <span class="s2">"n"</span><span class="p">)):</span> <span class="s2">"|"</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s2">"n"</span><span class="p">,</span> <span class="s2">"s"</span><span class="p">),):</span> <span class="s2">"v"</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s2">"s"</span><span class="p">,</span> <span class="s2">"n"</span><span class="p">)):</span> <span class="s2">"^"</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s2">"e"</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"w"</span><span class="p">,</span> <span class="s2">"e"</span><span class="p">)):</span> <span class="s2">"-"</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s2">"e"</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">),):</span> <span class="s2">">"</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s2">"w"</span><span class="p">,</span> <span class="s2">"e"</span><span class="p">),):</span> <span class="s2">"<"</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s2">"nw"</span><span class="p">,</span> <span class="s2">"se"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"sw"</span><span class="p">,</span> <span class="s2">"ne"</span><span class="p">)):</span> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="s2">"ne"</span><span class="p">,</span> <span class="s2">"sw"</span><span class="p">),</span> <span class="p">(</span><span class="s2">"sw"</span><span class="p">,</span> <span class="s2">"ne"</span><span class="p">)):</span> <span class="s2">"/"</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<div class="viewcode-block" id="InvisibleSmartMapLink.get_display_symbol"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.InvisibleSmartMapLink.get_display_symbol">[docs]</a> <span class="k">def</span> <span class="nf">get_display_symbol</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -1140,12 +1167,10 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_cached_display_symbol"</span><span class="p">):</span>
|
||||
<span class="n">legend</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">xymap</span><span class="o">.</span><span class="n">legend</span>
|
||||
<span class="n">default_symbol</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">symbol</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">display_symbol</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">display_symbol</span><span class="p">)</span>
|
||||
<span class="n">default_symbol</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">symbol</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">display_symbol</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">display_symbol</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cached_display_symbol</span> <span class="o">=</span> <span class="n">default_symbol</span>
|
||||
|
||||
<span class="n">dirtuple</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">((</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">directions</span><span class="p">[</span><span class="n">key</span><span class="p">])</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">directions</span><span class="o">.</span><span class="n">keys</span><span class="p">()))</span>
|
||||
<span class="n">dirtuple</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">((</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">directions</span><span class="p">[</span><span class="n">key</span><span class="p">])</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">directions</span><span class="o">.</span><span class="n">keys</span><span class="p">()))</span>
|
||||
|
||||
<span class="n">replacement_symbol</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">display_symbol_aliases</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">dirtuple</span><span class="p">,</span> <span class="n">default_symbol</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -1154,16 +1179,19 @@
|
|||
<span class="k">if</span> <span class="n">node_or_link_class</span><span class="p">:</span>
|
||||
<span class="c1"># initiate class in the current location and run get_display_symbol</span>
|
||||
<span class="c1"># to get what it would show.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cached_display_symbol</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">node_or_link_class</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Z</span><span class="p">)</span><span class="o">.</span><span class="n">get_display_symbol</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cached_display_symbol</span> <span class="o">=</span> <span class="n">node_or_link_class</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Z</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">get_display_symbol</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cached_display_symbol</span></div></div>
|
||||
|
||||
|
||||
<span class="c1"># ----------------------------------</span>
|
||||
<span class="c1"># Default nodes and link classes</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="BasicMapNode"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.BasicMapNode">[docs]</a><span class="k">class</span> <span class="nc">BasicMapNode</span><span class="p">(</span><span class="n">MapNode</span><span class="p">):</span>
|
||||
<span class="sd">"""A map node/room"""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"#"</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_room"</span></div>
|
||||
|
||||
|
|
@ -1171,20 +1199,25 @@
|
|||
<div class="viewcode-block" id="InterruptMapNode"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.InterruptMapNode">[docs]</a><span class="k">class</span> <span class="nc">InterruptMapNode</span><span class="p">(</span><span class="n">MapNode</span><span class="p">):</span>
|
||||
<span class="sd">"""A point of interest node/room. Pathfinder will ignore but auto-stepper will</span>
|
||||
<span class="sd"> stop here if passing through. Beginner-Tutorial from here is fine."""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"I"</span>
|
||||
<span class="n">display_symbol</span> <span class="o">=</span> <span class="s2">"#"</span>
|
||||
<span class="n">interrupt_path</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_room"</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="MapTransitionNode"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.MapTransitionNode">[docs]</a><span class="k">class</span> <span class="nc">MapTransitionNode</span><span class="p">(</span><span class="n">TransitionMapNode</span><span class="p">):</span>
|
||||
<span class="sd">"""Transition-target node to other map. This is not actually spawned in-game."""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"T"</span>
|
||||
<span class="n">display_symbol</span> <span class="o">=</span> <span class="s2">" "</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># important to leave None!</span>
|
||||
<span class="n">target_map_xyz</span> <span class="o">=</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="c1"># must be set manually</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="NSMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.NSMapLink">[docs]</a><span class="k">class</span> <span class="nc">NSMapLink</span><span class="p">(</span><span class="n">MapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""Two-way, North-South link"""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"|"</span>
|
||||
<span class="n">display_symbol</span> <span class="o">=</span> <span class="s2">"||"</span>
|
||||
<span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"n"</span><span class="p">:</span> <span class="s2">"s"</span><span class="p">,</span> <span class="s2">"s"</span><span class="p">:</span> <span class="s2">"n"</span><span class="p">}</span>
|
||||
|
|
@ -1193,6 +1226,7 @@
|
|||
|
||||
<div class="viewcode-block" id="EWMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.EWMapLink">[docs]</a><span class="k">class</span> <span class="nc">EWMapLink</span><span class="p">(</span><span class="n">MapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""Two-way, East-West link"""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"-"</span>
|
||||
<span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"e"</span><span class="p">:</span> <span class="s2">"w"</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">:</span> <span class="s2">"e"</span><span class="p">}</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_exit"</span></div>
|
||||
|
|
@ -1200,6 +1234,7 @@
|
|||
|
||||
<div class="viewcode-block" id="NESWMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.NESWMapLink">[docs]</a><span class="k">class</span> <span class="nc">NESWMapLink</span><span class="p">(</span><span class="n">MapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""Two-way, NorthWest-SouthWest link"""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"/"</span>
|
||||
<span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ne"</span><span class="p">:</span> <span class="s2">"sw"</span><span class="p">,</span> <span class="s2">"sw"</span><span class="p">:</span> <span class="s2">"ne"</span><span class="p">}</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_exit"</span></div>
|
||||
|
|
@ -1207,6 +1242,7 @@
|
|||
|
||||
<div class="viewcode-block" id="SENWMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.SENWMapLink">[docs]</a><span class="k">class</span> <span class="nc">SENWMapLink</span><span class="p">(</span><span class="n">MapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""Two-way, SouthEast-NorthWest link"""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span>
|
||||
<span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"se"</span><span class="p">:</span> <span class="s2">"nw"</span><span class="p">,</span> <span class="s2">"nw"</span><span class="p">:</span> <span class="s2">"se"</span><span class="p">}</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_exit"</span></div>
|
||||
|
|
@ -1214,22 +1250,23 @@
|
|||
|
||||
<div class="viewcode-block" id="PlusMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.PlusMapLink">[docs]</a><span class="k">class</span> <span class="nc">PlusMapLink</span><span class="p">(</span><span class="n">MapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""Two-way, crossing North-South and East-West links"""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"+"</span>
|
||||
<span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"s"</span><span class="p">:</span> <span class="s2">"n"</span><span class="p">,</span> <span class="s2">"n"</span><span class="p">:</span> <span class="s2">"s"</span><span class="p">,</span>
|
||||
<span class="s2">"e"</span><span class="p">:</span> <span class="s2">"w"</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">:</span> <span class="s2">"e"</span><span class="p">}</span>
|
||||
<span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"s"</span><span class="p">:</span> <span class="s2">"n"</span><span class="p">,</span> <span class="s2">"n"</span><span class="p">:</span> <span class="s2">"s"</span><span class="p">,</span> <span class="s2">"e"</span><span class="p">:</span> <span class="s2">"w"</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">:</span> <span class="s2">"e"</span><span class="p">}</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_exit"</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CrossMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.CrossMapLink">[docs]</a><span class="k">class</span> <span class="nc">CrossMapLink</span><span class="p">(</span><span class="n">MapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""Two-way, crossing NorthEast-SouthWest and SouthEast-NorthWest links"""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"x"</span>
|
||||
<span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ne"</span><span class="p">:</span> <span class="s2">"sw"</span><span class="p">,</span> <span class="s2">"sw"</span><span class="p">:</span> <span class="s2">"ne"</span><span class="p">,</span>
|
||||
<span class="s2">"se"</span><span class="p">:</span> <span class="s2">"nw"</span><span class="p">,</span> <span class="s2">"nw"</span><span class="p">:</span> <span class="s2">"se"</span><span class="p">}</span>
|
||||
<span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ne"</span><span class="p">:</span> <span class="s2">"sw"</span><span class="p">,</span> <span class="s2">"sw"</span><span class="p">:</span> <span class="s2">"ne"</span><span class="p">,</span> <span class="s2">"se"</span><span class="p">:</span> <span class="s2">"nw"</span><span class="p">,</span> <span class="s2">"nw"</span><span class="p">:</span> <span class="s2">"se"</span><span class="p">}</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_exit"</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="NSOneWayMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.NSOneWayMapLink">[docs]</a><span class="k">class</span> <span class="nc">NSOneWayMapLink</span><span class="p">(</span><span class="n">MapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""One-way North-South link"""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"v"</span>
|
||||
<span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"n"</span><span class="p">:</span> <span class="s2">"s"</span><span class="p">}</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_exit"</span></div>
|
||||
|
|
@ -1237,6 +1274,7 @@
|
|||
|
||||
<div class="viewcode-block" id="SNOneWayMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.SNOneWayMapLink">[docs]</a><span class="k">class</span> <span class="nc">SNOneWayMapLink</span><span class="p">(</span><span class="n">MapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""One-way South-North link"""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"^"</span>
|
||||
<span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"s"</span><span class="p">:</span> <span class="s2">"n"</span><span class="p">}</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_exit"</span></div>
|
||||
|
|
@ -1244,6 +1282,7 @@
|
|||
|
||||
<div class="viewcode-block" id="EWOneWayMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.EWOneWayMapLink">[docs]</a><span class="k">class</span> <span class="nc">EWOneWayMapLink</span><span class="p">(</span><span class="n">MapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""One-way East-West link"""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"<"</span>
|
||||
<span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"e"</span><span class="p">:</span> <span class="s2">"w"</span><span class="p">}</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_exit"</span></div>
|
||||
|
|
@ -1251,6 +1290,7 @@
|
|||
|
||||
<div class="viewcode-block" id="WEOneWayMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.WEOneWayMapLink">[docs]</a><span class="k">class</span> <span class="nc">WEOneWayMapLink</span><span class="p">(</span><span class="n">MapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""One-way West-East link"""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">">"</span>
|
||||
<span class="n">directions</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"w"</span><span class="p">:</span> <span class="s2">"e"</span><span class="p">}</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_exit"</span></div>
|
||||
|
|
@ -1258,21 +1298,39 @@
|
|||
|
||||
<div class="viewcode-block" id="UpMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.UpMapLink">[docs]</a><span class="k">class</span> <span class="nc">UpMapLink</span><span class="p">(</span><span class="n">SmartMapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""Up direction. Note that this stays on the same z-coord so it's a 'fake' up."""</span>
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s1">'u'</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"u"</span>
|
||||
|
||||
<span class="c1"># all movement over this link is 'up', regardless of where on the xygrid we move.</span>
|
||||
<span class="n">direction_aliases</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'n'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span> <span class="s1">'ne'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span> <span class="s1">'se'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s1">'s'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span> <span class="s1">'sw'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span> <span class="s1">'nw'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">}</span>
|
||||
<span class="n">direction_aliases</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"n"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"ne"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"e"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"se"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"s"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"sw"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"w"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"nw"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">spawn_aliases</span> <span class="o">=</span> <span class="p">{</span><span class="n">direction</span><span class="p">:</span> <span class="p">(</span><span class="s2">"up"</span><span class="p">,</span> <span class="s2">"u"</span><span class="p">)</span> <span class="k">for</span> <span class="n">direction</span> <span class="ow">in</span> <span class="n">direction_aliases</span><span class="p">}</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_exit"</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="DownMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.DownMapLink">[docs]</a><span class="k">class</span> <span class="nc">DownMapLink</span><span class="p">(</span><span class="n">UpMapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""Down direction. Note that this stays on the same z-coord, so it's a 'fake' down."""</span>
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s1">'d'</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"d"</span>
|
||||
<span class="c1"># all movement over this link is 'down', regardless of where on the xygrid we move.</span>
|
||||
<span class="n">direction_aliases</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'n'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span> <span class="s1">'ne'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span> <span class="s1">'se'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s1">'s'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span> <span class="s1">'sw'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span> <span class="s1">'nw'</span><span class="p">:</span> <span class="n">symbol</span><span class="p">}</span>
|
||||
<span class="n">direction_aliases</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"n"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"ne"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"e"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"se"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"s"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"sw"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"w"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="s2">"nw"</span><span class="p">:</span> <span class="n">symbol</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">spawn_aliases</span> <span class="o">=</span> <span class="p">{</span><span class="n">direction</span><span class="p">:</span> <span class="p">(</span><span class="s2">"down"</span><span class="p">,</span> <span class="s2">"d"</span><span class="p">)</span> <span class="k">for</span> <span class="n">direction</span> <span class="ow">in</span> <span class="n">direction_aliases</span><span class="p">}</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_exit"</span></div>
|
||||
|
||||
|
|
@ -1280,6 +1338,7 @@
|
|||
<div class="viewcode-block" id="InterruptMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.InterruptMapLink">[docs]</a><span class="k">class</span> <span class="nc">InterruptMapLink</span><span class="p">(</span><span class="n">InvisibleSmartMapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""A (still passable) link. Pathfinder will treat this as any link, but auto-stepper</span>
|
||||
<span class="sd"> will always abort before crossing this link - so this must be crossed manually."""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"i"</span>
|
||||
<span class="n">interrupt_path</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_exit"</span></div>
|
||||
|
|
@ -1292,14 +1351,24 @@
|
|||
<span class="sd"> link in any paths.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s1">'b'</span>
|
||||
<span class="n">weights</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'n'</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span> <span class="s1">'ne'</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span> <span class="s1">'se'</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span>
|
||||
<span class="s1">'s'</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span> <span class="s1">'sw'</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span> <span class="s1">'nw'</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">}</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"b"</span>
|
||||
<span class="n">weights</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"n"</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span>
|
||||
<span class="s2">"ne"</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span>
|
||||
<span class="s2">"e"</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span>
|
||||
<span class="s2">"se"</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span>
|
||||
<span class="s2">"s"</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span>
|
||||
<span class="s2">"sw"</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span>
|
||||
<span class="s2">"w"</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span>
|
||||
<span class="s2">"nw"</span><span class="p">:</span> <span class="n">BIGVAL</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="s2">"xyz_exit"</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="RouterMapLink"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xymap_legend.html#evennia.contrib.grid.xyzgrid.xymap_legend.RouterMapLink">[docs]</a><span class="k">class</span> <span class="nc">RouterMapLink</span><span class="p">(</span><span class="n">SmartRerouterMapLink</span><span class="p">):</span>
|
||||
<span class="sd">"""A link that connects other links to build 'knees', pass-throughs etc."""</span>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"o"</span></div>
|
||||
|
||||
|
||||
|
|
@ -1308,7 +1377,8 @@
|
|||
<span class="sd"> Teleporter links. Must appear in pairs on the same xy map. To make it one-way, add additional</span>
|
||||
<span class="sd"> one-way link out of the teleporter on one side.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s1">'t'</span></div>
|
||||
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="s2">"t"</span></div>
|
||||
|
||||
|
||||
<span class="c1"># all map components; used as base if not overridden</span>
|
||||
|
|
@ -1333,7 +1403,7 @@
|
|||
<span class="s2">"d"</span><span class="p">:</span> <span class="n">DownMapLink</span><span class="p">,</span>
|
||||
<span class="s2">"b"</span><span class="p">:</span> <span class="n">BlockedMapLink</span><span class="p">,</span>
|
||||
<span class="s2">"i"</span><span class="p">:</span> <span class="n">InterruptMapLink</span><span class="p">,</span>
|
||||
<span class="s1">'t'</span><span class="p">:</span> <span class="n">TeleporterMapLink</span><span class="p">,</span>
|
||||
<span class="s2">"t"</span><span class="p">:</span> <span class="n">TeleporterMapLink</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@
|
|||
<span class="sd"> Main grid class. This organizes the Maps based on their name/Z-coordinate.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="XYZGrid.at_script_creation"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzgrid.html#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.at_script_creation">[docs]</a> <span class="k">def</span> <span class="nf">at_script_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> What we store persistently is data used to create each map (the legends, names etc)</span>
|
||||
|
|
@ -130,7 +131,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">XYZRoom</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter_xyz</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="n">xyz</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="XYZGrid.get_exit"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzgrid.html#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.get_exit">[docs]</a> <span class="k">def</span> <span class="nf">get_exit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xyz</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s1">'north'</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="XYZGrid.get_exit"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzgrid.html#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.get_exit">[docs]</a> <span class="k">def</span> <span class="nf">get_exit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xyz</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"north"</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Get one or more exit object at coordinate.</span>
|
||||
|
||||
|
|
@ -144,7 +145,7 @@
|
|||
<span class="sd"> Queryset: A queryset of XYZExit(s) found.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'db_key'</span><span class="p">]</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"db_key"</span><span class="p">]</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="k">return</span> <span class="n">XYZExit</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter_xyz_exit</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="n">xyz</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="XYZGrid.maps_from_module"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzgrid.html#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.maps_from_module">[docs]</a> <span class="k">def</span> <span class="nf">maps_from_module</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">module_path</span><span class="p">):</span>
|
||||
|
|
@ -169,7 +170,7 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">mapdata</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Could not find or load map from </span><span class="si">{</span><span class="n">module_path</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">mapdata</span><span class="p">[</span><span class="s1">'module_path'</span><span class="p">]</span> <span class="o">=</span> <span class="n">module_path</span>
|
||||
<span class="n">mapdata</span><span class="p">[</span><span class="s2">"module_path"</span><span class="p">]</span> <span class="o">=</span> <span class="n">module_path</span>
|
||||
<span class="k">return</span> <span class="n">map_data_list</span></div>
|
||||
|
||||
<div class="viewcode-block" id="XYZGrid.reload"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzgrid.html#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.reload">[docs]</a> <span class="k">def</span> <span class="nf">reload</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -196,9 +197,9 @@
|
|||
<span class="c1"># we reload the map from module</span>
|
||||
<span class="n">new_mapdata</span> <span class="o">=</span> <span class="n">loaded_mapdata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">zcoord</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">new_mapdata</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s1">'module_path'</span> <span class="ow">in</span> <span class="n">old_mapdata</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">mapdata</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">maps_from_module</span><span class="p">(</span><span class="n">old_mapdata</span><span class="p">[</span><span class="s1">'module_path'</span><span class="p">]):</span>
|
||||
<span class="n">loaded_mapdata</span><span class="p">[</span><span class="n">mapdata</span><span class="p">[</span><span class="s1">'zcoord'</span><span class="p">]]</span> <span class="o">=</span> <span class="n">mapdata</span>
|
||||
<span class="k">if</span> <span class="s2">"module_path"</span> <span class="ow">in</span> <span class="n">old_mapdata</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">mapdata</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">maps_from_module</span><span class="p">(</span><span class="n">old_mapdata</span><span class="p">[</span><span class="s2">"module_path"</span><span class="p">]):</span>
|
||||
<span class="n">loaded_mapdata</span><span class="p">[</span><span class="n">mapdata</span><span class="p">[</span><span class="s2">"zcoord"</span><span class="p">]]</span> <span class="o">=</span> <span class="n">mapdata</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># nowhere to reload from - use what we have</span>
|
||||
<span class="n">loaded_mapdata</span><span class="p">[</span><span class="n">zcoord</span><span class="p">]</span> <span class="o">=</span> <span class="n">old_mapdata</span>
|
||||
|
|
@ -240,7 +241,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">for</span> <span class="n">mapdata</span> <span class="ow">in</span> <span class="n">mapdatas</span><span class="p">:</span>
|
||||
<span class="n">zcoord</span> <span class="o">=</span> <span class="n">mapdata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'zcoord'</span><span class="p">)</span>
|
||||
<span class="n">zcoord</span> <span class="o">=</span> <span class="n">mapdata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zcoord"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">zcoord</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"XYZGrid.add_map data must contain 'zcoord'."</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -262,7 +263,7 @@
|
|||
<span class="k">if</span> <span class="n">remove_objects</span><span class="p">:</span>
|
||||
<span class="c1"># we can't batch-delete because we want to run the .delete</span>
|
||||
<span class="c1"># method that also wipes exits and moves content to save locations</span>
|
||||
<span class="k">for</span> <span class="n">xyzroom</span> <span class="ow">in</span> <span class="n">XYZRoom</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter_xyz</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">,</span> <span class="n">zcoord</span><span class="p">)):</span>
|
||||
<span class="k">for</span> <span class="n">xyzroom</span> <span class="ow">in</span> <span class="n">XYZRoom</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter_xyz</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">,</span> <span class="n">zcoord</span><span class="p">)):</span>
|
||||
<span class="n">xyzroom</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">reload</span><span class="p">()</span></div>
|
||||
|
||||
|
|
@ -276,7 +277,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">remove_map</span><span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">zcoord</span> <span class="k">for</span> <span class="n">zcoord</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">map_data</span><span class="p">),</span> <span class="n">remove_objects</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span></div>
|
||||
|
||||
<div class="viewcode-block" id="XYZGrid.spawn"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzgrid.html#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.spawn">[docs]</a> <span class="k">def</span> <span class="nf">spawn</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">),</span> <span class="n">directions</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="XYZGrid.spawn"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzgrid.html#evennia.contrib.grid.xyzgrid.xyzgrid.XYZGrid.spawn">[docs]</a> <span class="k">def</span> <span class="nf">spawn</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">),</span> <span class="n">directions</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Create/recreate/update the in-game grid based on the stored Maps or for a specific Map</span>
|
||||
<span class="sd"> or coordinate.</span>
|
||||
|
|
@ -297,7 +298,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span> <span class="o">=</span> <span class="n">xyz</span>
|
||||
<span class="n">wildcard</span> <span class="o">=</span> <span class="s1">'*'</span>
|
||||
<span class="n">wildcard</span> <span class="o">=</span> <span class="s2">"*"</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="n">wildcard</span><span class="p">:</span>
|
||||
<span class="n">xymaps</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">grid</span>
|
||||
|
|
@ -335,8 +336,10 @@
|
|||
<span class="n">xyzgrid</span><span class="o">.</span><span class="n">reload</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">xyzgrid</span>
|
||||
<span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">xyzgrid</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="p">(</span><span class="s2">"Warning: More than one XYZGrid instances were found. This is an error and "</span>
|
||||
<span class="s2">"only the first one will be used. Delete the other one(s) manually."</span><span class="p">)</span>
|
||||
<span class="p">(</span>
|
||||
<span class="s2">"Warning: More than one XYZGrid instances were found. This is an error and "</span>
|
||||
<span class="s2">"only the first one will be used. Delete the other one(s) manually."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">xyzgrid</span> <span class="o">=</span> <span class="n">xyzgrid</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">xyzgrid</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">loaded</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -73,7 +73,8 @@
|
|||
<span class="sd"> efficiently querying the room in the database based on XY coordinates.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<div class="viewcode-block" id="XYZManager.filter_xyz"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzroom.html#evennia.contrib.grid.xyzgrid.xyzroom.XYZManager.filter_xyz">[docs]</a> <span class="k">def</span> <span class="nf">filter_xyz</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
|
||||
<div class="viewcode-block" id="XYZManager.filter_xyz"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzroom.html#evennia.contrib.grid.xyzgrid.xyzroom.XYZManager.filter_xyz">[docs]</a> <span class="k">def</span> <span class="nf">filter_xyz</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Filter queryset based on XYZ position on the grid. The Z-position is the name of the XYMap</span>
|
||||
<span class="sd"> Set a coordinate to `'*'` to act as a wildcard (setting all coords to `*` will thus find</span>
|
||||
|
|
@ -91,23 +92,28 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span> <span class="o">=</span> <span class="n">xyz</span>
|
||||
<span class="n">wildcard</span> <span class="o">=</span> <span class="s1">'*'</span>
|
||||
<span class="n">wildcard</span> <span class="o">=</span> <span class="s2">"*"</span>
|
||||
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="bp">self</span>
|
||||
<span class="o">.</span><span class="n">filter_family</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">filter_family</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">Q</span><span class="p">()</span> <span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_X_TAG_CATEGORY</span><span class="p">))</span>
|
||||
<span class="n">Q</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_X_TAG_CATEGORY</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">Q</span><span class="p">()</span> <span class="k">if</span> <span class="n">y</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_Y_TAG_CATEGORY</span><span class="p">))</span>
|
||||
<span class="n">Q</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">y</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_Y_TAG_CATEGORY</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">Q</span><span class="p">()</span> <span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_Z_TAG_CATEGORY</span><span class="p">))</span>
|
||||
<span class="n">Q</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_Z_TAG_CATEGORY</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="XYZManager.get_xyz"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzroom.html#evennia.contrib.grid.xyzgrid.xyzroom.XYZManager.get_xyz">[docs]</a> <span class="k">def</span> <span class="nf">get_xyz</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'map'</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="XYZManager.get_xyz"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzroom.html#evennia.contrib.grid.xyzgrid.xyzroom.XYZManager.get_xyz">[docs]</a> <span class="k">def</span> <span class="nf">get_xyz</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"map"</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Always return a single matched entity directly. This accepts no `*`-wildcards.</span>
|
||||
<span class="sd"> This will also find children of XYZRooms on the given coordinates.</span>
|
||||
|
|
@ -135,8 +141,9 @@
|
|||
|
||||
<span class="c1"># error - mimic default get() behavior but with a little more info</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span> <span class="o">=</span> <span class="n">xyz</span>
|
||||
<span class="n">inp</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"Query: xyz=(</span><span class="si">{</span><span class="n">x</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">y</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">z</span><span class="si">}</span><span class="s2">), "</span> <span class="o">+</span>
|
||||
<span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="n">val</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
|
||||
<span class="n">inp</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Query: xyz=(</span><span class="si">{</span><span class="n">x</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">y</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">z</span><span class="si">}</span><span class="s2">), "</span> <span class="o">+</span> <span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="n">val</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">ncount</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">MultipleObjectsReturned</span><span class="p">(</span><span class="n">inp</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -150,8 +157,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="XYZExitManager.filter_xyz_exit"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzroom.html#evennia.contrib.grid.xyzgrid.xyzroom.XYZExitManager.filter_xyz_exit">[docs]</a> <span class="k">def</span> <span class="nf">filter_xyz_exit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">),</span>
|
||||
<span class="n">xyz_destination</span><span class="o">=</span><span class="p">(</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">,</span> <span class="s1">'*'</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="XYZExitManager.filter_xyz_exit"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzroom.html#evennia.contrib.grid.xyzgrid.xyzroom.XYZExitManager.filter_xyz_exit">[docs]</a> <span class="k">def</span> <span class="nf">filter_xyz_exit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">),</span> <span class="n">xyz_destination</span><span class="o">=</span><span class="p">(</span><span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Used by exits (objects with a source and -destination property).</span>
|
||||
<span class="sd"> Find all exits out of a source or to a particular destination. This will also find</span>
|
||||
|
|
@ -180,32 +186,43 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span> <span class="o">=</span> <span class="n">xyz</span>
|
||||
<span class="n">xdest</span><span class="p">,</span> <span class="n">ydest</span><span class="p">,</span> <span class="n">zdest</span> <span class="o">=</span> <span class="n">xyz_destination</span>
|
||||
<span class="n">wildcard</span> <span class="o">=</span> <span class="s1">'*'</span>
|
||||
<span class="n">wildcard</span> <span class="o">=</span> <span class="s2">"*"</span>
|
||||
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="bp">self</span>
|
||||
<span class="o">.</span><span class="n">filter_family</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">filter_family</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">Q</span><span class="p">()</span> <span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_X_TAG_CATEGORY</span><span class="p">))</span>
|
||||
<span class="n">Q</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">x</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_X_TAG_CATEGORY</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">Q</span><span class="p">()</span> <span class="k">if</span> <span class="n">y</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_Y_TAG_CATEGORY</span><span class="p">))</span>
|
||||
<span class="n">Q</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">y</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_Y_TAG_CATEGORY</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">Q</span><span class="p">()</span> <span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_Z_TAG_CATEGORY</span><span class="p">))</span>
|
||||
<span class="n">Q</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">z</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_Z_TAG_CATEGORY</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">Q</span><span class="p">()</span> <span class="k">if</span> <span class="n">xdest</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">xdest</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_XDEST_TAG_CATEGORY</span><span class="p">))</span>
|
||||
<span class="n">Q</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">xdest</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">xdest</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_XDEST_TAG_CATEGORY</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">Q</span><span class="p">()</span> <span class="k">if</span> <span class="n">ydest</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">ydest</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_YDEST_TAG_CATEGORY</span><span class="p">))</span>
|
||||
<span class="n">Q</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">ydest</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">ydest</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_YDEST_TAG_CATEGORY</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">Q</span><span class="p">()</span> <span class="k">if</span> <span class="n">zdest</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">zdest</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_ZDEST_TAG_CATEGORY</span><span class="p">))</span>
|
||||
<span class="n">Q</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">zdest</span> <span class="o">==</span> <span class="n">wildcard</span>
|
||||
<span class="k">else</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">zdest</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_ZDEST_TAG_CATEGORY</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="XYZExitManager.get_xyz_exit"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzroom.html#evennia.contrib.grid.xyzgrid.xyzroom.XYZExitManager.get_xyz_exit">[docs]</a> <span class="k">def</span> <span class="nf">get_xyz_exit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'map'</span><span class="p">),</span> <span class="n">xyz_destination</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'map'</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="XYZExitManager.get_xyz_exit"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzroom.html#evennia.contrib.grid.xyzgrid.xyzroom.XYZExitManager.get_xyz_exit">[docs]</a> <span class="k">def</span> <span class="nf">get_xyz_exit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"map"</span><span class="p">),</span> <span class="n">xyz_destination</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"map"</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Used by exits (objects with a source and -destination property). Get a single</span>
|
||||
<span class="sd"> exit. All source/destination coordinates (as well as the map's name) are required.</span>
|
||||
|
|
@ -241,8 +258,7 @@
|
|||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="bp">self</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_Z_TAG_CATEGORY</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_Z_TAG_CATEGORY</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_X_TAG_CATEGORY</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_Y_TAG_CATEGORY</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_tags__db_key</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">xdest</span><span class="p">),</span> <span class="n">db_tags__db_category</span><span class="o">=</span><span class="n">MAP_XDEST_TAG_CATEGORY</span><span class="p">)</span>
|
||||
|
|
@ -251,10 +267,12 @@
|
|||
<span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span>
|
||||
<span class="n">inp</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"xyz=(</span><span class="si">{</span><span class="n">x</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">y</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">z</span><span class="si">}</span><span class="s2">),xyz_destination=(</span><span class="si">{</span><span class="n">xdest</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">ydest</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">zdest</span><span class="si">}</span><span class="s2">),"</span> <span class="o">+</span>
|
||||
<span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="n">val</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
|
||||
<span class="k">raise</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2"> "</span>
|
||||
<span class="sa">f</span><span class="s2">"matching query </span><span class="si">{</span><span class="n">inp</span><span class="si">}</span><span class="s2"> does not exist."</span><span class="p">)</span></div></div>
|
||||
<span class="n">inp</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"xyz=(</span><span class="si">{</span><span class="n">x</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">y</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">z</span><span class="si">}</span><span class="s2">),xyz_destination=(</span><span class="si">{</span><span class="n">xdest</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">ydest</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">zdest</span><span class="si">}</span><span class="s2">),"</span> <span class="o">+</span> <span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="n">val</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2"> "</span> <span class="sa">f</span><span class="s2">"matching query </span><span class="si">{</span><span class="n">inp</span><span class="si">}</span><span class="s2"> does not exist."</span>
|
||||
<span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="XYZRoom"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzroom.html#evennia.contrib.grid.xyzgrid.xyzroom.XYZRoom">[docs]</a><span class="k">class</span> <span class="nc">XYZRoom</span><span class="p">(</span><span class="n">DefaultRoom</span><span class="p">):</span>
|
||||
|
|
@ -286,10 +304,10 @@
|
|||
|
||||
<span class="c1"># default settings for map visualization</span>
|
||||
<span class="n">map_display</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">map_mode</span> <span class="o">=</span> <span class="s1">'nodes'</span> <span class="c1"># or 'scan'</span>
|
||||
<span class="n">map_mode</span> <span class="o">=</span> <span class="s2">"nodes"</span> <span class="c1"># or 'scan'</span>
|
||||
<span class="n">map_visual_range</span> <span class="o">=</span> <span class="mi">2</span>
|
||||
<span class="n">map_character_symbol</span> <span class="o">=</span> <span class="s2">"|g@|n"</span>
|
||||
<span class="n">map_align</span> <span class="o">=</span> <span class="s1">'c'</span>
|
||||
<span class="n">map_align</span> <span class="o">=</span> <span class="s2">"c"</span>
|
||||
<span class="n">map_target_path_style</span> <span class="o">=</span> <span class="s2">"|y</span><span class="si">{display_symbol}</span><span class="s2">|n"</span>
|
||||
<span class="n">map_fill_all</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">map_separator_char</span> <span class="o">=</span> <span class="s2">"|x~|n"</span>
|
||||
|
|
@ -309,8 +327,10 @@
|
|||
<span class="n">z</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">category</span><span class="o">=</span><span class="n">MAP_Z_TAG_CATEGORY</span><span class="p">,</span> <span class="n">return_list</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">y</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">z</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="c1"># don't cache unfinished coordinate (probably tags have not finished saving)</span>
|
||||
<span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">coord</span><span class="p">)</span> <span class="k">if</span> <span class="n">coord</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">coord</span><span class="o">.</span><span class="n">isdigit</span><span class="p">()</span> <span class="k">else</span> <span class="n">coord</span>
|
||||
<span class="k">for</span> <span class="n">coord</span> <span class="ow">in</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span>
|
||||
<span class="nb">int</span><span class="p">(</span><span class="n">coord</span><span class="p">)</span> <span class="k">if</span> <span class="n">coord</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">coord</span><span class="o">.</span><span class="n">isdigit</span><span class="p">()</span> <span class="k">else</span> <span class="n">coord</span>
|
||||
<span class="k">for</span> <span class="n">coord</span> <span class="ow">in</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># cache result, convert to correct types (tags are strings)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_xyz</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">coord</span><span class="p">)</span> <span class="k">if</span> <span class="n">coord</span><span class="o">.</span><span class="n">isdigit</span><span class="p">()</span> <span class="k">else</span> <span class="n">coord</span> <span class="k">for</span> <span class="n">coord</span> <span class="ow">in</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">))</span>
|
||||
|
||||
|
|
@ -332,7 +352,7 @@
|
|||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_xymap</span>
|
||||
|
||||
<div class="viewcode-block" id="XYZRoom.create"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzroom.html#evennia.contrib.grid.xyzgrid.xyzroom.XYZRoom.create">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">account</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'map'</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">account</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"map"</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Creation method aware of XYZ coordinates.</span>
|
||||
|
||||
|
|
@ -358,14 +378,18 @@
|
|||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span> <span class="o">=</span> <span class="n">xyz</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"XYRroom.create got `xyz=</span><span class="si">{</span><span class="n">xyz</span><span class="si">}</span><span class="s2">` - needs a valid (X,Y,Z) "</span>
|
||||
<span class="s2">"coordinate of ints/strings."</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="p">[</span>
|
||||
<span class="sa">f</span><span class="s2">"XYRroom.create got `xyz=</span><span class="si">{</span><span class="n">xyz</span><span class="si">}</span><span class="s2">` - needs a valid (X,Y,Z) "</span>
|
||||
<span class="s2">"coordinate of ints/strings."</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="n">existing_query</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter_xyz</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">existing_query</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
|
||||
<span class="n">existing_room</span> <span class="o">=</span> <span class="n">existing_query</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"XYRoom XYZ=(</span><span class="si">{</span><span class="n">x</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">y</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">z</span><span class="si">}</span><span class="s2">) already exists "</span>
|
||||
<span class="sa">f</span><span class="s2">"(existing room is named '</span><span class="si">{</span><span class="n">existing_room</span><span class="o">.</span><span class="n">db_key</span><span class="si">}</span><span class="s2">')!"</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="p">[</span>
|
||||
<span class="sa">f</span><span class="s2">"XYRoom XYZ=(</span><span class="si">{</span><span class="n">x</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">y</span><span class="si">}</span><span class="s2">,</span><span class="si">{</span><span class="n">z</span><span class="si">}</span><span class="s2">) already exists "</span>
|
||||
<span class="sa">f</span><span class="s2">"(existing room is named '</span><span class="si">{</span><span class="n">existing_room</span><span class="o">.</span><span class="n">db_key</span><span class="si">}</span><span class="s2">')!"</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="n">tags</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">MAP_X_TAG_CATEGORY</span><span class="p">),</span>
|
||||
|
|
@ -452,26 +476,29 @@
|
|||
<span class="n">xyz</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">xyz</span>
|
||||
<span class="n">xymap</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">xyzgrid</span><span class="o">.</span><span class="n">get_map</span><span class="p">(</span><span class="n">xyz</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">xymap</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'map_display'</span><span class="p">,</span> <span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_display"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_display</span><span class="p">)):</span>
|
||||
<span class="k">if</span> <span class="n">xymap</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_display"</span><span class="p">,</span> <span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_display"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_display</span><span class="p">)):</span>
|
||||
|
||||
<span class="c1"># show the near-area map.</span>
|
||||
<span class="n">map_character_symbol</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="s1">'map_character_symbol'</span><span class="p">,</span>
|
||||
<span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_character_symbol"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_character_symbol</span><span class="p">))</span>
|
||||
<span class="s2">"map_character_symbol"</span><span class="p">,</span>
|
||||
<span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_character_symbol"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_character_symbol</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">map_visual_range</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="s2">"map_visual_range"</span><span class="p">,</span> <span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_visual_range"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_visual_range</span><span class="p">))</span>
|
||||
<span class="n">map_mode</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="s2">"map_mode"</span><span class="p">,</span> <span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_mode"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_mode</span><span class="p">))</span>
|
||||
<span class="n">map_align</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="s2">"map_align"</span><span class="p">,</span> <span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_align"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_align</span><span class="p">))</span>
|
||||
<span class="s2">"map_visual_range"</span><span class="p">,</span> <span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_visual_range"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_visual_range</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">map_mode</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_mode"</span><span class="p">,</span> <span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_mode"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_mode</span><span class="p">))</span>
|
||||
<span class="n">map_align</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_align"</span><span class="p">,</span> <span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_align"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_align</span><span class="p">))</span>
|
||||
<span class="n">map_target_path_style</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="s2">"map_target_path_style"</span><span class="p">,</span>
|
||||
<span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_target_path_style"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_target_path_style</span><span class="p">))</span>
|
||||
<span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_target_path_style"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_target_path_style</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">map_area_client</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="s2">"map_fill_all"</span><span class="p">,</span> <span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_fill_all"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_fill_all</span><span class="p">))</span>
|
||||
<span class="s2">"map_fill_all"</span><span class="p">,</span> <span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_fill_all"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_fill_all</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">map_separator_char</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="s2">"map_separator_char"</span><span class="p">,</span>
|
||||
<span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_separator_char"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_separator_char</span><span class="p">))</span>
|
||||
<span class="n">xymap</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_separator_char"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_separator_char</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">client_width</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">looker</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">get</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">get_client_size</span><span class="p">()</span>
|
||||
|
||||
|
|
@ -480,15 +507,14 @@
|
|||
<span class="k">if</span> <span class="n">map_area_client</span><span class="p">:</span>
|
||||
<span class="n">display_width</span> <span class="o">=</span> <span class="n">client_width</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">display_width</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">map_width</span><span class="p">,</span>
|
||||
<span class="nb">max</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">room_desc</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)))</span>
|
||||
<span class="n">display_width</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">map_width</span><span class="p">,</span> <span class="nb">max</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">room_desc</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)))</span>
|
||||
|
||||
<span class="c1"># align map</span>
|
||||
<span class="n">map_indent</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">sep_width</span> <span class="o">=</span> <span class="n">display_width</span>
|
||||
<span class="k">if</span> <span class="n">map_align</span> <span class="o">==</span> <span class="s1">'r'</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">map_align</span> <span class="o">==</span> <span class="s2">"r"</span><span class="p">:</span>
|
||||
<span class="n">map_indent</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">display_width</span> <span class="o">-</span> <span class="n">map_width</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">map_align</span> <span class="o">==</span> <span class="s1">'c'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">map_align</span> <span class="o">==</span> <span class="s2">"c"</span><span class="p">:</span>
|
||||
<span class="n">map_indent</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="p">(</span><span class="n">display_width</span> <span class="o">-</span> <span class="n">map_width</span><span class="p">)</span> <span class="o">//</span> <span class="mi">2</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># data set by the goto/path-command, for displaying the shortest path</span>
|
||||
|
|
@ -504,7 +530,7 @@
|
|||
<span class="n">target_path_style</span><span class="o">=</span><span class="n">map_target_path_style</span><span class="p">,</span>
|
||||
<span class="n">character</span><span class="o">=</span><span class="n">map_character_symbol</span><span class="p">,</span>
|
||||
<span class="n">max_size</span><span class="o">=</span><span class="p">(</span><span class="n">display_width</span><span class="p">,</span> <span class="kc">None</span><span class="p">),</span>
|
||||
<span class="n">indent</span><span class="o">=</span><span class="n">map_indent</span>
|
||||
<span class="n">indent</span><span class="o">=</span><span class="n">map_indent</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">sep</span> <span class="o">=</span> <span class="n">map_separator_char</span> <span class="o">*</span> <span class="n">sep_width</span>
|
||||
<span class="n">map_display</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="si">{</span><span class="n">map_display</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">sep</span><span class="si">}</span><span class="s2">"</span>
|
||||
|
|
@ -565,8 +591,16 @@
|
|||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_xyz_destination</span>
|
||||
|
||||
<div class="viewcode-block" id="XYZExit.create"><a class="viewcode-back" href="../../../../../api/evennia.contrib.grid.xyzgrid.xyzroom.html#evennia.contrib.grid.xyzgrid.xyzroom.XYZExit.create">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">account</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'map'</span><span class="p">),</span> <span class="n">xyz_destination</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'map'</span><span class="p">),</span>
|
||||
<span class="n">location</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">destination</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">create</span><span class="p">(</span>
|
||||
<span class="bp">cls</span><span class="p">,</span>
|
||||
<span class="n">key</span><span class="p">,</span>
|
||||
<span class="n">account</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"map"</span><span class="p">),</span>
|
||||
<span class="n">xyz_destination</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s2">"map"</span><span class="p">),</span>
|
||||
<span class="n">location</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">destination</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Creation method aware of coordinates.</span>
|
||||
|
||||
|
|
@ -601,26 +635,36 @@
|
|||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="p">[</span><span class="s2">"XYExit.create need either `xyz=(X,Y,Z)` coordinate or a `location`."</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">source</span> <span class="o">=</span> <span class="n">XYZRoom</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_xyz</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">))</span>
|
||||
<span class="n">tags</span><span class="o">.</span><span class="n">extend</span><span class="p">(((</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">MAP_X_TAG_CATEGORY</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">MAP_Y_TAG_CATEGORY</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="n">MAP_Z_TAG_CATEGORY</span><span class="p">)))</span>
|
||||
<span class="n">tags</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span>
|
||||
<span class="p">(</span>
|
||||
<span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">MAP_X_TAG_CATEGORY</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">MAP_Y_TAG_CATEGORY</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="n">MAP_Z_TAG_CATEGORY</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">dest</span> <span class="o">=</span> <span class="n">destination</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">xdest</span><span class="p">,</span> <span class="n">ydest</span><span class="p">,</span> <span class="n">zdest</span> <span class="o">=</span> <span class="n">xyz_destination</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="p">[</span><span class="s2">"XYExit.create need either `xyz_destination=(X,Y,Z)` coordinate "</span>
|
||||
<span class="s2">"or a `destination`."</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="p">[</span>
|
||||
<span class="s2">"XYExit.create need either `xyz_destination=(X,Y,Z)` coordinate "</span>
|
||||
<span class="s2">"or a `destination`."</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">dest</span> <span class="o">=</span> <span class="n">XYZRoom</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_xyz</span><span class="p">(</span><span class="n">xyz</span><span class="o">=</span><span class="p">(</span><span class="n">xdest</span><span class="p">,</span> <span class="n">ydest</span><span class="p">,</span> <span class="n">zdest</span><span class="p">))</span>
|
||||
<span class="n">tags</span><span class="o">.</span><span class="n">extend</span><span class="p">(((</span><span class="nb">str</span><span class="p">(</span><span class="n">xdest</span><span class="p">),</span> <span class="n">MAP_XDEST_TAG_CATEGORY</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">ydest</span><span class="p">),</span> <span class="n">MAP_YDEST_TAG_CATEGORY</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">zdest</span><span class="p">),</span> <span class="n">MAP_ZDEST_TAG_CATEGORY</span><span class="p">)))</span>
|
||||
<span class="n">tags</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span>
|
||||
<span class="p">(</span>
|
||||
<span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">xdest</span><span class="p">),</span> <span class="n">MAP_XDEST_TAG_CATEGORY</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">ydest</span><span class="p">),</span> <span class="n">MAP_YDEST_TAG_CATEGORY</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">zdest</span><span class="p">),</span> <span class="n">MAP_ZDEST_TAG_CATEGORY</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">DefaultExit</span><span class="o">.</span><span class="n">create</span><span class="p">(</span>
|
||||
<span class="n">key</span><span class="p">,</span> <span class="n">source</span><span class="p">,</span> <span class="n">dest</span><span class="p">,</span>
|
||||
<span class="n">account</span><span class="o">=</span><span class="n">account</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="n">tags</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="bp">cls</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div></div>
|
||||
<span class="n">key</span><span class="p">,</span> <span class="n">source</span><span class="p">,</span> <span class="n">dest</span><span class="p">,</span> <span class="n">account</span><span class="o">=</span><span class="n">account</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="n">tags</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="bp">cls</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
|
||||
<span class="p">)</span></div></div>
|
||||
</pre></div>
|
||||
|
||||
<div class="clearer"></div>
|
||||
|
|
|
|||
|
|
@ -100,8 +100,7 @@
|
|||
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">default_cmds</span><span class="p">,</span> <span class="n">CmdSet</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="roll"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.dice.dice.html#evennia.contrib.rpg.dice.dice.roll">[docs]</a><span class="k">def</span> <span class="nf">roll</span><span class="p">(</span><span class="n">dicenum</span><span class="p">,</span> <span class="n">dicetype</span><span class="p">,</span> <span class="n">modifier</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">conditional</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">return_tuple</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="roll"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.dice.dice.html#evennia.contrib.rpg.dice.dice.roll">[docs]</a><span class="k">def</span> <span class="nf">roll</span><span class="p">(</span><span class="n">dicenum</span><span class="p">,</span> <span class="n">dicetype</span><span class="p">,</span> <span class="n">modifier</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">conditional</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">return_tuple</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> This is a standard dice roller.</span>
|
||||
|
||||
|
|
@ -183,6 +182,7 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">result</span></div>
|
||||
|
||||
|
||||
<span class="c1"># legacy alias</span>
|
||||
<span class="n">roll_dice</span> <span class="o">=</span> <span class="n">roll</span>
|
||||
|
||||
|
|
|
|||
|
|
@ -357,7 +357,8 @@
|
|||
<span class="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span>
|
||||
<span class="s2">"Could not find a matching phoneme for the grammar "</span>
|
||||
<span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">()</span><span class="si">}</span><span class="s2">'. Make there is at least one phoneme matching this "</span>
|
||||
<span class="s2">"combination of consonants and vowels."</span><span class="p">)</span>
|
||||
<span class="s2">"combination of consonants and vowels."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">translation</span><span class="p">[</span><span class="n">word</span><span class="o">.</span><span class="n">lower</span><span class="p">()]</span> <span class="o">=</span> <span class="n">new_word</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">manual_translations</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -555,7 +555,7 @@
|
|||
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_EMOTE_NOMATCH_ERROR</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">ref</span><span class="o">=</span><span class="n">marker_match</span><span class="o">.</span><span class="n">group</span><span class="p">()))</span>
|
||||
<span class="k">elif</span> <span class="n">nmatches</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="c1"># a unique match - parse into intermediary representation</span>
|
||||
<span class="n">case</span> <span class="o">=</span> <span class="s1">'~'</span> <span class="c1"># retain original case of sdesc</span>
|
||||
<span class="n">case</span> <span class="o">=</span> <span class="s2">"~"</span> <span class="c1"># retain original case of sdesc</span>
|
||||
<span class="k">if</span> <span class="n">case_sensitive</span><span class="p">:</span>
|
||||
<span class="c1"># case sensitive mode</span>
|
||||
<span class="c1"># internal flags for the case used for the original /query</span>
|
||||
|
|
@ -568,14 +568,14 @@
|
|||
<span class="c1"># self-refs are kept as-is, others are parsed by case</span>
|
||||
<span class="n">matchtext</span> <span class="o">=</span> <span class="n">marker_match</span><span class="o">.</span><span class="n">group</span><span class="p">()</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="n">_PREFIX</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">matchtext</span><span class="o">.</span><span class="n">istitle</span><span class="p">():</span>
|
||||
<span class="n">case</span> <span class="o">=</span> <span class="s1">'t'</span>
|
||||
<span class="n">case</span> <span class="o">=</span> <span class="s2">"t"</span>
|
||||
<span class="k">elif</span> <span class="n">matchtext</span><span class="o">.</span><span class="n">isupper</span><span class="p">():</span>
|
||||
<span class="n">case</span> <span class="o">=</span> <span class="s1">'^'</span>
|
||||
<span class="n">case</span> <span class="o">=</span> <span class="s2">"^"</span>
|
||||
<span class="k">elif</span> <span class="n">matchtext</span><span class="o">.</span><span class="n">islower</span><span class="p">():</span>
|
||||
<span class="n">case</span> <span class="o">=</span> <span class="s1">'v'</span>
|
||||
<span class="n">case</span> <span class="o">=</span> <span class="s2">"v"</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"#</span><span class="si">%i%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">case</span><span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">string</span><span class="p">[:</span><span class="n">istart0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">"{</span><span class="si">%s</span><span class="s2">}"</span> <span class="o">%</span> <span class="n">key</span> <span class="o">+</span> <span class="n">string</span><span class="p">[</span><span class="n">istart</span> <span class="o">+</span> <span class="n">maxscore</span><span class="p">:]</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">string</span><span class="p">[:</span><span class="n">istart0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">"{</span><span class="si">%s</span><span class="s2">}"</span> <span class="o">%</span> <span class="n">key</span> <span class="o">+</span> <span class="n">string</span><span class="p">[</span><span class="n">istart</span> <span class="o">+</span> <span class="n">maxscore</span> <span class="p">:]</span>
|
||||
<span class="n">mapping</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">obj</span>
|
||||
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -643,8 +643,9 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="n">case_sensitive</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"case_sensitive"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">emote</span><span class="p">,</span> <span class="n">obj_mapping</span> <span class="o">=</span> <span class="n">parse_sdescs_and_recogs</span><span class="p">(</span><span class="n">sender</span><span class="p">,</span> <span class="n">receivers</span><span class="p">,</span> <span class="n">emote</span><span class="p">,</span>
|
||||
<span class="n">case_sensitive</span><span class="o">=</span><span class="n">case_sensitive</span><span class="p">)</span>
|
||||
<span class="n">emote</span><span class="p">,</span> <span class="n">obj_mapping</span> <span class="o">=</span> <span class="n">parse_sdescs_and_recogs</span><span class="p">(</span>
|
||||
<span class="n">sender</span><span class="p">,</span> <span class="n">receivers</span><span class="p">,</span> <span class="n">emote</span><span class="p">,</span> <span class="n">case_sensitive</span><span class="o">=</span><span class="n">case_sensitive</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">emote</span><span class="p">,</span> <span class="n">language_mapping</span> <span class="o">=</span> <span class="n">parse_language</span><span class="p">(</span><span class="n">sender</span><span class="p">,</span> <span class="n">emote</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="p">(</span><span class="n">EmoteError</span><span class="p">,</span> <span class="n">LanguageError</span><span class="p">)</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="c1"># handle all error messages, don't hide actual coding errors</span>
|
||||
|
|
@ -657,8 +658,8 @@
|
|||
<span class="c1"># (the text could have nested object mappings).</span>
|
||||
<span class="n">emote</span> <span class="o">=</span> <span class="n">_RE_REF</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="sa">r</span><span class="s2">"{{#\1}}"</span><span class="p">,</span> <span class="n">emote</span><span class="p">)</span>
|
||||
<span class="c1"># if anonymous_add is passed as a kwarg, collect and remove it from kwargs</span>
|
||||
<span class="k">if</span> <span class="s1">'anonymous_add'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">anonymous_add</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s1">'anonymous_add'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="s2">"anonymous_add"</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">anonymous_add</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"anonymous_add"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">anonymous_add</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">any</span><span class="p">(</span><span class="mi">1</span> <span class="k">for</span> <span class="n">tag</span> <span class="ow">in</span> <span class="n">obj_mapping</span> <span class="k">if</span> <span class="n">tag</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">skey</span><span class="p">)):</span>
|
||||
<span class="c1"># no self-reference in the emote - add to the end</span>
|
||||
<span class="n">obj_mapping</span><span class="p">[</span><span class="n">skey</span><span class="p">]</span> <span class="o">=</span> <span class="n">sender</span>
|
||||
|
|
@ -712,12 +713,13 @@
|
|||
<span class="p">)</span>
|
||||
<span class="c1"># make sure receiver always sees their real name</span>
|
||||
<span class="n">rkey_start</span> <span class="o">=</span> <span class="s2">"#</span><span class="si">%i</span><span class="s2">"</span> <span class="o">%</span> <span class="n">receiver</span><span class="o">.</span><span class="n">id</span>
|
||||
<span class="n">rkey_keep_case</span> <span class="o">=</span> <span class="n">rkey_start</span> <span class="o">+</span> <span class="s1">'~'</span> <span class="c1"># signifies keeping the case</span>
|
||||
<span class="n">rkey_keep_case</span> <span class="o">=</span> <span class="n">rkey_start</span> <span class="o">+</span> <span class="s2">"~"</span> <span class="c1"># signifies keeping the case</span>
|
||||
<span class="k">for</span> <span class="n">rkey</span> <span class="ow">in</span> <span class="p">(</span><span class="n">key</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">receiver_sdesc_mapping</span> <span class="k">if</span> <span class="n">key</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">rkey_start</span><span class="p">)):</span>
|
||||
<span class="c1"># we could have #%i^, #%it etc depending on input case - we want the</span>
|
||||
<span class="c1"># self-reference to retain case.</span>
|
||||
<span class="n">receiver_sdesc_mapping</span><span class="p">[</span><span class="n">rkey</span><span class="p">]</span> <span class="o">=</span> <span class="n">process_sdesc</span><span class="p">(</span>
|
||||
<span class="n">receiver</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">receiver</span><span class="p">,</span> <span class="n">ref</span><span class="o">=</span><span class="n">rkey_keep_case</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="n">receiver</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">receiver</span><span class="p">,</span> <span class="n">ref</span><span class="o">=</span><span class="n">rkey_keep_case</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># do the template replacement of the sdesc/recog {#num} markers</span>
|
||||
<span class="n">receiver</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">sendemote</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="n">receiver_sdesc_mapping</span><span class="p">),</span> <span class="n">from_obj</span><span class="o">=</span><span class="n">sender</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
|
@ -1751,14 +1753,14 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">sdesc</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">""</span>
|
||||
|
||||
<span class="n">ref</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'ref'</span><span class="p">,</span> <span class="s1">'~'</span><span class="p">)</span> <span class="c1"># ~ to keep sdesc unchanged</span>
|
||||
<span class="k">if</span> <span class="s1">'t'</span> <span class="ow">in</span> <span class="n">ref</span><span class="p">:</span>
|
||||
<span class="n">ref</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"ref"</span><span class="p">,</span> <span class="s2">"~"</span><span class="p">)</span> <span class="c1"># ~ to keep sdesc unchanged</span>
|
||||
<span class="k">if</span> <span class="s2">"t"</span> <span class="ow">in</span> <span class="n">ref</span><span class="p">:</span>
|
||||
<span class="c1"># we only want to capitalize the first letter if there are many words</span>
|
||||
<span class="n">sdesc</span> <span class="o">=</span> <span class="n">sdesc</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
<span class="n">sdesc</span> <span class="o">=</span> <span class="n">sdesc</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">+</span> <span class="n">sdesc</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sdesc</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">sdesc</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
|
||||
<span class="k">elif</span> <span class="s1">'^'</span> <span class="ow">in</span> <span class="n">ref</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="s2">"^"</span> <span class="ow">in</span> <span class="n">ref</span><span class="p">:</span>
|
||||
<span class="n">sdesc</span> <span class="o">=</span> <span class="n">sdesc</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
|
||||
<span class="k">elif</span> <span class="s1">'v'</span> <span class="ow">in</span> <span class="n">ref</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="s2">"v"</span> <span class="ow">in</span> <span class="n">ref</span><span class="p">:</span>
|
||||
<span class="n">sdesc</span> <span class="o">=</span> <span class="n">sdesc</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="s2">"|b</span><span class="si">%s</span><span class="s2">|n"</span> <span class="o">%</span> <span class="n">sdesc</span></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -316,7 +316,7 @@
|
|||
<span class="n">result</span> <span class="o">=</span> <span class="n">rpsystem</span><span class="o">.</span><span class="n">regex_tuple_from_key_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="p">)</span>
|
||||
<span class="n">t2</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
||||
<span class="c1"># print(f"t1: {t1 - t0}, t2: {t2 - t1}")</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertLess</span><span class="p">(</span><span class="n">t2</span> <span class="o">-</span> <span class="n">t1</span><span class="p">,</span> <span class="mi">10</span> <span class="o">**</span> <span class="o">-</span><span class="mi">4</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertLess</span><span class="p">(</span><span class="n">t2</span> <span class="o">-</span> <span class="n">t1</span><span class="p">,</span> <span class="mi">10</span><span class="o">**-</span><span class="mi">4</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="p">(</span><span class="n">Anything</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">key</span><span class="p">))</span></div></div>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -101,16 +101,28 @@
|
|||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">setUp</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">traithandler</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"test1"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Test1"</span><span class="p">,</span> <span class="n">trait_type</span><span class="o">=</span><span class="s2">"trait"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">traithandler</span><span class="o">.</span><span class="n">add</span><span class="p">(</span>
|
||||
<span class="s2">"test2"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Test2"</span><span class="p">,</span> <span class="n">trait_type</span><span class="o">=</span><span class="s2">"trait"</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="p">[</span><span class="s2">"foo"</span><span class="p">,</span> <span class="p">{</span><span class="s2">"1"</span><span class="p">:</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]},</span> <span class="mi">4</span><span class="p">],</span>
|
||||
<span class="s2">"test2"</span><span class="p">,</span>
|
||||
<span class="n">name</span><span class="o">=</span><span class="s2">"Test2"</span><span class="p">,</span>
|
||||
<span class="n">trait_type</span><span class="o">=</span><span class="s2">"trait"</span><span class="p">,</span>
|
||||
<span class="n">value</span><span class="o">=</span><span class="p">[</span><span class="s2">"foo"</span><span class="p">,</span> <span class="p">{</span><span class="s2">"1"</span><span class="p">:</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]},</span> <span class="mi">4</span><span class="p">],</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TraitHandlerTest.test_add_trait"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.traits.tests.html#evennia.contrib.rpg.traits.tests.TraitHandlerTest.test_add_trait">[docs]</a> <span class="k">def</span> <span class="nf">test_add_trait</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_get_dbstore</span><span class="p">(</span><span class="s2">"test1"</span><span class="p">),</span> <span class="p">{</span><span class="s2">"name"</span><span class="p">:</span> <span class="s2">"Test1"</span><span class="p">,</span> <span class="s2">"trait_type"</span><span class="p">:</span> <span class="s2">"trait"</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">:</span> <span class="kc">None</span><span class="p">,}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_get_dbstore</span><span class="p">(</span><span class="s2">"test1"</span><span class="p">),</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"name"</span><span class="p">:</span> <span class="s2">"Test1"</span><span class="p">,</span>
|
||||
<span class="s2">"trait_type"</span><span class="p">:</span> <span class="s2">"trait"</span><span class="p">,</span>
|
||||
<span class="s2">"value"</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_get_dbstore</span><span class="p">(</span><span class="s2">"test2"</span><span class="p">),</span>
|
||||
<span class="p">{</span><span class="s2">"name"</span><span class="p">:</span> <span class="s2">"Test2"</span><span class="p">,</span> <span class="s2">"trait_type"</span><span class="p">:</span> <span class="s2">"trait"</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"foo"</span><span class="p">,</span> <span class="p">{</span><span class="s2">"1"</span><span class="p">:</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]},</span> <span class="mi">4</span><span class="p">],},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"name"</span><span class="p">:</span> <span class="s2">"Test2"</span><span class="p">,</span>
|
||||
<span class="s2">"trait_type"</span><span class="p">:</span> <span class="s2">"trait"</span><span class="p">,</span>
|
||||
<span class="s2">"value"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"foo"</span><span class="p">,</span> <span class="p">{</span><span class="s2">"1"</span><span class="p">:</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]},</span> <span class="mi">4</span><span class="p">],</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">traithandler</span><span class="p">),</span> <span class="mi">2</span><span class="p">)</span></div>
|
||||
|
||||
|
|
@ -370,7 +382,12 @@
|
|||
<span class="nb">max</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
|
||||
<span class="n">extra_val1</span><span class="o">=</span><span class="s2">"xvalue1"</span><span class="p">,</span>
|
||||
<span class="n">extra_val2</span><span class="o">=</span><span class="s2">"xvalue2"</span><span class="p">,</span>
|
||||
<span class="n">descs</span><span class="o">=</span><span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="s2">"range0"</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s2">"range1"</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="s2">"range2"</span><span class="p">,</span> <span class="mi">7</span><span class="p">:</span> <span class="s2">"range3"</span><span class="p">,},</span>
|
||||
<span class="n">descs</span><span class="o">=</span><span class="p">{</span>
|
||||
<span class="mi">0</span><span class="p">:</span> <span class="s2">"range0"</span><span class="p">,</span>
|
||||
<span class="mi">2</span><span class="p">:</span> <span class="s2">"range1"</span><span class="p">,</span>
|
||||
<span class="mi">5</span><span class="p">:</span> <span class="s2">"range2"</span><span class="p">,</span>
|
||||
<span class="mi">7</span><span class="p">:</span> <span class="s2">"range3"</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">traithandler</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"test1"</span><span class="p">)</span></div>
|
||||
|
||||
|
|
@ -390,7 +407,12 @@
|
|||
<span class="s2">"max"</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
|
||||
<span class="s2">"extra_val1"</span><span class="p">:</span> <span class="s2">"xvalue1"</span><span class="p">,</span>
|
||||
<span class="s2">"extra_val2"</span><span class="p">:</span> <span class="s2">"xvalue2"</span><span class="p">,</span>
|
||||
<span class="s2">"descs"</span><span class="p">:</span> <span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="s2">"range0"</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s2">"range1"</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="s2">"range2"</span><span class="p">,</span> <span class="mi">7</span><span class="p">:</span> <span class="s2">"range3"</span><span class="p">,},</span>
|
||||
<span class="s2">"descs"</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="mi">0</span><span class="p">:</span> <span class="s2">"range0"</span><span class="p">,</span>
|
||||
<span class="mi">2</span><span class="p">:</span> <span class="s2">"range1"</span><span class="p">,</span>
|
||||
<span class="mi">5</span><span class="p">:</span> <span class="s2">"range2"</span><span class="p">,</span>
|
||||
<span class="mi">7</span><span class="p">:</span> <span class="s2">"range3"</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="s2">"rate"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||||
<span class="s2">"ratetarget"</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="s2">"last_update"</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
|
||||
|
|
@ -549,7 +571,12 @@
|
|||
<span class="nb">max</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
||||
<span class="n">extra_val1</span><span class="o">=</span><span class="s2">"xvalue1"</span><span class="p">,</span>
|
||||
<span class="n">extra_val2</span><span class="o">=</span><span class="s2">"xvalue2"</span><span class="p">,</span>
|
||||
<span class="n">descs</span><span class="o">=</span><span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="s2">"range0"</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s2">"range1"</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="s2">"range2"</span><span class="p">,</span> <span class="mi">7</span><span class="p">:</span> <span class="s2">"range3"</span><span class="p">,},</span>
|
||||
<span class="n">descs</span><span class="o">=</span><span class="p">{</span>
|
||||
<span class="mi">0</span><span class="p">:</span> <span class="s2">"range0"</span><span class="p">,</span>
|
||||
<span class="mi">2</span><span class="p">:</span> <span class="s2">"range1"</span><span class="p">,</span>
|
||||
<span class="mi">5</span><span class="p">:</span> <span class="s2">"range2"</span><span class="p">,</span>
|
||||
<span class="mi">7</span><span class="p">:</span> <span class="s2">"range3"</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="n">rate</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
|
||||
<span class="n">ratetarget</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
|
@ -621,7 +648,12 @@
|
|||
<span class="n">mod</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="n">extra_val1</span><span class="o">=</span><span class="s2">"xvalue1"</span><span class="p">,</span>
|
||||
<span class="n">extra_val2</span><span class="o">=</span><span class="s2">"xvalue2"</span><span class="p">,</span>
|
||||
<span class="n">descs</span><span class="o">=</span><span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="s2">"range0"</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s2">"range1"</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="s2">"range2"</span><span class="p">,</span> <span class="mi">7</span><span class="p">:</span> <span class="s2">"range3"</span><span class="p">,},</span>
|
||||
<span class="n">descs</span><span class="o">=</span><span class="p">{</span>
|
||||
<span class="mi">0</span><span class="p">:</span> <span class="s2">"range0"</span><span class="p">,</span>
|
||||
<span class="mi">2</span><span class="p">:</span> <span class="s2">"range1"</span><span class="p">,</span>
|
||||
<span class="mi">5</span><span class="p">:</span> <span class="s2">"range2"</span><span class="p">,</span>
|
||||
<span class="mi">7</span><span class="p">:</span> <span class="s2">"range3"</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">traithandler</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"test1"</span><span class="p">)</span></div>
|
||||
|
||||
|
|
@ -640,7 +672,12 @@
|
|||
<span class="s2">"min"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||||
<span class="s2">"extra_val1"</span><span class="p">:</span> <span class="s2">"xvalue1"</span><span class="p">,</span>
|
||||
<span class="s2">"extra_val2"</span><span class="p">:</span> <span class="s2">"xvalue2"</span><span class="p">,</span>
|
||||
<span class="s2">"descs"</span><span class="p">:</span> <span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="s2">"range0"</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s2">"range1"</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="s2">"range2"</span><span class="p">,</span> <span class="mi">7</span><span class="p">:</span> <span class="s2">"range3"</span><span class="p">,},</span>
|
||||
<span class="s2">"descs"</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="mi">0</span><span class="p">:</span> <span class="s2">"range0"</span><span class="p">,</span>
|
||||
<span class="mi">2</span><span class="p">:</span> <span class="s2">"range1"</span><span class="p">,</span>
|
||||
<span class="mi">5</span><span class="p">:</span> <span class="s2">"range2"</span><span class="p">,</span>
|
||||
<span class="mi">7</span><span class="p">:</span> <span class="s2">"range3"</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="s2">"rate"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||||
<span class="s2">"ratetarget"</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="s2">"last_update"</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
|
||||
|
|
@ -805,7 +842,12 @@
|
|||
<span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
|
||||
<span class="n">extra_val1</span><span class="o">=</span><span class="s2">"xvalue1"</span><span class="p">,</span>
|
||||
<span class="n">extra_val2</span><span class="o">=</span><span class="s2">"xvalue2"</span><span class="p">,</span>
|
||||
<span class="n">descs</span><span class="o">=</span><span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="s2">"range0"</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="s2">"range1"</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="s2">"range2"</span><span class="p">,</span> <span class="mi">7</span><span class="p">:</span> <span class="s2">"range3"</span><span class="p">,},</span>
|
||||
<span class="n">descs</span><span class="o">=</span><span class="p">{</span>
|
||||
<span class="mi">0</span><span class="p">:</span> <span class="s2">"range0"</span><span class="p">,</span>
|
||||
<span class="mi">2</span><span class="p">:</span> <span class="s2">"range1"</span><span class="p">,</span>
|
||||
<span class="mi">5</span><span class="p">:</span> <span class="s2">"range2"</span><span class="p">,</span>
|
||||
<span class="mi">7</span><span class="p">:</span> <span class="s2">"range3"</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="n">rate</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
|
||||
<span class="n">ratetarget</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
|
@ -873,8 +915,20 @@
|
|||
|
||||
<div class="viewcode-block" id="TestNumericTraitOperators.setUp"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.traits.tests.html#evennia.contrib.rpg.traits.tests.TestNumericTraitOperators.setUp">[docs]</a> <span class="k">def</span> <span class="nf">setUp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># direct instantiation for testing only; use TraitHandler in production</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">st</span> <span class="o">=</span> <span class="n">traits</span><span class="o">.</span><span class="n">Trait</span><span class="p">({</span><span class="s2">"name"</span><span class="p">:</span> <span class="s2">"Strength"</span><span class="p">,</span> <span class="s2">"trait_type"</span><span class="p">:</span> <span class="s2">"trait"</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">:</span> <span class="mi">8</span><span class="p">,})</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">at</span> <span class="o">=</span> <span class="n">traits</span><span class="o">.</span><span class="n">Trait</span><span class="p">({</span><span class="s2">"name"</span><span class="p">:</span> <span class="s2">"Attack"</span><span class="p">,</span> <span class="s2">"trait_type"</span><span class="p">:</span> <span class="s2">"trait"</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">:</span> <span class="mi">4</span><span class="p">,})</span></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">st</span> <span class="o">=</span> <span class="n">traits</span><span class="o">.</span><span class="n">Trait</span><span class="p">(</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"name"</span><span class="p">:</span> <span class="s2">"Strength"</span><span class="p">,</span>
|
||||
<span class="s2">"trait_type"</span><span class="p">:</span> <span class="s2">"trait"</span><span class="p">,</span>
|
||||
<span class="s2">"value"</span><span class="p">:</span> <span class="mi">8</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">at</span> <span class="o">=</span> <span class="n">traits</span><span class="o">.</span><span class="n">Trait</span><span class="p">(</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"name"</span><span class="p">:</span> <span class="s2">"Attack"</span><span class="p">,</span>
|
||||
<span class="s2">"trait_type"</span><span class="p">:</span> <span class="s2">"trait"</span><span class="p">,</span>
|
||||
<span class="s2">"value"</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestNumericTraitOperators.tearDown"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.traits.tests.html#evennia.contrib.rpg.traits.tests.TestNumericTraitOperators.tearDown">[docs]</a> <span class="k">def</span> <span class="nf">tearDown</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">st</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">at</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span></div>
|
||||
|
|
|
|||
|
|
@ -568,6 +568,7 @@
|
|||
|
||||
<span class="sd"> """</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TraitHandler"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.traits.traits.html#evennia.contrib.rpg.traits.traits.TraitHandler">[docs]</a><span class="k">class</span> <span class="nc">TraitHandler</span><span class="p">:</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Factory class that instantiates Trait objects. Must be assigned as a property</span>
|
||||
|
|
@ -836,10 +837,7 @@
|
|||
<span class="n">trait</span> <span class="o">=</span> <span class="n">traithandler</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_trait_key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">trait</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="c1"># initialize the trait</span>
|
||||
<span class="n">traithandler</span><span class="o">.</span><span class="n">add</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_trait_key</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">_trait_properties</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">traithandler</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_trait_key</span><span class="p">,</span> <span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">_trait_properties</span><span class="p">)</span>
|
||||
<span class="n">trait</span> <span class="o">=</span> <span class="n">traithandler</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_trait_key</span><span class="p">)</span> <span class="c1"># caches it in the traithandler</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cache</span><span class="p">[</span><span class="n">instance</span><span class="p">]</span> <span class="o">=</span> <span class="n">trait</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cache</span><span class="p">[</span><span class="n">instance</span><span class="p">]</span>
|
||||
|
|
@ -851,6 +849,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">pass</span></div>
|
||||
|
||||
|
||||
<span class="c1"># Parent Trait class</span>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@
|
|||
|
||||
<span class="c1"># Commands for the state when the lid covering the button is closed.</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdPushLidClosed"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.red_button.red_button.html#evennia.contrib.tutorials.red_button.red_button.CmdPushLidClosed">[docs]</a><span class="k">class</span> <span class="nc">CmdPushLidClosed</span><span class="p">(</span><span class="n">Command</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Push the red button (lid closed)</span>
|
||||
|
|
@ -163,23 +164,27 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="n">rand</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">random</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> tries to smash the glass of the button."</span><span class="p">,</span>
|
||||
<span class="n">exclude</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> tries to smash the glass of the button."</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">rand</span> <span class="o"><</span> <span class="mf">0.2</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"You smash your hand against the glass"</span>
|
||||
<span class="s2">" with all your might. The lid won't budge"</span>
|
||||
<span class="s2">" but you cause quite the tremor through the button's mount."</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">It looks like the button's lamp stopped working for the time being, "</span>
|
||||
<span class="s2">"but the lid is still as closed as ever."</span><span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"You smash your hand against the glass"</span>
|
||||
<span class="s2">" with all your might. The lid won't budge"</span>
|
||||
<span class="s2">" but you cause quite the tremor through the button's mount."</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">It looks like the button's lamp stopped working for the time being, "</span>
|
||||
<span class="s2">"but the lid is still as closed as ever."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># self.obj is the button itself</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">break_lamp</span><span class="p">()</span>
|
||||
<span class="k">elif</span> <span class="n">rand</span> <span class="o"><</span> <span class="mf">0.6</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="s2">"You hit the lid hard. It doesn't move an inch."</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"You place a well-aimed fist against the glass of the lid."</span>
|
||||
<span class="s2">" Unfortunately all you get is a pain in your hand. Maybe"</span>
|
||||
<span class="s2">" you should just try to just ... open the lid instead?"</span><span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"You place a well-aimed fist against the glass of the lid."</span>
|
||||
<span class="s2">" Unfortunately all you get is a pain in your hand. Maybe"</span>
|
||||
<span class="s2">" you should just try to just ... open the lid instead?"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
|
|
@ -207,8 +212,8 @@
|
|||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"the lid will soon close again."</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> opens the lid of the button."</span><span class="p">,</span>
|
||||
<span class="n">exclude</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> opens the lid of the button."</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">to_open_state</span><span class="p">()</span></div></div>
|
||||
|
||||
|
||||
|
|
@ -242,6 +247,7 @@
|
|||
<span class="c1"># Commands for the state when the button's protective cover is open - now the</span>
|
||||
<span class="c1"># push command will work. You can also close the lid again.</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdPushLidOpen"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.red_button.red_button.html#evennia.contrib.tutorials.red_button.red_button.CmdPushLidOpen">[docs]</a><span class="k">class</span> <span class="nc">CmdPushLidOpen</span><span class="p">(</span><span class="n">Command</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Push the red button</span>
|
||||
|
|
@ -267,15 +273,15 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="c1"># pause a little between each message.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You reach out to press the big red button ..."</span><span class="p">)</span>
|
||||
<span class="k">yield</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># pause 2s before next message</span>
|
||||
<span class="k">yield</span> <span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># pause 2s before next message</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="se">\n\n</span><span class="s2">|wBOOOOM! A bright light blinds you!|n"</span><span class="p">)</span>
|
||||
<span class="k">yield</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># pause 1s before next message</span>
|
||||
<span class="k">yield</span> <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># pause 1s before next message</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="se">\n\n</span><span class="s2">|xThe world goes dark ...|n"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2"> presses the button. BOOM! </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2"> is blinded by a flash!"</span><span class="p">,</span>
|
||||
<span class="n">exclude</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2"> presses the button. BOOM! </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2"> is blinded by a flash!"</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">blind_target</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
|
@ -301,8 +307,8 @@
|
|||
<span class="c1"># this will clean out scripts dependent on lid being open.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You close the button's lid. It clicks back into place."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> closes the button's lid."</span><span class="p">,</span>
|
||||
<span class="n">exclude</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">)</span></div></div>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> closes the button's lid."</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
<span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="LidOpenCmdSet"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.red_button.red_button.html#evennia.contrib.tutorials.red_button.red_button.LidOpenCmdSet">[docs]</a><span class="k">class</span> <span class="nc">LidOpenCmdSet</span><span class="p">(</span><span class="n">CmdSet</span><span class="p">):</span>
|
||||
|
|
@ -328,6 +334,7 @@
|
|||
<span class="c1"># Commands for when the button has been pushed and the player is blinded. This</span>
|
||||
<span class="c1"># replaces commands on the player making them 'blind' for a while.</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdBlindLook"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.red_button.red_button.html#evennia.contrib.tutorials.red_button.red_button.CmdBlindLook">[docs]</a><span class="k">class</span> <span class="nc">CmdBlindLook</span><span class="p">(</span><span class="n">Command</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Looking around in darkness</span>
|
||||
|
|
@ -359,12 +366,14 @@
|
|||
<span class="n">string</span> <span class="o">=</span> <span class="s2">"You fumble around, hands outstretched. You bump your knee."</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># trying to look</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"You are temporarily blinded by the flash. "</span>
|
||||
<span class="s2">"Until it wears off, all you can do is feel around blindly."</span><span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"You are temporarily blinded by the flash. "</span>
|
||||
<span class="s2">"Until it wears off, all you can do is feel around blindly."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> stumbles around, blinded."</span><span class="p">,</span>
|
||||
<span class="n">exclude</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">)</span></div></div>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> stumbles around, blinded."</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
<span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdBlindHelp"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.red_button.red_button.html#evennia.contrib.tutorials.red_button.red_button.CmdBlindHelp">[docs]</a><span class="k">class</span> <span class="nc">CmdBlindHelp</span><span class="p">(</span><span class="n">Command</span><span class="p">):</span>
|
||||
|
|
@ -462,20 +471,26 @@
|
|||
<span class="sd"> `button = create_object(RedButton, ..., attributes=[('desc', 'my desc')])`.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="c1"># these are the pre-set descriptions. Setting attributes will override</span>
|
||||
<span class="c1"># these on the fly.</span>
|
||||
|
||||
<span class="n">desc_closed_lid</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"This is a large red button, inviting yet evil-looking. "</span>
|
||||
<span class="s2">"A closed glass lid protects it."</span><span class="p">)</span>
|
||||
<span class="n">desc_open_lid</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"This is a large red button, inviting yet evil-looking. "</span>
|
||||
<span class="s2">"Its glass cover is open and the button exposed."</span><span class="p">)</span>
|
||||
<span class="n">desc_closed_lid</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"This is a large red button, inviting yet evil-looking. "</span> <span class="s2">"A closed glass lid protects it."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">desc_open_lid</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"This is a large red button, inviting yet evil-looking. "</span>
|
||||
<span class="s2">"Its glass cover is open and the button exposed."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">auto_close_msg</span> <span class="o">=</span> <span class="s2">"The button's glass lid silently slides back in place."</span>
|
||||
<span class="n">lamp_breaks_msg</span> <span class="o">=</span> <span class="s2">"The lamp flickers, the button going dark."</span>
|
||||
<span class="n">desc_add_lamp_broken</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">The big red button has stopped blinking for the time being."</span>
|
||||
<span class="c1"># note that this is a list. A random message will display each time</span>
|
||||
<span class="n">blink_msgs</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"The red button flashes briefly."</span><span class="p">,</span>
|
||||
<span class="s2">"The red button blinks invitingly."</span><span class="p">,</span>
|
||||
<span class="s2">"The red button flashes. You know you wanna push it!"</span><span class="p">]</span>
|
||||
<span class="n">blink_msgs</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="s2">"The red button flashes briefly."</span><span class="p">,</span>
|
||||
<span class="s2">"The red button blinks invitingly."</span><span class="p">,</span>
|
||||
<span class="s2">"The red button flashes. You know you wanna push it!"</span><span class="p">,</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<div class="viewcode-block" id="RedButton.at_object_creation"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.red_button.red_button.html#evennia.contrib.tutorials.red_button.red_button.RedButton.at_object_creation">[docs]</a> <span class="k">def</span> <span class="nf">at_object_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -565,9 +580,9 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">LidOpenCmdSet</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># wait 20s then call self.to_closed_state with a message as argument</span>
|
||||
<span class="n">delay</span><span class="p">(</span><span class="mi">35</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_closed_state</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">auto_close_msg</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">auto_close_msg</span><span class="p">,</span>
|
||||
<span class="n">persistent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
<span class="n">delay</span><span class="p">(</span>
|
||||
<span class="mi">35</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_closed_state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">auto_close_msg</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">auto_close_msg</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">True</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_unblind_target</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">caller</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -578,7 +593,8 @@
|
|||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You blink feverishly as your eyesight slowly returns."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> seems to be recovering their eyesight, blinking feverishly."</span><span class="p">,</span>
|
||||
<span class="n">exclude</span><span class="o">=</span><span class="n">caller</span><span class="p">)</span>
|
||||
<span class="n">exclude</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="RedButton.blind_target"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.red_button.red_button.html#evennia.contrib.tutorials.red_button.red_button.RedButton.blind_target">[docs]</a> <span class="k">def</span> <span class="nf">blind_target</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">caller</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -596,8 +612,7 @@
|
|||
|
||||
<span class="c1"># wait 20s then call self._unblind to remove blindness effect. The</span>
|
||||
<span class="c1"># persistent=True means the delay should survive a server reload.</span>
|
||||
<span class="n">delay</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unblind_target</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">persistent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
<span class="n">delay</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unblind_target</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_unbreak_lamp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
|
|||
|
|
@ -107,8 +107,10 @@
|
|||
|
||||
|
||||
<div class="viewcode-block" id="info3"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.talking_npc.talking_npc.html#evennia.contrib.tutorials.talking_npc.talking_npc.info3">[docs]</a><span class="k">def</span> <span class="nf">info3</span><span class="p">(</span><span class="n">caller</span><span class="p">):</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"'Well ... I'm sort of busy so, have to go. NPC business. "</span>
|
||||
<span class="s2">"Important stuff. You wouldn't understand.'"</span><span class="p">)</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"'Well ... I'm sort of busy so, have to go. NPC business. "</span>
|
||||
<span class="s2">"Important stuff. You wouldn't understand.'"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="p">{</span><span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"Oookay ... I won't keep you. Bye."</span><span class="p">,</span> <span class="s2">"goto"</span><span class="p">:</span> <span class="s2">"END"</span><span class="p">},</span>
|
||||
|
|
@ -133,15 +135,15 @@
|
|||
|
||||
<div class="viewcode-block" id="CmdTalk"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.talking_npc.talking_npc.html#evennia.contrib.tutorials.talking_npc.talking_npc.CmdTalk">[docs]</a><span class="k">class</span> <span class="nc">CmdTalk</span><span class="p">(</span><span class="n">default_cmds</span><span class="o">.</span><span class="n">MuxCommand</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Talks to an npc</span>
|
||||
<span class="sd"> Talks to an npc</span>
|
||||
|
||||
<span class="sd"> Usage:</span>
|
||||
<span class="sd"> talk</span>
|
||||
<span class="sd"> Usage:</span>
|
||||
<span class="sd"> talk</span>
|
||||
|
||||
<span class="sd"> This command is only available if a talkative non-player-character</span>
|
||||
<span class="sd"> (NPC) is actually present. It will strike up a conversation with</span>
|
||||
<span class="sd"> that NPC and give you options on what to talk about.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="sd"> This command is only available if a talkative non-player-character</span>
|
||||
<span class="sd"> (NPC) is actually present. It will strike up a conversation with</span>
|
||||
<span class="sd"> that NPC and give you options on what to talk about.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"talk"</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:all()"</span>
|
||||
|
|
@ -155,8 +157,11 @@
|
|||
|
||||
<span class="c1"># Initiate the menu. Change this if you are putting this on</span>
|
||||
<span class="c1"># some other custom NPC class.</span>
|
||||
<span class="n">EvMenu</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"evennia.contrib.tutorials.talking_npc.talking_npc"</span><span class="p">,</span>
|
||||
<span class="n">startnode</span><span class="o">=</span><span class="s2">"menu_start_node"</span><span class="p">)</span></div></div>
|
||||
<span class="n">EvMenu</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="s2">"evennia.contrib.tutorials.talking_npc.talking_npc"</span><span class="p">,</span>
|
||||
<span class="n">startnode</span><span class="o">=</span><span class="s2">"menu_start_node"</span><span class="p">,</span>
|
||||
<span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TalkingCmdSet"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.talking_npc.talking_npc.html#evennia.contrib.tutorials.talking_npc.talking_npc.TalkingCmdSet">[docs]</a><span class="k">class</span> <span class="nc">TalkingCmdSet</span><span class="p">(</span><span class="n">CmdSet</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -1200,7 +1200,8 @@
|
|||
<span class="sd"> |wstab/thrust/pierce <target>|n - poke at the enemy. More damage but harder to hit.</span>
|
||||
<span class="sd"> |wslash/chop/bash <target>|n - swipe at the enemy. Less damage but easier to hit.</span>
|
||||
<span class="sd"> |wdefend/parry|n - protect yourself and make yourself harder to hit.)</span>
|
||||
<span class="sd"> """</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">no_more_weapons_msg</span> <span class="o">=</span> <span class="s2">"you find nothing else of use."</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">available_weapons</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"knife"</span><span class="p">,</span> <span class="s2">"dagger"</span><span class="p">,</span> <span class="s2">"sword"</span><span class="p">,</span> <span class="s2">"club"</span><span class="p">]</span></div>
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@
|
|||
<span class="n">helptext</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2"> (Write 'give up' if you want to abandon your quest.)"</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">helptext</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<span class="c1"># for the @detail command we inherit from MuxCommand, since</span>
|
||||
<span class="c1"># we want to make use of MuxCommand's pre-parsing of '=' in the</span>
|
||||
<span class="c1"># argument.</span>
|
||||
|
|
@ -244,22 +245,26 @@
|
|||
<span class="n">looking_at_obj</span><span class="o">.</span><span class="n">at_desc</span><span class="p">(</span><span class="n">looker</span><span class="o">=</span><span class="n">caller</span><span class="p">)</span>
|
||||
<span class="k">return</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdTutorialGiveUp"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.tutorial_world.rooms.html#evennia.contrib.tutorials.tutorial_world.rooms.CmdTutorialGiveUp">[docs]</a><span class="k">class</span> <span class="nc">CmdTutorialGiveUp</span><span class="p">(</span><span class="n">default_cmds</span><span class="o">.</span><span class="n">MuxCommand</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Give up the tutorial-world quest and return to Limbo, the start room of the</span>
|
||||
<span class="sd"> server.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"give up"</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'abort'</span><span class="p">]</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"abort"</span><span class="p">]</span>
|
||||
|
||||
<div class="viewcode-block" id="CmdTutorialGiveUp.func"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.tutorial_world.rooms.html#evennia.contrib.tutorials.tutorial_world.rooms.CmdTutorialGiveUp.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">outro_room</span> <span class="o">=</span> <span class="n">OutroRoom</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">outro_room</span><span class="p">:</span>
|
||||
<span class="n">outro_room</span> <span class="o">=</span> <span class="n">outro_room</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"That didn't work (seems like a bug). "</span>
|
||||
<span class="s2">"Try to use the |wteleport|n command instead."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"That didn't work (seems like a bug). "</span>
|
||||
<span class="s2">"Try to use the |wteleport|n command instead."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span><span class="n">outro_room</span><span class="p">)</span></div></div>
|
||||
|
|
@ -354,6 +359,7 @@
|
|||
<span class="sd"> will also clean up the intro command.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="TutorialStartExit.at_object_creation"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.tutorial_world.rooms.html#evennia.contrib.tutorials.tutorial_world.rooms.TutorialStartExit.at_object_creation">[docs]</a> <span class="k">def</span> <span class="nf">at_object_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">CmdSetEvenniaIntro</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div></div>
|
||||
|
||||
|
|
@ -439,6 +445,7 @@
|
|||
<span class="c1">#</span>
|
||||
<span class="c1"># -------------------------------------------------------------</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdEvenniaIntro"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.tutorial_world.rooms.html#evennia.contrib.tutorials.tutorial_world.rooms.CmdEvenniaIntro">[docs]</a><span class="k">class</span> <span class="nc">CmdEvenniaIntro</span><span class="p">(</span><span class="n">Command</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Start the Evennia intro wizard.</span>
|
||||
|
|
@ -447,10 +454,12 @@
|
|||
<span class="sd"> intro</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"intro"</span>
|
||||
|
||||
<div class="viewcode-block" id="CmdEvenniaIntro.func"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.tutorial_world.rooms.html#evennia.contrib.tutorials.tutorial_world.rooms.CmdEvenniaIntro.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">.intro_menu</span> <span class="kn">import</span> <span class="n">init_menu</span>
|
||||
|
||||
<span class="c1"># quell also superusers</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">account</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Auto-quelling permissions while in intro ..."</span><span class="p">)</span>
|
||||
|
|
@ -505,6 +514,7 @@
|
|||
<span class="n">character</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">execute_cmd</span><span class="p">(</span><span class="s2">"quell"</span><span class="p">)</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"(Auto-quelling while in tutorial-world)"</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<span class="c1"># -------------------------------------------------------------</span>
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># Bridge - unique room</span>
|
||||
|
|
@ -1218,7 +1228,6 @@
|
|||
<div class="viewcode-block" id="OutroRoom.at_object_leave"><a class="viewcode-back" href="../../../../../api/evennia.contrib.tutorials.tutorial_world.rooms.html#evennia.contrib.tutorials.tutorial_world.rooms.OutroRoom.at_object_leave">[docs]</a> <span class="k">def</span> <span class="nf">at_object_leave</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">character</span><span class="p">,</span> <span class="n">destination</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">character</span><span class="o">.</span><span class="n">account</span><span class="p">:</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">execute_cmd</span><span class="p">(</span><span class="s2">"unquell"</span><span class="p">)</span></div></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
<div class="clearer"></div>
|
||||
|
|
|
|||
|
|
@ -54,10 +54,8 @@
|
|||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="kn">import</span> <span class="n">SESSIONS</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="AuditingTest"><a class="viewcode-back" href="../../../../../api/evennia.contrib.utils.auditing.tests.html#evennia.contrib.utils.auditing.tests.AuditingTest">[docs]</a><span class="nd">@override_settings</span><span class="p">(</span>
|
||||
<span class="n">AUDIT_MASKS</span><span class="o">=</span><span class="p">[])</span>
|
||||
<div class="viewcode-block" id="AuditingTest"><a class="viewcode-back" href="../../../../../api/evennia.contrib.utils.auditing.tests.html#evennia.contrib.utils.auditing.tests.AuditingTest">[docs]</a><span class="nd">@override_settings</span><span class="p">(</span><span class="n">AUDIT_MASKS</span><span class="o">=</span><span class="p">[])</span>
|
||||
<span class="k">class</span> <span class="nc">AuditingTest</span><span class="p">(</span><span class="n">BaseEvenniaTest</span><span class="p">):</span>
|
||||
|
||||
<div class="viewcode-block" id="AuditingTest.setup_session"><a class="viewcode-back" href="../../../../../api/evennia.contrib.utils.auditing.tests.html#evennia.contrib.utils.auditing.tests.AuditingTest.setup_session">[docs]</a> <span class="nd">@patch</span><span class="p">(</span><span class="s2">"evennia.server.sessionhandler._ServerSession"</span><span class="p">,</span> <span class="n">AuditedServerSession</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">setup_session</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Overrides default one in EvenniaTest"""</span>
|
||||
|
|
@ -71,8 +69,10 @@
|
|||
<span class="n">SESSIONS</span><span class="o">.</span><span class="n">login</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="p">,</span> <span class="n">testmode</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="o">=</span> <span class="n">session</span></div>
|
||||
|
||||
<div class="viewcode-block" id="AuditingTest.test_mask"><a class="viewcode-back" href="../../../../../api/evennia.contrib.utils.auditing.tests.html#evennia.contrib.utils.auditing.tests.AuditingTest.test_mask">[docs]</a> <span class="nd">@patch</span><span class="p">(</span><span class="s2">"evennia.contrib.utils.auditing.server.AUDIT_CALLBACK"</span><span class="p">,</span>
|
||||
<span class="s2">"evennia.contrib.utils.auditing.outputs.to_syslog"</span><span class="p">)</span>
|
||||
<div class="viewcode-block" id="AuditingTest.test_mask"><a class="viewcode-back" href="../../../../../api/evennia.contrib.utils.auditing.tests.html#evennia.contrib.utils.auditing.tests.AuditingTest.test_mask">[docs]</a> <span class="nd">@patch</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.utils.auditing.server.AUDIT_CALLBACK"</span><span class="p">,</span>
|
||||
<span class="s2">"evennia.contrib.utils.auditing.outputs.to_syslog"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="nd">@patch</span><span class="p">(</span><span class="s2">"evennia.contrib.utils.auditing.server.AUDIT_IN"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="nd">@patch</span><span class="p">(</span><span class="s2">"evennia.contrib.utils.auditing.server.AUDIT_OUT"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">test_mask</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -142,8 +142,10 @@
|
|||
<span class="k">for</span> <span class="n">secret</span> <span class="ow">in</span> <span class="n">secrets</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">mask</span><span class="p">(</span><span class="n">secret</span><span class="p">),</span> <span class="n">secret</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="AuditingTest.test_audit"><a class="viewcode-back" href="../../../../../api/evennia.contrib.utils.auditing.tests.html#evennia.contrib.utils.auditing.tests.AuditingTest.test_audit">[docs]</a> <span class="nd">@patch</span><span class="p">(</span><span class="s2">"evennia.contrib.utils.auditing.server.AUDIT_CALLBACK"</span><span class="p">,</span>
|
||||
<span class="s2">"evennia.contrib.utils.auditing.outputs.to_syslog"</span><span class="p">)</span>
|
||||
<div class="viewcode-block" id="AuditingTest.test_audit"><a class="viewcode-back" href="../../../../../api/evennia.contrib.utils.auditing.tests.html#evennia.contrib.utils.auditing.tests.AuditingTest.test_audit">[docs]</a> <span class="nd">@patch</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.utils.auditing.server.AUDIT_CALLBACK"</span><span class="p">,</span>
|
||||
<span class="s2">"evennia.contrib.utils.auditing.outputs.to_syslog"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="nd">@patch</span><span class="p">(</span><span class="s2">"evennia.contrib.utils.auditing.server.AUDIT_IN"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="nd">@patch</span><span class="p">(</span><span class="s2">"evennia.contrib.utils.auditing.server.AUDIT_OUT"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">test_audit</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -198,8 +198,10 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">_find_elements</span><span class="p">(</span><span class="n">regex</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"<evennia.contrib.utils.random_string_generator.RandomStringGenerator for </span><span class="si">{}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="s2">"<evennia.contrib.utils.random_string_generator.RandomStringGenerator for </span><span class="si">{}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_script</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -211,7 +213,8 @@
|
|||
<span class="n">script</span> <span class="o">=</span> <span class="n">ScriptDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">db_key</span><span class="o">=</span><span class="s2">"generator_script"</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">ScriptDB</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span>
|
||||
<span class="n">script</span> <span class="o">=</span> <span class="n">create_script</span><span class="p">(</span>
|
||||
<span class="s2">"evennia.contrib.utils.random_string_generator.RandomStringGeneratorScript"</span><span class="p">)</span>
|
||||
<span class="s2">"evennia.contrib.utils.random_string_generator.RandomStringGeneratorScript"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">script</span> <span class="o">=</span> <span class="n">script</span>
|
||||
<span class="k">return</span> <span class="n">script</span>
|
||||
|
|
|
|||
|
|
@ -111,8 +111,7 @@
|
|||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.urls</span> <span class="kn">import</span> <span class="n">reverse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.text</span> <span class="kn">import</span> <span class="n">slugify</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">variable_from_module</span><span class="p">,</span> <span class="n">make_iter</span><span class="p">,</span> <span class="n">all_from_module</span><span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">variable_from_module</span><span class="p">,</span> <span class="n">make_iter</span><span class="p">,</span> <span class="n">all_from_module</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">logger</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">lazy_property</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.locks.lockhandler</span> <span class="kn">import</span> <span class="n">LockHandler</span>
|
||||
|
|
@ -128,6 +127,7 @@
|
|||
<span class="sd"> help command.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span><span class="p">:</span> <span class="nb">str</span>
|
||||
<span class="n">aliases</span><span class="p">:</span> <span class="nb">list</span>
|
||||
<span class="n">help_category</span><span class="p">:</span> <span class="nb">str</span>
|
||||
|
|
@ -189,7 +189,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">reverse</span><span class="p">(</span>
|
||||
<span class="s1">'help-entry-detail'</span><span class="p">,</span>
|
||||
<span class="s2">"help-entry-detail"</span><span class="p">,</span>
|
||||
<span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s2">"category"</span><span class="p">:</span> <span class="n">slugify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">help_category</span><span class="p">),</span> <span class="s2">"topic"</span><span class="p">:</span> <span class="n">slugify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)},</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
|
|
@ -234,8 +234,7 @@
|
|||
<span class="sd">"""</span>
|
||||
<span class="sd"> Initialize the storage.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">help_file_modules</span> <span class="o">=</span> <span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">part</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">help_file_modules</span><span class="p">)]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">help_file_modules</span> <span class="o">=</span> <span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">part</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">help_file_modules</span><span class="p">)]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">help_entries</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">help_entries_dict</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">load</span><span class="p">()</span></div>
|
||||
|
|
@ -248,13 +247,11 @@
|
|||
<span class="n">loaded_help_dicts</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">module_or_path</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">help_file_modules</span><span class="p">:</span>
|
||||
<span class="n">help_dict_list</span> <span class="o">=</span> <span class="n">variable_from_module</span><span class="p">(</span>
|
||||
<span class="n">module_or_path</span><span class="p">,</span> <span class="n">variable</span><span class="o">=</span><span class="s2">"HELP_ENTRY_DICTS"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">help_dict_list</span> <span class="o">=</span> <span class="n">variable_from_module</span><span class="p">(</span><span class="n">module_or_path</span><span class="p">,</span> <span class="n">variable</span><span class="o">=</span><span class="s2">"HELP_ENTRY_DICTS"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">help_dict_list</span><span class="p">:</span>
|
||||
<span class="n">help_dict_list</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">dct</span> <span class="k">for</span> <span class="n">dct</span> <span class="ow">in</span> <span class="n">all_from_module</span><span class="p">(</span><span class="n">module_or_path</span><span class="p">)</span><span class="o">.</span><span class="n">values</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dct</span><span class="p">,</span> <span class="nb">dict</span><span class="p">)]</span>
|
||||
<span class="n">dct</span> <span class="k">for</span> <span class="n">dct</span> <span class="ow">in</span> <span class="n">all_from_module</span><span class="p">(</span><span class="n">module_or_path</span><span class="p">)</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dct</span><span class="p">,</span> <span class="nb">dict</span><span class="p">)</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">help_dict_list</span><span class="p">:</span>
|
||||
<span class="n">loaded_help_dicts</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">help_dict_list</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -265,19 +262,23 @@
|
|||
<span class="n">unique_help_entries</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">dct</span> <span class="ow">in</span> <span class="n">loaded_help_dicts</span><span class="p">:</span>
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="n">dct</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'key'</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="n">category</span> <span class="o">=</span> <span class="n">dct</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'category'</span><span class="p">,</span> <span class="n">_DEFAULT_HELP_CATEGORY</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">dct</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'aliases'</span><span class="p">,</span> <span class="p">[]))</span>
|
||||
<span class="n">entrytext</span> <span class="o">=</span> <span class="n">dct</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'text'</span><span class="p">,</span> <span class="s1">''</span><span class="p">)</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="n">dct</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'locks'</span><span class="p">,</span> <span class="s1">''</span><span class="p">)</span>
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="n">dct</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"key"</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="n">category</span> <span class="o">=</span> <span class="n">dct</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"category"</span><span class="p">,</span> <span class="n">_DEFAULT_HELP_CATEGORY</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">dct</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"aliases"</span><span class="p">,</span> <span class="p">[]))</span>
|
||||
<span class="n">entrytext</span> <span class="o">=</span> <span class="n">dct</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"text"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="n">dct</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"locks"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">key</span> <span class="ow">and</span> <span class="n">entrytext</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot load file-help-entry (missing key or text): </span><span class="si">{</span><span class="n">dct</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">continue</span>
|
||||
|
||||
<span class="n">unique_help_entries</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">FileHelpEntry</span><span class="p">(</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">help_category</span><span class="o">=</span><span class="n">category</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="n">aliases</span><span class="p">,</span> <span class="n">lock_storage</span><span class="o">=</span><span class="n">locks</span><span class="p">,</span>
|
||||
<span class="n">entrytext</span><span class="o">=</span><span class="n">entrytext</span><span class="p">)</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span>
|
||||
<span class="n">help_category</span><span class="o">=</span><span class="n">category</span><span class="p">,</span>
|
||||
<span class="n">aliases</span><span class="o">=</span><span class="n">aliases</span><span class="p">,</span>
|
||||
<span class="n">lock_storage</span><span class="o">=</span><span class="n">locks</span><span class="p">,</span>
|
||||
<span class="n">entrytext</span><span class="o">=</span><span class="n">entrytext</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">help_entries_dict</span> <span class="o">=</span> <span class="n">unique_help_entries</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">help_entries</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">unique_help_entries</span><span class="o">.</span><span class="n">values</span><span class="p">())</span></div>
|
||||
|
|
|
|||
|
|
@ -61,11 +61,9 @@
|
|||
<span class="n">_LUNR_GET_BUILDER</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">_LUNR_BUILDER_PIPELINE</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="n">_RE_HELP_SUBTOPICS_START</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
|
||||
<span class="sa">r</span><span class="s2">"^\s*?#\s*?subtopics\s*?$"</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">I</span> <span class="o">+</span> <span class="n">re</span><span class="o">.</span><span class="n">M</span><span class="p">)</span>
|
||||
<span class="n">_RE_HELP_SUBTOPICS_START</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"^\s*?#\s*?subtopics\s*?$"</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">I</span> <span class="o">+</span> <span class="n">re</span><span class="o">.</span><span class="n">M</span><span class="p">)</span>
|
||||
<span class="n">_RE_HELP_SUBTOPIC_SPLIT</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"^\s*?(\#{2,6}\s*?\w+?[a-z0-9 \-\?!,\.]*?)$"</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">M</span> <span class="o">+</span> <span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">)</span>
|
||||
<span class="n">_RE_HELP_SUBTOPIC_PARSE</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
|
||||
<span class="sa">r</span><span class="s2">"^(?P<nesting>\#{2,6})\s*?(?P<name>.*?)$"</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">I</span> <span class="o">+</span> <span class="n">re</span><span class="o">.</span><span class="n">M</span><span class="p">)</span>
|
||||
<span class="n">_RE_HELP_SUBTOPIC_PARSE</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"^(?P<nesting>\#{2,6})\s*?(?P<name>.*?)$"</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">I</span> <span class="o">+</span> <span class="n">re</span><span class="o">.</span><span class="n">M</span><span class="p">)</span>
|
||||
|
||||
<span class="n">MAX_SUBTOPIC_NESTING</span> <span class="o">=</span> <span class="mi">5</span>
|
||||
|
||||
|
|
@ -99,6 +97,7 @@
|
|||
<span class="kn">from</span> <span class="nn">lunr</span> <span class="kn">import</span> <span class="n">get_default_builder</span> <span class="k">as</span> <span class="n">_LUNR_GET_BUILDER</span>
|
||||
<span class="kn">from</span> <span class="nn">lunr</span> <span class="kn">import</span> <span class="n">stop_word_filter</span>
|
||||
<span class="kn">from</span> <span class="nn">lunr.stemmer</span> <span class="kn">import</span> <span class="n">stemmer</span>
|
||||
|
||||
<span class="c1"># from lunr.trimmer import trimmer</span>
|
||||
|
||||
<span class="c1"># pre-create a lunr index-builder pipeline where we've removed some of</span>
|
||||
|
|
@ -132,12 +131,7 @@
|
|||
<span class="n">builder</span><span class="o">.</span><span class="n">pipeline</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span>
|
||||
<span class="n">builder</span><span class="o">.</span><span class="n">pipeline</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="o">*</span><span class="n">_LUNR_BUILDER_PIPELINE</span><span class="p">)</span>
|
||||
|
||||
<span class="n">search_index</span> <span class="o">=</span> <span class="n">_LUNR</span><span class="p">(</span>
|
||||
<span class="n">ref</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span>
|
||||
<span class="n">fields</span><span class="o">=</span><span class="n">fields</span><span class="p">,</span>
|
||||
<span class="n">documents</span><span class="o">=</span><span class="n">indx</span><span class="p">,</span>
|
||||
<span class="n">builder</span><span class="o">=</span><span class="n">builder</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">search_index</span> <span class="o">=</span> <span class="n">_LUNR</span><span class="p">(</span><span class="n">ref</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">fields</span><span class="o">=</span><span class="n">fields</span><span class="p">,</span> <span class="n">documents</span><span class="o">=</span><span class="n">indx</span><span class="p">,</span> <span class="n">builder</span><span class="o">=</span><span class="n">builder</span><span class="p">)</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">matches</span> <span class="o">=</span> <span class="n">search_index</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">query</span><span class="p">)[:</span><span class="n">suggestion_maxnum</span><span class="p">]</span>
|
||||
|
|
@ -217,7 +211,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">topic</span><span class="p">,</span> <span class="o">*</span><span class="n">subtopics</span> <span class="o">=</span> <span class="n">_RE_HELP_SUBTOPICS_START</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span> <span class="n">maxsplit</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">structure</span> <span class="o">=</span> <span class="p">{</span><span class="kc">None</span><span class="p">:</span> <span class="n">topic</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)}</span>
|
||||
<span class="n">structure</span> <span class="o">=</span> <span class="p">{</span><span class="kc">None</span><span class="p">:</span> <span class="n">topic</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)}</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">subtopics</span><span class="p">:</span>
|
||||
<span class="n">subtopics</span> <span class="o">=</span> <span class="n">subtopics</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
|
@ -235,12 +229,13 @@
|
|||
<span class="k">if</span> <span class="n">subtopic_match</span><span class="p">:</span>
|
||||
<span class="c1"># a new sub(-sub..) category starts.</span>
|
||||
<span class="n">mdict</span> <span class="o">=</span> <span class="n">subtopic_match</span><span class="o">.</span><span class="n">groupdict</span><span class="p">()</span>
|
||||
<span class="n">subtopic</span> <span class="o">=</span> <span class="n">mdict</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="n">new_nesting</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">mdict</span><span class="p">[</span><span class="s1">'nesting'</span><span class="p">])</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
<span class="n">subtopic</span> <span class="o">=</span> <span class="n">mdict</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="n">new_nesting</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">mdict</span><span class="p">[</span><span class="s2">"nesting"</span><span class="p">])</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">new_nesting</span> <span class="o">></span> <span class="n">MAX_SUBTOPIC_NESTING</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Can have max </span><span class="si">{</span><span class="n">MAX_SUBTOPIC_NESTING</span><span class="si">}</span><span class="s2"> levels of nested help subtopics."</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"Can have max </span><span class="si">{</span><span class="n">MAX_SUBTOPIC_NESTING</span><span class="si">}</span><span class="s2"> levels of nested help subtopics."</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">nestdiff</span> <span class="o">=</span> <span class="n">new_nesting</span> <span class="o">-</span> <span class="n">current_nesting</span>
|
||||
<span class="k">if</span> <span class="n">nestdiff</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
|
||||
|
|
@ -268,9 +263,7 @@
|
|||
<span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">dct</span><span class="p">:</span>
|
||||
<span class="n">dct</span> <span class="o">=</span> <span class="n">dct</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">dct</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="kc">None</span><span class="p">:</span> <span class="n">part</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">dct</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="kc">None</span><span class="p">:</span> <span class="n">part</span><span class="p">}</span>
|
||||
<span class="k">return</span> <span class="n">structure</span></div>
|
||||
</pre></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -85,6 +85,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="kc">True</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="all"><a class="viewcode-back" href="../../../api/evennia.locks.lockfuncs.html#evennia.locks.lockfuncs.all">[docs]</a><span class="k">def</span> <span class="nf">all</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="kc">True</span></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -277,8 +277,11 @@
|
|||
<span class="n">funcname</span><span class="p">,</span> <span class="n">rest</span> <span class="o">=</span> <span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">")"</span><span class="p">)</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">funcstring</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="n">func</span> <span class="o">=</span> <span class="n">_LOCKFUNCS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">funcname</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">callable</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
|
||||
<span class="n">elist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Lock: lock-function '</span><span class="si">{lockfunc}</span><span class="s2">' is not available."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">lockfunc</span><span class="o">=</span><span class="n">funcstring</span><span class="p">))</span>
|
||||
<span class="n">elist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Lock: lock-function '</span><span class="si">{lockfunc}</span><span class="s2">' is not available."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">lockfunc</span><span class="o">=</span><span class="n">funcstring</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">arg</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">rest</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span> <span class="k">if</span> <span class="n">arg</span> <span class="ow">and</span> <span class="s2">"="</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">arg</span><span class="p">)</span>
|
||||
<span class="n">kwargs</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
||||
|
|
@ -305,13 +308,16 @@
|
|||
<span class="k">continue</span>
|
||||
<span class="k">if</span> <span class="n">access_type</span> <span class="ow">in</span> <span class="n">locks</span><span class="p">:</span>
|
||||
<span class="n">duplicates</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="n">wlist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"LockHandler on </span><span class="si">{obj}</span><span class="s2">: access type '</span><span class="si">{access_type}</span><span class="s2">' "</span>
|
||||
<span class="s2">"changed from '</span><span class="si">{source}</span><span class="s2">' to '</span><span class="si">{goal}</span><span class="s2">' "</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">obj</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="p">,</span>
|
||||
<span class="n">access_type</span><span class="o">=</span><span class="n">access_type</span><span class="p">,</span>
|
||||
<span class="n">source</span><span class="o">=</span><span class="n">locks</span><span class="p">[</span><span class="n">access_type</span><span class="p">][</span><span class="mi">2</span><span class="p">],</span>
|
||||
<span class="n">goal</span><span class="o">=</span><span class="n">raw_lockstring</span><span class="p">))</span>
|
||||
<span class="n">wlist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"LockHandler on </span><span class="si">{obj}</span><span class="s2">: access type '</span><span class="si">{access_type}</span><span class="s2">' "</span>
|
||||
<span class="s2">"changed from '</span><span class="si">{source}</span><span class="s2">' to '</span><span class="si">{goal}</span><span class="s2">' "</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">obj</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="p">,</span>
|
||||
<span class="n">access_type</span><span class="o">=</span><span class="n">access_type</span><span class="p">,</span>
|
||||
<span class="n">source</span><span class="o">=</span><span class="n">locks</span><span class="p">[</span><span class="n">access_type</span><span class="p">][</span><span class="mi">2</span><span class="p">],</span>
|
||||
<span class="n">goal</span><span class="o">=</span><span class="n">raw_lockstring</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">locks</span><span class="p">[</span><span class="n">access_type</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">evalstring</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">lock_funcs</span><span class="p">),</span> <span class="n">raw_lockstring</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">wlist</span> <span class="ow">and</span> <span class="n">WARNING_LOG</span><span class="p">:</span>
|
||||
|
|
@ -737,6 +743,7 @@
|
|||
<span class="n">access_type</span><span class="o">=</span><span class="n">access_type</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">check_perm</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">permission</span><span class="p">,</span> <span class="n">no_superuser_bypass</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Shortcut for checking if an object has the given `permission`. If the</span>
|
||||
|
|
@ -755,6 +762,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.locks.lockfuncs</span> <span class="kn">import</span> <span class="n">perm</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">no_superuser_bypass</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">is_superuser</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
<span class="k">return</span> <span class="n">perm</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">permission</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -279,8 +279,9 @@
|
|||
<span class="p">)</span>
|
||||
<span class="n">type_restriction</span> <span class="o">=</span> <span class="n">typeclasses</span> <span class="ow">and</span> <span class="n">Q</span><span class="p">(</span><span class="n">db_typeclass_path__in</span><span class="o">=</span><span class="n">make_iter</span><span class="p">(</span><span class="n">typeclasses</span><span class="p">))</span> <span class="ow">or</span> <span class="n">Q</span><span class="p">()</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">cand_restriction</span> <span class="o">&</span> <span class="n">type_restriction</span> <span class="o">&</span> <span class="n">Q</span><span class="p">(</span><span class="o">**</span><span class="n">querykwargs</span><span class="p">))</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"id"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">cand_restriction</span> <span class="o">&</span> <span class="n">type_restriction</span> <span class="o">&</span> <span class="n">Q</span><span class="p">(</span><span class="o">**</span><span class="n">querykwargs</span><span class="p">))</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span>
|
||||
<span class="s2">"id"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">exceptions</span><span class="o">.</span><span class="n">FieldError</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">none</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
|
|
@ -377,8 +378,9 @@
|
|||
<span class="n">index_matches</span> <span class="o">=</span> <span class="n">string_partial_matching</span><span class="p">(</span><span class="n">key_strings</span><span class="p">,</span> <span class="n">ostring</span><span class="p">,</span> <span class="n">ret_index</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">index_matches</span><span class="p">:</span>
|
||||
<span class="c1"># a match by key</span>
|
||||
<span class="n">match_ids</span> <span class="o">=</span> <span class="p">[</span><span class="n">obj</span><span class="o">.</span><span class="n">id</span> <span class="k">for</span> <span class="n">ind</span><span class="p">,</span> <span class="n">obj</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">search_candidates</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">ind</span> <span class="ow">in</span> <span class="n">index_matches</span><span class="p">]</span>
|
||||
<span class="n">match_ids</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">id</span> <span class="k">for</span> <span class="n">ind</span><span class="p">,</span> <span class="n">obj</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">search_candidates</span><span class="p">)</span> <span class="k">if</span> <span class="n">ind</span> <span class="ow">in</span> <span class="n">index_matches</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># match by alias rather than by key</span>
|
||||
<span class="n">search_candidates</span> <span class="o">=</span> <span class="n">search_candidates</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
|
|
|
|||
|
|
@ -83,11 +83,15 @@
|
|||
<span class="sd"> obj (Object): The object on which the</span>
|
||||
<span class="sd"> handler is defined</span>
|
||||
|
||||
<span class="sd"> Notes:</span>
|
||||
<span class="sd"> This was changed from using `set` to using `dict` internally</span>
|
||||
<span class="sd"> in order to retain insertion order.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span> <span class="o">=</span> <span class="n">obj</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_pkcache</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_pkcache</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_idcache</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">__instance_cache__</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_typecache</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">set</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_typecache</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">dict</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">init</span><span class="p">()</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ContentsHandler.load"><a class="viewcode-back" href="../../../api/evennia.objects.models.html#evennia.objects.models.ContentsHandler.load">[docs]</a> <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -105,10 +109,10 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">objects</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_pkcache</span> <span class="o">=</span> <span class="p">{</span><span class="n">obj</span><span class="o">.</span><span class="n">pk</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">objects</span><span class="p">}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_pkcache</span> <span class="o">=</span> <span class="p">{</span><span class="n">obj</span><span class="o">.</span><span class="n">pk</span><span class="p">:</span> <span class="kc">True</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">objects</span><span class="p">}</span>
|
||||
<span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">objects</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">ctype</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">_content_types</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_typecache</span><span class="p">[</span><span class="n">ctype</span><span class="p">]</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_typecache</span><span class="p">[</span><span class="n">ctype</span><span class="p">][</span><span class="n">obj</span><span class="o">.</span><span class="n">pk</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ContentsHandler.get"><a class="viewcode-back" href="../../../api/evennia.objects.models.html#evennia.objects.models.ContentsHandler.get">[docs]</a> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">content_type</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -123,11 +127,11 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">content_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">pks</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_typecache</span><span class="p">[</span><span class="n">content_type</span><span class="p">]</span>
|
||||
<span class="n">pks</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_typecache</span><span class="p">[</span><span class="n">content_type</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">pks</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pkcache</span>
|
||||
<span class="n">pks</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pkcache</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">exclude</span><span class="p">:</span>
|
||||
<span class="n">pks</span> <span class="o">=</span> <span class="n">pks</span> <span class="o">-</span> <span class="p">{</span><span class="n">excl</span><span class="o">.</span><span class="n">pk</span> <span class="k">for</span> <span class="n">excl</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">exclude</span><span class="p">)}</span>
|
||||
<span class="n">pks</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">pks</span><span class="p">)</span> <span class="o">-</span> <span class="p">{</span><span class="n">excl</span><span class="o">.</span><span class="n">pk</span> <span class="k">for</span> <span class="n">excl</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">exclude</span><span class="p">)}</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_idcache</span><span class="p">[</span><span class="n">pk</span><span class="p">]</span> <span class="k">for</span> <span class="n">pk</span> <span class="ow">in</span> <span class="n">pks</span><span class="p">]</span>
|
||||
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
|
||||
|
|
@ -149,9 +153,9 @@
|
|||
<span class="sd"> obj (Object): object to add</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_pkcache</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_pkcache</span><span class="p">[</span><span class="n">obj</span><span class="o">.</span><span class="n">pk</span><span class="p">]</span> <span class="o">=</span> <span class="n">obj</span>
|
||||
<span class="k">for</span> <span class="n">ctype</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">_content_types</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_typecache</span><span class="p">[</span><span class="n">ctype</span><span class="p">]</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_typecache</span><span class="p">[</span><span class="n">ctype</span><span class="p">][</span><span class="n">obj</span><span class="o">.</span><span class="n">pk</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ContentsHandler.remove"><a class="viewcode-back" href="../../../api/evennia.objects.models.html#evennia.objects.models.ContentsHandler.remove">[docs]</a> <span class="k">def</span> <span class="nf">remove</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -161,15 +165,10 @@
|
|||
<span class="sd"> obj (Object): object to remove</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_pkcache</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
|
||||
<span class="c1"># not in pk cache, but can happen deletions happens</span>
|
||||
<span class="c1"># remotely from out-of-thread.</span>
|
||||
<span class="k">pass</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_pkcache</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">pk</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">ctype</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">_content_types</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">pk</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_typecache</span><span class="p">[</span><span class="n">ctype</span><span class="p">]:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_typecache</span><span class="p">[</span><span class="n">ctype</span><span class="p">]</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">pk</span><span class="p">)</span></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_typecache</span><span class="p">[</span><span class="n">ctype</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">pk</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ContentsHandler.clear"><a class="viewcode-back" href="../../../api/evennia.objects.models.html#evennia.objects.models.ContentsHandler.clear">[docs]</a> <span class="k">def</span> <span class="nf">clear</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -177,7 +176,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_pkcache</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_typecache</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">set</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_typecache</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">dict</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">init</span><span class="p">()</span></div></div>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -64,9 +64,15 @@
|
|||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.attributes</span> <span class="kn">import</span> <span class="n">ModelAttributeBackend</span><span class="p">,</span> <span class="n">NickHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.models</span> <span class="kn">import</span> <span class="n">TypeclassBase</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">ansi</span><span class="p">,</span> <span class="n">create</span><span class="p">,</span> <span class="n">funcparser</span><span class="p">,</span> <span class="n">logger</span><span class="p">,</span> <span class="n">search</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="p">(</span><span class="n">class_from_module</span><span class="p">,</span> <span class="n">is_iter</span><span class="p">,</span> <span class="n">lazy_property</span><span class="p">,</span>
|
||||
<span class="n">list_to_string</span><span class="p">,</span> <span class="n">make_iter</span><span class="p">,</span> <span class="n">to_str</span><span class="p">,</span>
|
||||
<span class="n">variable_from_module</span><span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">class_from_module</span><span class="p">,</span>
|
||||
<span class="n">is_iter</span><span class="p">,</span>
|
||||
<span class="n">lazy_property</span><span class="p">,</span>
|
||||
<span class="n">list_to_string</span><span class="p">,</span>
|
||||
<span class="n">make_iter</span><span class="p">,</span>
|
||||
<span class="n">to_str</span><span class="p">,</span>
|
||||
<span class="n">variable_from_module</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">_INFLECT</span> <span class="o">=</span> <span class="n">inflect</span><span class="o">.</span><span class="n">engine</span><span class="p">()</span>
|
||||
<span class="n">_MULTISESSION_MODE</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">MULTISESSION_MODE</span>
|
||||
|
|
@ -254,13 +260,13 @@
|
|||
<span class="n">objects</span> <span class="o">=</span> <span class="n">ObjectManager</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># populated by `return_apperance`</span>
|
||||
<span class="n">appearance_template</span> <span class="o">=</span> <span class="s1">'''</span>
|
||||
<span class="si">{header}</span><span class="s1"></span>
|
||||
<span class="s1">|c</span><span class="si">{name}</span><span class="s1">|n</span>
|
||||
<span class="si">{desc}</span><span class="s1"></span>
|
||||
<span class="si">{exits}{characters}{things}</span><span class="s1"></span>
|
||||
<span class="si">{footer}</span><span class="s1"></span>
|
||||
<span class="s1"> '''</span>
|
||||
<span class="n">appearance_template</span> <span class="o">=</span> <span class="s2">"""</span>
|
||||
<span class="si">{header}</span><span class="s2"></span>
|
||||
<span class="s2">|c</span><span class="si">{name}</span><span class="s2">|n</span>
|
||||
<span class="si">{desc}</span><span class="s2"></span>
|
||||
<span class="si">{exits}{characters}{things}</span><span class="s2"></span>
|
||||
<span class="si">{footer}</span><span class="s2"></span>
|
||||
<span class="s2"> """</span>
|
||||
|
||||
<span class="c1"># on-object properties</span>
|
||||
|
||||
|
|
@ -574,12 +580,14 @@
|
|||
<span class="c1"># we re-run exact match agains one of the matches to</span>
|
||||
<span class="c1"># make sure we were not catching partial matches not belonging</span>
|
||||
<span class="c1"># to the stack</span>
|
||||
<span class="n">nstack</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_objs_with_key_or_alias</span><span class="p">(</span>
|
||||
<span class="n">results</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
||||
<span class="n">exact</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">candidates</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="n">results</span><span class="p">),</span>
|
||||
<span class="n">typeclasses</span><span class="o">=</span><span class="p">[</span><span class="n">typeclass</span><span class="p">]</span> <span class="k">if</span> <span class="n">typeclass</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="p">))</span>
|
||||
<span class="n">nstack</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span>
|
||||
<span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_objs_with_key_or_alias</span><span class="p">(</span>
|
||||
<span class="n">results</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
||||
<span class="n">exact</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">candidates</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="n">results</span><span class="p">),</span>
|
||||
<span class="n">typeclasses</span><span class="o">=</span><span class="p">[</span><span class="n">typeclass</span><span class="p">]</span> <span class="k">if</span> <span class="n">typeclass</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">nstack</span> <span class="o">==</span> <span class="n">nresults</span><span class="p">:</span>
|
||||
<span class="c1"># a valid stack, return multiple results</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="n">results</span><span class="p">)[:</span><span class="n">stacked</span><span class="p">]</span>
|
||||
|
|
@ -672,9 +680,7 @@
|
|||
<span class="n">raw_string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">nickreplace</span><span class="p">(</span>
|
||||
<span class="n">raw_string</span><span class="p">,</span> <span class="n">categories</span><span class="o">=</span><span class="p">(</span><span class="s2">"inputline"</span><span class="p">,</span> <span class="s2">"channel"</span><span class="p">),</span> <span class="n">include_account</span><span class="o">=</span><span class="kc">True</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">_CMDHANDLER</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span> <span class="n">raw_string</span><span class="p">,</span> <span class="n">callertype</span><span class="o">=</span><span class="s2">"object"</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
|
||||
<span class="p">)</span></div>
|
||||
<span class="k">return</span> <span class="n">_CMDHANDLER</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">raw_string</span><span class="p">,</span> <span class="n">callertype</span><span class="o">=</span><span class="s2">"object"</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultObject.msg"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.msg">[docs]</a> <span class="k">def</span> <span class="nf">msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">from_obj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -832,7 +838,7 @@
|
|||
<span class="n">mapping</span> <span class="o">=</span> <span class="n">mapping</span> <span class="ow">or</span> <span class="p">{}</span>
|
||||
<span class="n">you</span> <span class="o">=</span> <span class="n">from_obj</span> <span class="ow">or</span> <span class="bp">self</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'you'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="s2">"you"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">:</span>
|
||||
<span class="n">mapping</span><span class="p">[</span><span class="n">you</span><span class="p">]</span> <span class="o">=</span> <span class="n">you</span>
|
||||
|
||||
<span class="n">contents</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">contents</span>
|
||||
|
|
@ -844,14 +850,23 @@
|
|||
|
||||
<span class="c1"># actor-stance replacements</span>
|
||||
<span class="n">inmessage</span> <span class="o">=</span> <span class="n">_MSG_CONTENTS_PARSER</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span>
|
||||
<span class="n">inmessage</span><span class="p">,</span> <span class="n">raise_errors</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">return_string</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">caller</span><span class="o">=</span><span class="n">you</span><span class="p">,</span> <span class="n">receiver</span><span class="o">=</span><span class="n">receiver</span><span class="p">,</span> <span class="n">mapping</span><span class="o">=</span><span class="n">mapping</span><span class="p">)</span>
|
||||
<span class="n">inmessage</span><span class="p">,</span>
|
||||
<span class="n">raise_errors</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">return_string</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">caller</span><span class="o">=</span><span class="n">you</span><span class="p">,</span>
|
||||
<span class="n">receiver</span><span class="o">=</span><span class="n">receiver</span><span class="p">,</span>
|
||||
<span class="n">mapping</span><span class="o">=</span><span class="n">mapping</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># director-stance replacements</span>
|
||||
<span class="n">outmessage</span> <span class="o">=</span> <span class="n">inmessage</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="o">**</span><span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="o">=</span><span class="n">receiver</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"get_display_name"</span><span class="p">)</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">items</span><span class="p">()})</span>
|
||||
<span class="o">**</span><span class="p">{</span>
|
||||
<span class="n">key</span><span class="p">:</span> <span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="o">=</span><span class="n">receiver</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"get_display_name"</span><span class="p">)</span>
|
||||
<span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">receiver</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="p">(</span><span class="n">outmessage</span><span class="p">,</span> <span class="n">outkwargs</span><span class="p">),</span> <span class="n">from_obj</span><span class="o">=</span><span class="n">from_obj</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
|
|
@ -908,6 +923,7 @@
|
|||
<span class="sd"> 7. `self.at_post_move(source_location)`</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">logerr</span><span class="p">(</span><span class="n">string</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">err</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Simple log helper method"""</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">()</span>
|
||||
|
|
@ -1031,8 +1047,10 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">home</span><span class="p">:</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Something went wrong! You are dumped into nowhere. Contact an admin."</span><span class="p">))</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_err</span><span class="p">(</span><span class="s2">"Missing default home - '</span><span class="si">{name}</span><span class="s2">(#</span><span class="si">{dbid}</span><span class="s2">)' now "</span>
|
||||
<span class="s2">"has a null location."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">dbid</span><span class="o">=</span><span class="n">obj</span><span class="o">.</span><span class="n">dbid</span><span class="p">))</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_err</span><span class="p">(</span>
|
||||
<span class="s2">"Missing default home - '</span><span class="si">{name}</span><span class="s2">(#</span><span class="si">{dbid}</span><span class="s2">)' now "</span>
|
||||
<span class="s2">"has a null location."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">dbid</span><span class="o">=</span><span class="n">obj</span><span class="o">.</span><span class="n">dbid</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">has_account</span><span class="p">:</span>
|
||||
|
|
@ -1592,7 +1610,8 @@
|
|||
<span class="c1"># This was created from nowhere and added to an account's</span>
|
||||
<span class="c1"># inventory; it's probably the result of a create command.</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"You now have </span><span class="si">{name}</span><span class="s2"> in your possession."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">))</span>
|
||||
<span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
|
|
@ -1796,13 +1815,14 @@
|
|||
<span class="sd"> lists are the actual objects.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">filter_visible</span><span class="p">(</span><span class="n">obj_list</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">obj</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">obj_list</span> <span class="k">if</span> <span class="n">obj</span> <span class="o">!=</span> <span class="n">looker</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">looker</span><span class="p">,</span> <span class="s2">"view"</span><span class="p">)]</span>
|
||||
|
||||
<span class="k">return</span> <span class="p">{</span>
|
||||
<span class="s2">"exits"</span><span class="p">:</span> <span class="n">filter_visible</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contents_get</span><span class="p">(</span><span class="n">content_type</span><span class="o">=</span><span class="s2">"exit"</span><span class="p">)),</span>
|
||||
<span class="s2">"characters"</span><span class="p">:</span> <span class="n">filter_visible</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contents_get</span><span class="p">(</span><span class="n">content_type</span><span class="o">=</span><span class="s2">"character"</span><span class="p">)),</span>
|
||||
<span class="s2">"things"</span><span class="p">:</span> <span class="n">filter_visible</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contents_get</span><span class="p">(</span><span class="n">content_type</span><span class="o">=</span><span class="s2">"object"</span><span class="p">))</span>
|
||||
<span class="s2">"things"</span><span class="p">:</span> <span class="n">filter_visible</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contents_get</span><span class="p">(</span><span class="n">content_type</span><span class="o">=</span><span class="s2">"object"</span><span class="p">)),</span>
|
||||
<span class="p">}</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultObject.get_content_names"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.get_content_names">[docs]</a> <span class="k">def</span> <span class="nf">get_content_names</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">looker</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
|
|
@ -1831,13 +1851,14 @@
|
|||
<span class="c1"># a mapping {'exits': [...], 'characters': [...], 'things': [...]}</span>
|
||||
<span class="n">contents_map</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_visible_contents</span><span class="p">(</span><span class="n">looker</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="n">character_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">char</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">contents_map</span><span class="p">[</span><span class="s1">'characters'</span><span class="p">]]</span>
|
||||
<span class="n">exit_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">exi</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="k">for</span> <span class="n">exi</span> <span class="ow">in</span> <span class="n">contents_map</span><span class="p">[</span><span class="s1">'exits'</span><span class="p">]]</span>
|
||||
<span class="n">character_names</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">char</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">contents_map</span><span class="p">[</span><span class="s2">"characters"</span><span class="p">]</span>
|
||||
<span class="p">]</span>
|
||||
<span class="n">exit_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">exi</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="k">for</span> <span class="n">exi</span> <span class="ow">in</span> <span class="n">contents_map</span><span class="p">[</span><span class="s2">"exits"</span><span class="p">]]</span>
|
||||
|
||||
<span class="c1"># group all same-named things under one name</span>
|
||||
<span class="n">things</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">thing</span> <span class="ow">in</span> <span class="n">contents_map</span><span class="p">[</span><span class="s1">'things'</span><span class="p">]:</span>
|
||||
<span class="k">for</span> <span class="n">thing</span> <span class="ow">in</span> <span class="n">contents_map</span><span class="p">[</span><span class="s2">"things"</span><span class="p">]:</span>
|
||||
<span class="n">things</span><span class="p">[</span><span class="n">thing</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">thing</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># pluralize same-named things</span>
|
||||
|
|
@ -1848,11 +1869,7 @@
|
|||
<span class="n">singular</span><span class="p">,</span> <span class="n">plural</span> <span class="o">=</span> <span class="n">thing</span><span class="o">.</span><span class="n">get_numbered_name</span><span class="p">(</span><span class="n">nthings</span><span class="p">,</span> <span class="n">looker</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="n">thingname</span><span class="p">)</span>
|
||||
<span class="n">thing_names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">singular</span> <span class="k">if</span> <span class="n">nthings</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="n">plural</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="p">{</span>
|
||||
<span class="s2">"exits"</span><span class="p">:</span> <span class="n">exit_names</span><span class="p">,</span>
|
||||
<span class="s2">"characters"</span><span class="p">:</span> <span class="n">character_names</span><span class="p">,</span>
|
||||
<span class="s2">"things"</span><span class="p">:</span> <span class="n">thing_names</span>
|
||||
<span class="p">}</span></div>
|
||||
<span class="k">return</span> <span class="p">{</span><span class="s2">"exits"</span><span class="p">:</span> <span class="n">exit_names</span><span class="p">,</span> <span class="s2">"characters"</span><span class="p">:</span> <span class="n">character_names</span><span class="p">,</span> <span class="s2">"things"</span><span class="p">:</span> <span class="n">thing_names</span><span class="p">}</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultObject.return_appearance"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.return_appearance">[docs]</a> <span class="k">def</span> <span class="nf">return_appearance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">looker</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -1882,7 +1899,7 @@
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">looker</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s1">''</span>
|
||||
<span class="k">return</span> <span class="s2">""</span>
|
||||
|
||||
<span class="c1"># ourselves</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
|
@ -1890,20 +1907,20 @@
|
|||
|
||||
<span class="c1"># contents</span>
|
||||
<span class="n">content_names_map</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_names</span><span class="p">(</span><span class="n">looker</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="n">exits</span> <span class="o">=</span> <span class="n">list_to_string</span><span class="p">(</span><span class="n">content_names_map</span><span class="p">[</span><span class="s1">'exits'</span><span class="p">])</span>
|
||||
<span class="n">characters</span> <span class="o">=</span> <span class="n">list_to_string</span><span class="p">(</span><span class="n">content_names_map</span><span class="p">[</span><span class="s1">'characters'</span><span class="p">])</span>
|
||||
<span class="n">things</span> <span class="o">=</span> <span class="n">list_to_string</span><span class="p">(</span><span class="n">content_names_map</span><span class="p">[</span><span class="s1">'things'</span><span class="p">])</span>
|
||||
<span class="n">exits</span> <span class="o">=</span> <span class="n">list_to_string</span><span class="p">(</span><span class="n">content_names_map</span><span class="p">[</span><span class="s2">"exits"</span><span class="p">])</span>
|
||||
<span class="n">characters</span> <span class="o">=</span> <span class="n">list_to_string</span><span class="p">(</span><span class="n">content_names_map</span><span class="p">[</span><span class="s2">"characters"</span><span class="p">])</span>
|
||||
<span class="n">things</span> <span class="o">=</span> <span class="n">list_to_string</span><span class="p">(</span><span class="n">content_names_map</span><span class="p">[</span><span class="s2">"things"</span><span class="p">])</span>
|
||||
|
||||
<span class="c1"># populate the appearance_template string. It's a good idea to strip it and</span>
|
||||
<span class="c1"># let the client add any extra spaces instead.</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">appearance_template</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">header</span><span class="o">=</span><span class="s1">''</span><span class="p">,</span>
|
||||
<span class="n">header</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span>
|
||||
<span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span>
|
||||
<span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span>
|
||||
<span class="n">exits</span><span class="o">=</span><span class="sa">f</span><span class="s2">"|wExits:|n </span><span class="si">{</span><span class="n">exits</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">exits</span> <span class="k">else</span> <span class="s1">''</span><span class="p">,</span>
|
||||
<span class="n">characters</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">|wCharacters:|n </span><span class="si">{</span><span class="n">characters</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">characters</span> <span class="k">else</span> <span class="s1">''</span><span class="p">,</span>
|
||||
<span class="n">things</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">|wYou see:|n </span><span class="si">{</span><span class="n">things</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">things</span> <span class="k">else</span> <span class="s1">''</span><span class="p">,</span>
|
||||
<span class="n">footer</span><span class="o">=</span><span class="s1">''</span>
|
||||
<span class="n">exits</span><span class="o">=</span><span class="sa">f</span><span class="s2">"|wExits:|n </span><span class="si">{</span><span class="n">exits</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">exits</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span>
|
||||
<span class="n">characters</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">|wCharacters:|n </span><span class="si">{</span><span class="n">characters</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">characters</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span>
|
||||
<span class="n">things</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">|wYou see:|n </span><span class="si">{</span><span class="n">things</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">things</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span>
|
||||
<span class="n">footer</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultObject.at_look"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_look">[docs]</a> <span class="k">def</span> <span class="nf">at_look</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
|
|
@ -2166,7 +2183,8 @@
|
|||
<span class="n">msg_type</span> <span class="o">=</span> <span class="s2">"whisper"</span>
|
||||
<span class="n">msg_self</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s1">'</span><span class="si">{self}</span><span class="s1"> whisper to </span><span class="si">{all_receivers}</span><span class="s1">, "|n</span><span class="si">{speech}</span><span class="s1">|n"'</span>
|
||||
<span class="k">if</span> <span class="n">msg_self</span> <span class="ow">is</span> <span class="kc">True</span> <span class="k">else</span> <span class="n">msg_self</span>
|
||||
<span class="k">if</span> <span class="n">msg_self</span> <span class="ow">is</span> <span class="kc">True</span>
|
||||
<span class="k">else</span> <span class="n">msg_self</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">msg_receivers</span> <span class="o">=</span> <span class="n">msg_receivers</span> <span class="ow">or</span> <span class="s1">'</span><span class="si">{object}</span><span class="s1"> whispers: "|n</span><span class="si">{speech}</span><span class="s1">|n"'</span>
|
||||
<span class="n">msg_location</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
|
@ -2374,7 +2392,7 @@
|
|||
|
||||
<div class="viewcode-block" id="DefaultCharacter.validate_name"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.validate_name">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">validate_name</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="sd">""" Validate the character name prior to creating. Overload this function to add custom validators</span>
|
||||
<span class="sd">"""Validate the character name prior to creating. Overload this function to add custom validators</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> name (str) : The name of the character</span>
|
||||
|
|
@ -2433,8 +2451,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">prelogout_location</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">location</span> <span class="c1"># save location again to be sure.</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"|r</span><span class="si">{obj}</span><span class="s2"> has no location and no home is set.|n"</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">obj</span><span class="o">=</span><span class="bp">self</span><span class="p">),</span>
|
||||
<span class="n">session</span><span class="o">=</span><span class="n">session</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"|r</span><span class="si">{obj}</span><span class="s2"> has no location and no home is set.|n"</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">obj</span><span class="o">=</span><span class="bp">self</span><span class="p">),</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span>
|
||||
<span class="p">)</span> <span class="c1"># Note to set home.</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultCharacter.at_post_puppet"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.at_post_puppet">[docs]</a> <span class="k">def</span> <span class="nf">at_post_puppet</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
|
|
@ -2456,8 +2473,10 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">at_look</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">),</span> <span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"look"</span><span class="p">}),</span> <span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">message</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">from_obj</span><span class="p">):</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">{name}</span><span class="s2"> has entered the game."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
|
||||
<span class="n">from_obj</span><span class="o">=</span><span class="n">from_obj</span><span class="p">)</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">{name}</span><span class="s2"> has entered the game."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
|
||||
<span class="n">from_obj</span><span class="o">=</span><span class="n">from_obj</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">for_contents</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">from_obj</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span></div>
|
||||
|
||||
|
|
@ -2480,8 +2499,10 @@
|
|||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">:</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">message</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">from_obj</span><span class="p">):</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">{name}</span><span class="s2"> has left the game."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
|
||||
<span class="n">from_obj</span><span class="o">=</span><span class="n">from_obj</span><span class="p">)</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">{name}</span><span class="s2"> has left the game."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
|
||||
<span class="n">from_obj</span><span class="o">=</span><span class="n">from_obj</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">for_contents</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="p">],</span> <span class="n">from_obj</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">prelogout_location</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">location</span>
|
||||
|
|
@ -2624,6 +2645,7 @@
|
|||
<span class="c1"># Default Exit command, used by the base exit object</span>
|
||||
<span class="c1">#</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ExitCommand"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.ExitCommand">[docs]</a><span class="k">class</span> <span class="nc">ExitCommand</span><span class="p">(</span><span class="n">_COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> This is a command that simply cause the caller to traverse</span>
|
||||
|
|
|
|||
|
|
@ -304,7 +304,8 @@
|
|||
<span class="k">def</span> <span class="nf">_format_protfuncs</span><span class="p">():</span>
|
||||
<span class="n">out</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">sorted_funcs</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">func</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">func</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">protlib</span><span class="o">.</span><span class="n">FUNC_PARSER</span><span class="o">.</span><span class="n">callables</span><span class="o">.</span><span class="n">items</span><span class="p">(),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">tup</span><span class="p">:</span> <span class="n">tup</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">func</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">func</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">protlib</span><span class="o">.</span><span class="n">FUNC_PARSER</span><span class="o">.</span><span class="n">callables</span><span class="o">.</span><span class="n">items</span><span class="p">(),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">tup</span><span class="p">:</span> <span class="n">tup</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="p">]</span>
|
||||
<span class="k">for</span> <span class="n">protfunc_name</span><span class="p">,</span> <span class="n">protfunc</span> <span class="ow">in</span> <span class="n">sorted_funcs</span><span class="p">:</span>
|
||||
<span class="n">out</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
|
|
@ -2155,8 +2156,9 @@
|
|||
<span class="n">objects</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"objects"</span><span class="p">]</span>
|
||||
<span class="n">back_node</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"back_node"</span><span class="p">]</span>
|
||||
<span class="n">diff</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"diff"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">num_changed</span> <span class="o">=</span> <span class="n">spawner</span><span class="o">.</span><span class="n">batch_update_objects_with_prototype</span><span class="p">(</span><span class="n">prototype</span><span class="p">,</span> <span class="n">diff</span><span class="o">=</span><span class="n">diff</span><span class="p">,</span> <span class="n">objects</span><span class="o">=</span><span class="n">objects</span><span class="p">,</span>
|
||||
<span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">)</span>
|
||||
<span class="n">num_changed</span> <span class="o">=</span> <span class="n">spawner</span><span class="o">.</span><span class="n">batch_update_objects_with_prototype</span><span class="p">(</span>
|
||||
<span class="n">prototype</span><span class="p">,</span> <span class="n">diff</span><span class="o">=</span><span class="n">diff</span><span class="p">,</span> <span class="n">objects</span><span class="o">=</span><span class="n">objects</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|g</span><span class="si">{num}</span><span class="s2"> objects were updated successfully.|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">num</span><span class="o">=</span><span class="n">num_changed</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">back_node</span>
|
||||
|
||||
|
|
@ -2396,7 +2398,7 @@
|
|||
|
||||
|
||||
<div class="viewcode-block" id="node_prototype_save"><a class="viewcode-back" href="../../../api/evennia.prototypes.menus.html#evennia.prototypes.menus.node_prototype_save">[docs]</a><span class="k">def</span> <span class="nf">node_prototype_save</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""Save prototype to disk """</span>
|
||||
<span class="sd">"""Save prototype to disk"""</span>
|
||||
<span class="c1"># these are only set if we selected 'yes' to save on a previous pass</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"prototype"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="c1"># set to True/False if answered, None if first pass</span>
|
||||
|
|
|
|||
|
|
@ -92,16 +92,20 @@
|
|||
<span class="n">prot_value</span> <span class="o">=</span> <span class="n">prototype</span><span class="p">[</span><span class="n">fieldname</span><span class="p">]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># check if it's an attribute</span>
|
||||
<span class="k">for</span> <span class="n">attrtuple</span> <span class="ow">in</span> <span class="n">prototype</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'attrs'</span><span class="p">,</span> <span class="p">[]):</span>
|
||||
<span class="k">for</span> <span class="n">attrtuple</span> <span class="ow">in</span> <span class="n">prototype</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"attrs"</span><span class="p">,</span> <span class="p">[]):</span>
|
||||
<span class="k">if</span> <span class="n">attrtuple</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="n">fieldname</span><span class="p">:</span>
|
||||
<span class="n">prot_value</span> <span class="o">=</span> <span class="n">attrtuple</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">break</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">fieldname</span><span class="si">}</span><span class="s2"> not found in prototype</span><span class="se">\n</span><span class="si">{</span><span class="n">prototype</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"(neither as prototype-field or as an Attribute"</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">fieldname</span><span class="si">}</span><span class="s2"> not found in prototype</span><span class="se">\n</span><span class="si">{</span><span class="n">prototype</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"(neither as prototype-field or as an Attribute"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">prot_value</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error in prototype</span><span class="se">\n</span><span class="si">{</span><span class="n">prototype</span><span class="si">}</span><span class="se">\n</span><span class="s2">$protkey can only reference static "</span>
|
||||
<span class="sa">f</span><span class="s2">"values/attributes (found </span><span class="si">{</span><span class="n">prot_value</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Error in prototype</span><span class="se">\n</span><span class="si">{</span><span class="n">prototype</span><span class="si">}</span><span class="se">\n</span><span class="s2">$protkey can only reference static "</span>
|
||||
<span class="sa">f</span><span class="s2">"values/attributes (found </span><span class="si">{</span><span class="n">prot_value</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">funcparser_callable_eval</span><span class="p">(</span><span class="n">prot_value</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">ParsingError</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -173,8 +173,9 @@
|
|||
<span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
|
||||
<span class="c1"># attrs must be on form [(key, value, category, lockstr)]</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">is_iter</span><span class="p">(</span><span class="n">attr</span><span class="p">):</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="s2">"Prototype's 'attr' field must "</span>
|
||||
<span class="sa">f</span><span class="s2">"be a list of tuples: </span><span class="si">{</span><span class="n">prototype</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span>
|
||||
<span class="s2">"Prototype's 'attr' field must "</span> <span class="sa">f</span><span class="s2">"be a list of tuples: </span><span class="si">{</span><span class="n">prototype</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">attr</span><span class="p">:</span>
|
||||
<span class="n">nattr</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">nattr</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
|
|
@ -189,14 +190,15 @@
|
|||
|
||||
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"prototype_parent"</span><span class="p">:</span>
|
||||
<span class="c1"># homogenize any prototype-parents embedded directly as dicts</span>
|
||||
<span class="n">protparents</span> <span class="o">=</span> <span class="n">prototype</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'prototype_parent'</span><span class="p">,</span> <span class="p">[])</span>
|
||||
<span class="n">protparents</span> <span class="o">=</span> <span class="n">prototype</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"prototype_parent"</span><span class="p">,</span> <span class="p">[])</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">protparents</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="n">protparents</span> <span class="o">=</span> <span class="p">[</span><span class="n">protparents</span><span class="p">]</span>
|
||||
<span class="k">for</span> <span class="n">parent</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">protparents</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="c1"># recursively homogenize directly embedded prototype parents</span>
|
||||
<span class="n">homogenized_parents</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">homogenize_prototype</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">custom_keys</span><span class="o">=</span><span class="n">custom_keys</span><span class="p">))</span>
|
||||
<span class="n">homogenize_prototype</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">custom_keys</span><span class="o">=</span><span class="n">custom_keys</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># normal prototype-parent names are added as-is</span>
|
||||
<span class="n">homogenized_parents</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
|
||||
|
|
@ -212,7 +214,7 @@
|
|||
<span class="k">if</span> <span class="n">homogenized_tags</span><span class="p">:</span>
|
||||
<span class="n">homogenized</span><span class="p">[</span><span class="s2">"tags"</span><span class="p">]</span> <span class="o">=</span> <span class="n">homogenized_tags</span>
|
||||
<span class="k">if</span> <span class="n">homogenized_parents</span><span class="p">:</span>
|
||||
<span class="n">homogenized</span><span class="p">[</span><span class="s1">'prototype_parent'</span><span class="p">]</span> <span class="o">=</span> <span class="n">homogenized_parents</span>
|
||||
<span class="n">homogenized</span><span class="p">[</span><span class="s2">"prototype_parent"</span><span class="p">]</span> <span class="o">=</span> <span class="n">homogenized_parents</span>
|
||||
|
||||
<span class="c1"># add required missing parts that had defaults before</span>
|
||||
|
||||
|
|
@ -232,6 +234,7 @@
|
|||
|
||||
<span class="c1"># module/dict-based prototypes</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="load_module_prototypes"><a class="viewcode-back" href="../../../api/evennia.prototypes.prototypes.html#evennia.prototypes.prototypes.load_module_prototypes">[docs]</a><span class="k">def</span> <span class="nf">load_module_prototypes</span><span class="p">(</span><span class="o">*</span><span class="n">mod_or_prototypes</span><span class="p">,</span> <span class="n">override</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Load module prototypes. Also prototype-dicts passed directly to this function are considered</span>
|
||||
|
|
@ -275,12 +278,16 @@
|
|||
<span class="c1"># prototype dicts that must have 'prototype_key' set.</span>
|
||||
<span class="k">for</span> <span class="n">prot</span> <span class="ow">in</span> <span class="n">prototype_list</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">prot</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_err</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Prototype read from </span><span class="si">{</span><span class="n">mod</span><span class="si">}</span><span class="s2">.PROTOTYPE_LIST "</span>
|
||||
<span class="sa">f</span><span class="s2">"is not a dict (skipping): </span><span class="si">{</span><span class="n">prot</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_err</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Prototype read from </span><span class="si">{</span><span class="n">mod</span><span class="si">}</span><span class="s2">.PROTOTYPE_LIST "</span>
|
||||
<span class="sa">f</span><span class="s2">"is not a dict (skipping): </span><span class="si">{</span><span class="n">prot</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">elif</span> <span class="s2">"prototype_key"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">prot</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_err</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Prototype read from </span><span class="si">{</span><span class="n">mod</span><span class="si">}</span><span class="s2">.PROTOTYPE_LIST "</span>
|
||||
<span class="sa">f</span><span class="s2">"is missing the 'prototype_key' (skipping): </span><span class="si">{</span><span class="n">prot</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_err</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Prototype read from </span><span class="si">{</span><span class="n">mod</span><span class="si">}</span><span class="s2">.PROTOTYPE_LIST "</span>
|
||||
<span class="sa">f</span><span class="s2">"is missing the 'prototype_key' (skipping): </span><span class="si">{</span><span class="n">prot</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">prots</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">prot</span><span class="p">[</span><span class="s2">"prototype_key"</span><span class="p">],</span> <span class="n">homogenize_prototype</span><span class="p">(</span><span class="n">prot</span><span class="p">)))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -312,7 +319,8 @@
|
|||
<span class="p">{</span>
|
||||
<span class="s2">"prototype_key"</span><span class="p">:</span> <span class="n">actual_prot_key</span><span class="p">,</span>
|
||||
<span class="s2">"prototype_desc"</span><span class="p">:</span> <span class="p">(</span>
|
||||
<span class="n">prototype</span><span class="p">[</span><span class="s2">"prototype_desc"</span><span class="p">]</span> <span class="k">if</span> <span class="s2">"prototype_desc"</span> <span class="ow">in</span> <span class="n">prototype</span> <span class="k">else</span> <span class="p">(</span><span class="n">mod</span> <span class="ow">or</span> <span class="s2">"N/A"</span><span class="p">)),</span>
|
||||
<span class="n">prototype</span><span class="p">[</span><span class="s2">"prototype_desc"</span><span class="p">]</span> <span class="k">if</span> <span class="s2">"prototype_desc"</span> <span class="ow">in</span> <span class="n">prototype</span> <span class="k">else</span> <span class="p">(</span><span class="n">mod</span> <span class="ow">or</span> <span class="s2">"N/A"</span><span class="p">)</span>
|
||||
<span class="p">),</span>
|
||||
<span class="s2">"prototype_locks"</span><span class="p">:</span> <span class="p">(</span>
|
||||
<span class="n">prototype</span><span class="p">[</span><span class="s2">"prototype_locks"</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="s2">"prototype_locks"</span> <span class="ow">in</span> <span class="n">prototype</span>
|
||||
|
|
@ -334,9 +342,11 @@
|
|||
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mod_or_dict</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
<span class="c1"># a single prototype; we must make sure it has its key</span>
|
||||
<span class="n">prototype_key</span> <span class="o">=</span> <span class="n">mod_or_dict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'prototype_key'</span><span class="p">)</span>
|
||||
<span class="n">prototype_key</span> <span class="o">=</span> <span class="n">mod_or_dict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"prototype_key"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">prototype_key</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The prototype </span><span class="si">{</span><span class="n">mod_or_prototype</span><span class="si">}</span><span class="s2"> does not contain a 'prototype_key'"</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">ValidationError</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"The prototype </span><span class="si">{</span><span class="n">mod_or_prototype</span><span class="si">}</span><span class="s2"> does not contain a 'prototype_key'"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">prots</span> <span class="o">=</span> <span class="p">[(</span><span class="n">prototype_key</span><span class="p">,</span> <span class="n">mod_or_dict</span><span class="p">)]</span>
|
||||
<span class="n">mod</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -349,7 +359,7 @@
|
|||
<span class="k">for</span> <span class="n">prototype_key</span><span class="p">,</span> <span class="n">prot</span> <span class="ow">in</span> <span class="n">prots</span><span class="p">:</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="n">_cleanup_prototype</span><span class="p">(</span><span class="n">prototype_key</span><span class="p">,</span> <span class="n">prot</span><span class="p">,</span> <span class="n">mod</span><span class="o">=</span><span class="n">mod</span><span class="p">)</span>
|
||||
<span class="c1"># the key can change since in-proto key is given prio over variable-name-based keys</span>
|
||||
<span class="n">actual_prototype_key</span> <span class="o">=</span> <span class="n">prototype</span><span class="p">[</span><span class="s1">'prototype_key'</span><span class="p">]</span>
|
||||
<span class="n">actual_prototype_key</span> <span class="o">=</span> <span class="n">prototype</span><span class="p">[</span><span class="s2">"prototype_key"</span><span class="p">]</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">actual_prototype_key</span> <span class="ow">in</span> <span class="n">_MODULE_PROTOTYPES</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">override</span><span class="p">:</span>
|
||||
<span class="c1"># don't override - useful to still let settings replace dynamic inserts</span>
|
||||
|
|
@ -504,23 +514,26 @@
|
|||
<span class="n">stored_prototype</span> <span class="o">=</span> <span class="n">DbPrototype</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_key__iexact</span><span class="o">=</span><span class="n">prototype_key</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">stored_prototype</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">PermissionError</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Prototype </span><span class="si">{prototype_key}</span><span class="s2"> was not found."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">prototype_key</span><span class="o">=</span><span class="n">prototype_key</span><span class="p">))</span>
|
||||
<span class="k">raise</span> <span class="ne">PermissionError</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Prototype </span><span class="si">{prototype_key}</span><span class="s2"> was not found."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">prototype_key</span><span class="o">=</span><span class="n">prototype_key</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">stored_prototype</span> <span class="o">=</span> <span class="n">stored_prototype</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">caller</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">stored_prototype</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"edit"</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">PermissionError</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">{caller}</span><span class="s2"> needs explicit 'edit' permissions to "</span>
|
||||
<span class="s2">"delete prototype </span><span class="si">{prototype_key}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype_key</span><span class="o">=</span><span class="n">prototype_key</span><span class="p">)</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="si">{caller}</span><span class="s2"> needs explicit 'edit' permissions to "</span>
|
||||
<span class="s2">"delete prototype </span><span class="si">{prototype_key}</span><span class="s2">."</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype_key</span><span class="o">=</span><span class="n">prototype_key</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">stored_prototype</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="kc">True</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="search_prototype"><a class="viewcode-back" href="../../../api/evennia.prototypes.prototypes.html#evennia.prototypes.prototypes.search_prototype">[docs]</a><span class="k">def</span> <span class="nf">search_prototype</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">require_single</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">return_iterators</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">no_db</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="search_prototype"><a class="viewcode-back" href="../../../api/evennia.prototypes.prototypes.html#evennia.prototypes.prototypes.search_prototype">[docs]</a><span class="k">def</span> <span class="nf">search_prototype</span><span class="p">(</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">require_single</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">return_iterators</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">no_db</span><span class="o">=</span><span class="kc">False</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Find prototypes based on key and/or tags, or all prototypes.</span>
|
||||
|
||||
|
|
@ -562,7 +575,7 @@
|
|||
|
||||
<span class="c1"># prototype keys are always in lowecase</span>
|
||||
<span class="k">if</span> <span class="n">key</span><span class="p">:</span>
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># search module prototypes</span>
|
||||
|
||||
|
|
@ -629,10 +642,10 @@
|
|||
<span class="n">nmodules</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">module_prototypes</span><span class="p">)</span>
|
||||
<span class="n">ndbprots</span> <span class="o">=</span> <span class="n">db_matches</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="k">if</span> <span class="n">db_matches</span> <span class="k">else</span> <span class="mi">0</span>
|
||||
<span class="k">if</span> <span class="n">nmodules</span> <span class="o">+</span> <span class="n">ndbprots</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"Found </span><span class="si">{num}</span><span class="s2"> matching prototypes among </span><span class="si">{module_prototypes}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">num</span><span class="o">=</span><span class="n">nmodules</span> <span class="o">+</span> <span class="n">ndbprots</span><span class="p">,</span>
|
||||
<span class="n">module_prototypes</span><span class="o">=</span><span class="n">module_prototypes</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Found </span><span class="si">{num}</span><span class="s2"> matching prototypes among </span><span class="si">{module_prototypes}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">num</span><span class="o">=</span><span class="n">nmodules</span> <span class="o">+</span> <span class="n">ndbprots</span><span class="p">,</span> <span class="n">module_prototypes</span><span class="o">=</span><span class="n">module_prototypes</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">return_iterators</span><span class="p">:</span>
|
||||
|
|
@ -712,7 +725,7 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># get the correct slice, adjusted for the db-prototypes</span>
|
||||
<span class="n">pageno</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">pageno</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_npages_db</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">modprot_list</span><span class="p">[</span><span class="n">pageno</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">:</span> <span class="n">pageno</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">]</span></div>
|
||||
<span class="k">return</span> <span class="n">modprot_list</span><span class="p">[</span><span class="n">pageno</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="p">:</span> <span class="n">pageno</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="PrototypeEvMore.page_formatter"><a class="viewcode-back" href="../../../api/evennia.prototypes.prototypes.html#evennia.prototypes.prototypes.PrototypeEvMore.page_formatter">[docs]</a> <span class="k">def</span> <span class="nf">page_formatter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -851,12 +864,15 @@
|
|||
<span class="k">if</span> <span class="n">is_prototype_base</span><span class="p">:</span>
|
||||
<span class="n">_flags</span><span class="p">[</span><span class="s2">"errors"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Prototype </span><span class="si">{protkey}</span><span class="s2"> requires `typeclass` "</span> <span class="s2">"or 'prototype_parent'."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span><span class="p">)</span>
|
||||
<span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">_flags</span><span class="p">[</span><span class="s2">"warnings"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Prototype </span><span class="si">{protkey}</span><span class="s2"> can only be used as a mixin since it lacks "</span>
|
||||
<span class="s2">"'typeclass' or 'prototype_parent' keys."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span><span class="p">)</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"Prototype </span><span class="si">{protkey}</span><span class="s2"> can only be used as a mixin since it lacks "</span>
|
||||
<span class="s2">"'typeclass' or 'prototype_parent' keys."</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">strict</span> <span class="ow">and</span> <span class="n">typeclass</span><span class="p">:</span>
|
||||
|
|
@ -864,9 +880,10 @@
|
|||
<span class="n">class_from_module</span><span class="p">(</span><span class="n">typeclass</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="n">_flags</span><span class="p">[</span><span class="s2">"errors"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">{err}</span><span class="s2">: Prototype </span><span class="si">{protkey}</span><span class="s2"> is based on typeclass </span><span class="si">{typeclass}</span><span class="s2">, "</span>
|
||||
<span class="s2">"which could not be imported!"</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">err</span><span class="o">=</span><span class="n">err</span><span class="p">,</span> <span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="n">typeclass</span><span class="p">)</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="si">{err}</span><span class="s2">: Prototype </span><span class="si">{protkey}</span><span class="s2"> is based on typeclass </span><span class="si">{typeclass}</span><span class="s2">, "</span>
|
||||
<span class="s2">"which could not be imported!"</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">err</span><span class="o">=</span><span class="n">err</span><span class="p">,</span> <span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="n">typeclass</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">prototype_parent</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">prototype_parent</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
||||
|
|
@ -882,20 +899,24 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">protstring</span> <span class="o">=</span> <span class="n">protstring</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">protkey</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">protstring</span> <span class="o">==</span> <span class="n">protkey</span><span class="p">:</span>
|
||||
<span class="n">_flags</span><span class="p">[</span><span class="s2">"errors"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Prototype </span><span class="si">{protkey}</span><span class="s2"> tries to parent itself."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span><span class="p">))</span>
|
||||
<span class="n">_flags</span><span class="p">[</span><span class="s2">"errors"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Prototype </span><span class="si">{protkey}</span><span class="s2"> tries to parent itself."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">protparent</span> <span class="o">=</span> <span class="n">protparents</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">protstring</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">protparent</span><span class="p">:</span>
|
||||
<span class="n">_flags</span><span class="p">[</span><span class="s2">"errors"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Prototype </span><span class="si">{protkey}</span><span class="s2">'s `prototype_parent` (named '</span><span class="si">{parent}</span><span class="s2">') "</span>
|
||||
<span class="s2">"was not found."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="n">protstring</span><span class="p">)</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"Prototype </span><span class="si">{protkey}</span><span class="s2">'s `prototype_parent` (named '</span><span class="si">{parent}</span><span class="s2">') "</span>
|
||||
<span class="s2">"was not found."</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="n">protstring</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># check for infinite recursion</span>
|
||||
<span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">prototype</span><span class="p">)</span> <span class="ow">in</span> <span class="n">_flags</span><span class="p">[</span><span class="s2">"visited"</span><span class="p">]:</span>
|
||||
<span class="n">_flags</span><span class="p">[</span><span class="s2">"errors"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">{protkey}</span><span class="s2"> has infinite nesting of prototypes."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span> <span class="ow">or</span> <span class="n">prototype</span><span class="p">)</span>
|
||||
<span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span> <span class="ow">or</span> <span class="n">prototype</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">_flags</span><span class="p">[</span><span class="s2">"errors"</span><span class="p">]:</span>
|
||||
|
|
@ -917,9 +938,11 @@
|
|||
<span class="c1"># if we get back to the current level without a typeclass it's an error.</span>
|
||||
<span class="k">if</span> <span class="n">strict</span> <span class="ow">and</span> <span class="n">is_prototype_base</span> <span class="ow">and</span> <span class="n">_flags</span><span class="p">[</span><span class="s2">"depth"</span><span class="p">]</span> <span class="o"><=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">_flags</span><span class="p">[</span><span class="s2">"typeclass"</span><span class="p">]:</span>
|
||||
<span class="n">_flags</span><span class="p">[</span><span class="s2">"errors"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Prototype </span><span class="si">{protkey}</span><span class="s2"> has no `typeclass` defined anywhere in its parent</span><span class="se">\n</span><span class="s2"> "</span>
|
||||
<span class="s2">"chain. Add `typeclass`, or a `prototype_parent` pointing to a "</span>
|
||||
<span class="s2">"prototype with a typeclass."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span><span class="p">)</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"Prototype </span><span class="si">{protkey}</span><span class="s2"> has no `typeclass` defined anywhere in its parent</span><span class="se">\n</span><span class="s2"> "</span>
|
||||
<span class="s2">"chain. Add `typeclass`, or a `prototype_parent` pointing to a "</span>
|
||||
<span class="s2">"prototype with a typeclass."</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">protkey</span><span class="o">=</span><span class="n">protkey</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">_flags</span><span class="p">[</span><span class="s2">"depth"</span><span class="p">]</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
|
|
@ -943,8 +966,9 @@
|
|||
<span class="n">prototype</span><span class="p">[</span><span class="s2">"prototype_locks"</span><span class="p">]</span> <span class="o">=</span> <span class="n">prototype_locks</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="protfunc_parser"><a class="viewcode-back" href="../../../api/evennia.prototypes.prototypes.html#evennia.prototypes.prototypes.protfunc_parser">[docs]</a><span class="k">def</span> <span class="nf">protfunc_parser</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">available_functions</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">testing</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">stacktrace</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">caller</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="protfunc_parser"><a class="viewcode-back" href="../../../api/evennia.prototypes.prototypes.html#evennia.prototypes.prototypes.protfunc_parser">[docs]</a><span class="k">def</span> <span class="nf">protfunc_parser</span><span class="p">(</span>
|
||||
<span class="n">value</span><span class="p">,</span> <span class="n">available_functions</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">testing</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">stacktrace</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Parse a prototype value string for a protfunc and process it.</span>
|
||||
|
||||
|
|
@ -1171,8 +1195,9 @@
|
|||
<span class="n">stype</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">is_iter</span><span class="p">(</span><span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">stype</span> <span class="o">==</span> <span class="nb">dict</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">{</span><span class="n">value_to_obj_or_any</span><span class="p">(</span><span class="n">key</span><span class="p">):</span> <span class="n">value_to_obj_or_any</span><span class="p">(</span><span class="n">val</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
|
||||
<span class="k">return</span> <span class="p">{</span>
|
||||
<span class="n">value_to_obj_or_any</span><span class="p">(</span><span class="n">key</span><span class="p">):</span> <span class="n">value_to_obj_or_any</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="p">}</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">stype</span><span class="p">([</span><span class="n">value_to_obj_or_any</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="n">dbid_to_obj</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">ObjectDB</span><span class="p">)</span></div>
|
||||
|
|
|
|||
|
|
@ -196,8 +196,13 @@
|
|||
|
||||
|
||||
<span class="n">_CREATE_OBJECT_KWARGS</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"key"</span><span class="p">,</span> <span class="s2">"location"</span><span class="p">,</span> <span class="s2">"home"</span><span class="p">,</span> <span class="s2">"destination"</span><span class="p">)</span>
|
||||
<span class="n">_PROTOTYPE_META_NAMES</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"prototype_key"</span><span class="p">,</span> <span class="s2">"prototype_desc"</span><span class="p">,</span> <span class="s2">"prototype_tags"</span><span class="p">,</span>
|
||||
<span class="s2">"prototype_locks"</span><span class="p">,</span> <span class="s2">"prototype_parent"</span><span class="p">)</span>
|
||||
<span class="n">_PROTOTYPE_META_NAMES</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"prototype_key"</span><span class="p">,</span>
|
||||
<span class="s2">"prototype_desc"</span><span class="p">,</span>
|
||||
<span class="s2">"prototype_tags"</span><span class="p">,</span>
|
||||
<span class="s2">"prototype_locks"</span><span class="p">,</span>
|
||||
<span class="s2">"prototype_parent"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">_PROTOTYPE_ROOT_NAMES</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"typeclass"</span><span class="p">,</span>
|
||||
<span class="s2">"key"</span><span class="p">,</span>
|
||||
|
|
@ -277,9 +282,7 @@
|
|||
<span class="n">parent_prototype</span> <span class="o">=</span> <span class="n">protparents</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">prototype</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="p">{})</span>
|
||||
|
||||
<span class="c1"># Build the prot dictionary in reverse order, overloading</span>
|
||||
<span class="n">new_prot</span> <span class="o">=</span> <span class="n">_get_prototype</span><span class="p">(</span>
|
||||
<span class="n">parent_prototype</span><span class="p">,</span> <span class="n">protparents</span><span class="p">,</span> <span class="n">_workprot</span><span class="o">=</span><span class="n">_workprot</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">new_prot</span> <span class="o">=</span> <span class="n">_get_prototype</span><span class="p">(</span><span class="n">parent_prototype</span><span class="p">,</span> <span class="n">protparents</span><span class="p">,</span> <span class="n">_workprot</span><span class="o">=</span><span class="n">_workprot</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># attrs, tags have internal structure that should be inherited separately</span>
|
||||
<span class="n">new_prot</span><span class="p">[</span><span class="s2">"attrs"</span><span class="p">]</span> <span class="o">=</span> <span class="n">_inherit_attrs</span><span class="p">(</span>
|
||||
|
|
@ -318,8 +321,9 @@
|
|||
|
||||
<span class="k">if</span> <span class="n">prototype</span><span class="p">:</span>
|
||||
<span class="n">prototype</span> <span class="o">=</span> <span class="n">protlib</span><span class="o">.</span><span class="n">homogenize_prototype</span><span class="p">(</span><span class="n">prototype</span><span class="p">)</span>
|
||||
<span class="n">protparents</span> <span class="o">=</span> <span class="p">{</span><span class="n">prot</span><span class="p">[</span><span class="s2">"prototype_key"</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span> <span class="n">prot</span>
|
||||
<span class="k">for</span> <span class="n">prot</span> <span class="ow">in</span> <span class="n">protlib</span><span class="o">.</span><span class="n">search_prototype</span><span class="p">(</span><span class="n">no_db</span><span class="o">=</span><span class="n">no_db</span><span class="p">)}</span>
|
||||
<span class="n">protparents</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">prot</span><span class="p">[</span><span class="s2">"prototype_key"</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span> <span class="n">prot</span> <span class="k">for</span> <span class="n">prot</span> <span class="ow">in</span> <span class="n">protlib</span><span class="o">.</span><span class="n">search_prototype</span><span class="p">(</span><span class="n">no_db</span><span class="o">=</span><span class="n">no_db</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">protlib</span><span class="o">.</span><span class="n">validate_prototype</span><span class="p">(</span>
|
||||
<span class="n">prototype</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">protparents</span><span class="p">,</span> <span class="n">is_prototype_base</span><span class="o">=</span><span class="n">validate</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="n">validate</span>
|
||||
<span class="p">)</span>
|
||||
|
|
@ -384,7 +388,7 @@
|
|||
<span class="n">prot</span><span class="p">[</span><span class="s2">"aliases"</span><span class="p">]</span> <span class="o">=</span> <span class="n">aliases</span>
|
||||
<span class="n">tags</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span>
|
||||
<span class="p">[(</span><span class="n">tag</span><span class="o">.</span><span class="n">db_key</span><span class="p">,</span> <span class="n">tag</span><span class="o">.</span><span class="n">db_category</span><span class="p">,</span> <span class="n">tag</span><span class="o">.</span><span class="n">db_data</span><span class="p">)</span> <span class="k">for</span> <span class="n">tag</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">return_objs</span><span class="o">=</span><span class="kc">True</span><span class="p">)],</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">tup</span><span class="p">:</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">tup</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="n">tup</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span><span class="p">,</span> <span class="n">tup</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span><span class="p">)</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">tup</span><span class="p">:</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">tup</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="n">tup</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span> <span class="n">tup</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">tags</span><span class="p">:</span>
|
||||
<span class="n">prot</span><span class="p">[</span><span class="s2">"tags"</span><span class="p">]</span> <span class="o">=</span> <span class="n">tags</span>
|
||||
|
|
@ -393,7 +397,7 @@
|
|||
<span class="p">(</span><span class="n">attr</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">attr</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">attr</span><span class="o">.</span><span class="n">category</span><span class="p">,</span> <span class="s2">";"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">attr</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">all</span><span class="p">()))</span>
|
||||
<span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
||||
<span class="p">],</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">tup</span><span class="p">:</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">tup</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="n">tup</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span><span class="p">,</span> <span class="n">tup</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">''</span><span class="p">,</span> <span class="n">tup</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">tup</span><span class="p">:</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">tup</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="n">tup</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span> <span class="n">tup</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span> <span class="n">tup</span><span class="p">[</span><span class="mi">3</span><span class="p">]),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">attrs</span><span class="p">:</span>
|
||||
<span class="n">prot</span><span class="p">[</span><span class="s2">"attrs"</span><span class="p">]</span> <span class="o">=</span> <span class="n">attrs</span>
|
||||
|
|
@ -531,8 +535,10 @@
|
|||
<span class="n">out</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">_get_all_nested_diff_instructions</span><span class="p">(</span><span class="n">val</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Diff contains non-dicts that are not on the "</span>
|
||||
<span class="s2">"form (old, new, action_to_take): </span><span class="si">{diffpart}</span><span class="s2">"</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">diffpart</span><span class="p">)</span>
|
||||
<span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"Diff contains non-dicts that are not on the "</span>
|
||||
<span class="s2">"form (old, new, action_to_take): </span><span class="si">{diffpart}</span><span class="s2">"</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">diffpart</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">out</span>
|
||||
|
||||
|
|
@ -669,8 +675,9 @@
|
|||
<span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">line</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">texts</span> <span class="k">if</span> <span class="n">line</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="batch_update_objects_with_prototype"><a class="viewcode-back" href="../../../api/evennia.prototypes.spawner.html#evennia.prototypes.spawner.batch_update_objects_with_prototype">[docs]</a><span class="k">def</span> <span class="nf">batch_update_objects_with_prototype</span><span class="p">(</span><span class="n">prototype</span><span class="p">,</span> <span class="n">diff</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">objects</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">exact</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="batch_update_objects_with_prototype"><a class="viewcode-back" href="../../../api/evennia.prototypes.spawner.html#evennia.prototypes.spawner.batch_update_objects_with_prototype">[docs]</a><span class="k">def</span> <span class="nf">batch_update_objects_with_prototype</span><span class="p">(</span>
|
||||
<span class="n">prototype</span><span class="p">,</span> <span class="n">diff</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">objects</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">exact</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="kc">None</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Update existing objects with the latest version of the prototype.</span>
|
||||
|
||||
|
|
@ -983,27 +990,32 @@
|
|||
|
||||
<span class="n">val</span> <span class="o">=</span> <span class="n">prot</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"location"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">create_kwargs</span><span class="p">[</span><span class="s2">"db_location"</span><span class="p">]</span> <span class="o">=</span> <span class="n">init_spawn_value</span><span class="p">(</span>
|
||||
<span class="n">val</span><span class="p">,</span> <span class="n">value_to_obj</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span><span class="p">)</span>
|
||||
<span class="n">val</span><span class="p">,</span> <span class="n">value_to_obj</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">val</span> <span class="o">=</span> <span class="n">prot</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"home"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">val</span><span class="p">:</span>
|
||||
<span class="n">create_kwargs</span><span class="p">[</span><span class="s2">"db_home"</span><span class="p">]</span> <span class="o">=</span> <span class="n">init_spawn_value</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">value_to_obj</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span><span class="p">)</span>
|
||||
<span class="n">create_kwargs</span><span class="p">[</span><span class="s2">"db_home"</span><span class="p">]</span> <span class="o">=</span> <span class="n">init_spawn_value</span><span class="p">(</span>
|
||||
<span class="n">val</span><span class="p">,</span> <span class="n">value_to_obj</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">create_kwargs</span><span class="p">[</span><span class="s2">"db_home"</span><span class="p">]</span> <span class="o">=</span> <span class="n">init_spawn_value</span><span class="p">(</span>
|
||||
<span class="n">settings</span><span class="o">.</span><span class="n">DEFAULT_HOME</span><span class="p">,</span> <span class="n">value_to_obj</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span><span class="p">)</span>
|
||||
<span class="n">settings</span><span class="o">.</span><span class="n">DEFAULT_HOME</span><span class="p">,</span> <span class="n">value_to_obj</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span>
|
||||
<span class="c1"># settings.DEFAULT_HOME not existing is common for unittests</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
<span class="n">val</span> <span class="o">=</span> <span class="n">prot</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"destination"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">create_kwargs</span><span class="p">[</span><span class="s2">"db_destination"</span><span class="p">]</span> <span class="o">=</span> <span class="n">init_spawn_value</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">value_to_obj</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span><span class="p">)</span>
|
||||
<span class="n">create_kwargs</span><span class="p">[</span><span class="s2">"db_destination"</span><span class="p">]</span> <span class="o">=</span> <span class="n">init_spawn_value</span><span class="p">(</span>
|
||||
<span class="n">val</span><span class="p">,</span> <span class="n">value_to_obj</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">val</span> <span class="o">=</span> <span class="n">prot</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"typeclass"</span><span class="p">,</span> <span class="n">settings</span><span class="o">.</span><span class="n">BASE_OBJECT_TYPECLASS</span><span class="p">)</span>
|
||||
<span class="n">create_kwargs</span><span class="p">[</span><span class="s2">"db_typeclass_path"</span><span class="p">]</span> <span class="o">=</span> <span class="n">init_spawn_value</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span><span class="p">)</span>
|
||||
<span class="n">create_kwargs</span><span class="p">[</span><span class="s2">"db_typeclass_path"</span><span class="p">]</span> <span class="o">=</span> <span class="n">init_spawn_value</span><span class="p">(</span>
|
||||
<span class="n">val</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># extract calls to handlers</span>
|
||||
<span class="n">val</span> <span class="o">=</span> <span class="n">prot</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"permissions"</span><span class="p">,</span> <span class="p">[])</span>
|
||||
|
|
@ -1016,8 +1028,13 @@
|
|||
<span class="n">val</span> <span class="o">=</span> <span class="n">prot</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"tags"</span><span class="p">,</span> <span class="p">[])</span>
|
||||
<span class="n">tags</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="p">(</span><span class="n">tag</span><span class="p">,</span> <span class="n">category</span><span class="p">,</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span> <span class="ow">in</span> <span class="n">val</span><span class="p">:</span>
|
||||
<span class="n">tags</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">init_spawn_value</span><span class="p">(</span><span class="n">tag</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span><span class="p">),</span>
|
||||
<span class="n">category</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">data</span> <span class="k">else</span> <span class="kc">None</span><span class="p">))</span>
|
||||
<span class="n">tags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="p">(</span>
|
||||
<span class="n">init_spawn_value</span><span class="p">(</span><span class="n">tag</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span><span class="p">),</span>
|
||||
<span class="n">category</span><span class="p">,</span>
|
||||
<span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">data</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">prototype_key</span> <span class="o">=</span> <span class="n">prototype</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"prototype_key"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">prototype_key</span><span class="p">:</span>
|
||||
|
|
@ -1029,8 +1046,10 @@
|
|||
|
||||
<span class="c1"># extract ndb assignments</span>
|
||||
<span class="n">nattributes</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
||||
<span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"_"</span><span class="p">,</span> <span class="mi">1</span><span class="p">)[</span><span class="mi">1</span><span class="p">],</span> <span class="n">init_spawn_value</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">value_to_obj</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span><span class="p">))</span>
|
||||
<span class="p">(</span>
|
||||
<span class="n">key</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"_"</span><span class="p">,</span> <span class="mi">1</span><span class="p">)[</span><span class="mi">1</span><span class="p">],</span>
|
||||
<span class="n">init_spawn_value</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="n">value_to_obj</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">prot</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">key</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"ndb_"</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
|
@ -1040,8 +1059,13 @@
|
|||
<span class="n">attributes</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="p">(</span><span class="n">attrname</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="o">*</span><span class="n">rest</span><span class="p">)</span> <span class="ow">in</span> <span class="n">val</span><span class="p">:</span>
|
||||
<span class="n">attributes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="p">(</span><span class="n">attrname</span><span class="p">,</span> <span class="n">init_spawn_value</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span><span class="p">),</span>
|
||||
<span class="n">rest</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">rest</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> <span class="n">rest</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">rest</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="kc">None</span><span class="p">))</span>
|
||||
<span class="p">(</span>
|
||||
<span class="n">attrname</span><span class="p">,</span>
|
||||
<span class="n">init_spawn_value</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span><span class="p">),</span>
|
||||
<span class="n">rest</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">rest</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">rest</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">rest</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">simple_attributes</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="p">(</span>
|
||||
|
|
@ -1052,8 +1076,14 @@
|
|||
<span class="k">continue</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">simple_attributes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">init_spawn_value</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">value_to_obj_or_any</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span><span class="p">),</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="p">(</span>
|
||||
<span class="n">key</span><span class="p">,</span>
|
||||
<span class="n">init_spawn_value</span><span class="p">(</span>
|
||||
<span class="n">value</span><span class="p">,</span> <span class="n">value_to_obj_or_any</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">prototype</span><span class="o">=</span><span class="n">prototype</span>
|
||||
<span class="p">),</span>
|
||||
<span class="kc">None</span><span class="p">,</span>
|
||||
<span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">attributes</span> <span class="o">=</span> <span class="n">attributes</span> <span class="o">+</span> <span class="n">simple_attributes</span>
|
||||
|
|
|
|||
|
|
@ -199,8 +199,6 @@
|
|||
<span class="c1"># deprecated ...</span>
|
||||
<span class="k">pass</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">)):</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.objects.models</span> <span class="kn">import</span> <span class="n">ObjectDB</span>
|
||||
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">to_str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">isdigit</span><span class="p">()</span> <span class="ow">or</span> <span class="n">value</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"#"</span><span class="p">):</span>
|
||||
<span class="n">dbid</span> <span class="o">=</span> <span class="n">dbref</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">reqhash</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -150,8 +150,8 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="c1"># if this an Attribute with a category we should differentiate</span>
|
||||
<span class="n">fieldname</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_attr_category_fieldname</span><span class="p">(</span>
|
||||
<span class="n">fieldname</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">db_category</span>
|
||||
<span class="k">if</span> <span class="n">fieldname</span> <span class="o">==</span> <span class="s2">"db_value"</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"db_category"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="n">fieldname</span><span class="p">,</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">db_category</span> <span class="k">if</span> <span class="n">fieldname</span> <span class="o">==</span> <span class="s2">"db_value"</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"db_category"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">to_delete</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
|
@ -166,8 +166,7 @@
|
|||
<span class="k">for</span> <span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">fieldname</span><span class="p">,</span> <span class="n">idstring</span><span class="p">)</span> <span class="ow">in</span> <span class="n">to_delete</span><span class="p">:</span>
|
||||
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">monitors</span><span class="p">[</span><span class="n">obj</span><span class="p">][</span><span class="n">fieldname</span><span class="p">][</span><span class="n">idstring</span><span class="p">]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="MonitorHandler.add"><a class="viewcode-back" href="../../../api/evennia.scripts.monitorhandler.html#evennia.scripts.monitorhandler.MonitorHandler.add">[docs]</a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">fieldname</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span> <span class="n">idstring</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="MonitorHandler.add"><a class="viewcode-back" href="../../../api/evennia.scripts.monitorhandler.html#evennia.scripts.monitorhandler.MonitorHandler.add">[docs]</a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">fieldname</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span> <span class="n">idstring</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Add monitoring to a given field or Attribute. A field must</span>
|
||||
<span class="sd"> be specified with the full db_* name or it will be assumed</span>
|
||||
|
|
|
|||
|
|
@ -91,10 +91,12 @@
|
|||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">next_repeat</span> <span class="o">=</span> <span class="s2">"?"</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> '</span><span class="si">{key}</span><span class="s2">' (</span><span class="si">{next_repeat}</span><span class="s2">/</span><span class="si">{interval}</span><span class="s2">, </span><span class="si">{repeats}</span><span class="s2"> repeats): </span><span class="si">{desc}</span><span class="s2">"</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="n">script</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">next_repeat</span><span class="o">=</span><span class="n">next_repeat</span><span class="p">,</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="n">script</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
||||
<span class="n">next_repeat</span><span class="o">=</span><span class="n">next_repeat</span><span class="p">,</span>
|
||||
<span class="n">interval</span><span class="o">=</span><span class="n">interval</span><span class="p">,</span>
|
||||
<span class="n">repeats</span><span class="o">=</span><span class="n">repeats</span><span class="p">,</span>
|
||||
<span class="n">desc</span><span class="o">=</span><span class="n">script</span><span class="o">.</span><span class="n">desc</span><span class="p">)</span>
|
||||
<span class="n">desc</span><span class="o">=</span><span class="n">script</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">string</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
|
||||
<div class="viewcode-block" id="ScriptHandler.add"><a class="viewcode-back" href="../../../api/evennia.scripts.scripthandler.html#evennia.scripts.scripthandler.ScriptHandler.add">[docs]</a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">scriptclass</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">autostart</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -515,6 +515,14 @@
|
|||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">at_init</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called when the Script is cached in the idmapper. This is usually more reliable</span>
|
||||
<span class="sd"> than overriding `__init__` since the latter can be called at unexpected times.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">at_script_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Should be overridden in child.</span>
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@
|
|||
<span class="s2">on-demand rather than using a ticker.</span>
|
||||
<span class="s2">"""</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Ticker"><a class="viewcode-back" href="../../../api/evennia.scripts.tickerhandler.html#evennia.scripts.tickerhandler.Ticker">[docs]</a><span class="k">class</span> <span class="nc">Ticker</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Represents a repeatedly running task that calls</span>
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@
|
|||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">os</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="check_errors"><a class="viewcode-back" href="../../../api/evennia.server.deprecations.html#evennia.server.deprecations.check_errors">[docs]</a><span class="k">def</span> <span class="nf">check_errors</span><span class="p">(</span><span class="n">settings</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Check for deprecations that are critical errors and should stop</span>
|
||||
|
|
@ -103,19 +104,26 @@
|
|||
<span class="p">)</span>
|
||||
<span class="n">depstring</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"settings.</span><span class="si">{}</span><span class="s2"> was renamed to </span><span class="si">{}</span><span class="s2">. Update your settings file (the FuncParser "</span>
|
||||
<span class="s2">"replaces and generalizes that which inlinefuncs used to do)."</span><span class="p">)</span>
|
||||
<span class="s2">"replaces and generalizes that which inlinefuncs used to do)."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">settings</span><span class="p">,</span> <span class="s2">"INLINEFUNC_ENABLED"</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">(</span><span class="n">depstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="s2">"settings.INLINEFUNC_ENABLED"</span><span class="p">,</span> <span class="s2">"FUNCPARSER_PARSE_OUTGOING_MESSAGES_ENABLED"</span><span class="p">))</span>
|
||||
<span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">(</span>
|
||||
<span class="n">depstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="s2">"settings.INLINEFUNC_ENABLED"</span><span class="p">,</span> <span class="s2">"FUNCPARSER_PARSE_OUTGOING_MESSAGES_ENABLED"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">settings</span><span class="p">,</span> <span class="s2">"INLINEFUNC_STACK_MAXSIZE"</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">(</span><span class="n">depstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="s2">"settings.INLINEFUNC_STACK_MAXSIZE"</span><span class="p">,</span> <span class="s2">"FUNCPARSER_MAX_NESTING"</span><span class="p">))</span>
|
||||
<span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">(</span>
|
||||
<span class="n">depstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">"settings.INLINEFUNC_STACK_MAXSIZE"</span><span class="p">,</span> <span class="s2">"FUNCPARSER_MAX_NESTING"</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">settings</span><span class="p">,</span> <span class="s2">"INLINEFUNC_MODULES"</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">(</span><span class="n">depstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="s2">"settings.INLINEFUNC_MODULES"</span><span class="p">,</span> <span class="s2">"FUNCPARSER_OUTGOING_MESSAGES_MODULES"</span><span class="p">))</span>
|
||||
<span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">(</span>
|
||||
<span class="n">depstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">"settings.INLINEFUNC_MODULES"</span><span class="p">,</span> <span class="s2">"FUNCPARSER_OUTGOING_MESSAGES_MODULES"</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">settings</span><span class="p">,</span> <span class="s2">"PROTFUNC_MODULES"</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">(</span><span class="n">depstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="s2">"settings.PROTFUNC_MODULES"</span><span class="p">,</span> <span class="s2">"FUNCPARSER_PROTOTYPE_VALUE_MODULES"</span><span class="p">))</span>
|
||||
<span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">(</span>
|
||||
<span class="n">depstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">"settings.PROTFUNC_MODULES"</span><span class="p">,</span> <span class="s2">"FUNCPARSER_PROTOTYPE_VALUE_MODULES"</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">gametime_deprecation</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"The settings TIME_SEC_PER_MIN, TIME_MIN_PER_HOUR,"</span>
|
||||
|
|
@ -163,7 +171,8 @@
|
|||
<span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">(</span>
|
||||
<span class="s2">"settings.CHANNEL_HANDLER_CLASS and CHANNEL COMMAND_CLASS are "</span>
|
||||
<span class="s2">"unused and should be removed. The ChannelHandler is no more; "</span>
|
||||
<span class="s2">"channels are now handled by aliasing the default 'channel' command."</span><span class="p">)</span>
|
||||
<span class="s2">"channels are now handled by aliasing the default 'channel' command."</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">template_overrides_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">GAME_DIR</span><span class="p">,</span> <span class="s2">"web"</span><span class="p">,</span> <span class="s2">"template_overrides"</span><span class="p">)</span>
|
||||
<span class="n">static_overrides_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">GAME_DIR</span><span class="p">,</span> <span class="s2">"web"</span><span class="p">,</span> <span class="s2">"static_overrides"</span><span class="p">)</span>
|
||||
|
|
@ -193,8 +202,10 @@
|
|||
<span class="k">if</span> <span class="n">settings</span><span class="o">.</span><span class="n">ALLOWED_HOSTS</span> <span class="o">==</span> <span class="p">[</span><span class="s2">"*"</span><span class="p">]:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">" [Devel: settings.ALLOWED_HOSTS set to '*' (all). Limit in production.]"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">settings</span><span class="o">.</span><span class="n">SERVER_HOSTNAME</span> <span class="o">==</span> <span class="s2">"localhost"</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">" [Devel: settings.SERVER_HOSTNAME is set to 'localhost'. "</span>
|
||||
<span class="s2">"Update to the actual hostname in production.]"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="s2">" [Devel: settings.SERVER_HOSTNAME is set to 'localhost'. "</span>
|
||||
<span class="s2">"Update to the actual hostname in production.]"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">dbentry</span> <span class="ow">in</span> <span class="n">settings</span><span class="o">.</span><span class="n">DATABASES</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="s2">"psycopg"</span> <span class="ow">in</span> <span class="n">dbentry</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"ENGINE"</span><span class="p">,</span> <span class="s2">""</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -1473,6 +1473,7 @@
|
|||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">username</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">password</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">password</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.models</span> <span class="kn">import</span> <span class="n">AccountDB</span>
|
||||
|
||||
<span class="n">superuser</span> <span class="o">=</span> <span class="n">AccountDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">create_superuser</span><span class="p">(</span><span class="n">username</span><span class="p">,</span> <span class="n">email</span><span class="p">,</span> <span class="n">password</span><span class="p">)</span>
|
||||
<span class="n">superuser</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -1989,7 +1990,7 @@
|
|||
<span class="k">return</span> <span class="kc">False</span>
|
||||
<span class="n">cmdpath</span> <span class="o">=</span> <span class="n">custom_commands</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">option</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">cmdpath</span><span class="p">:</span>
|
||||
<span class="n">modpath</span><span class="p">,</span> <span class="o">*</span><span class="n">cmdname</span> <span class="o">=</span> <span class="n">cmdpath</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s1">'.'</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">modpath</span><span class="p">,</span> <span class="o">*</span><span class="n">cmdname</span> <span class="o">=</span> <span class="n">cmdpath</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s2">"."</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">cmdname</span><span class="p">:</span>
|
||||
<span class="n">cmdname</span> <span class="o">=</span> <span class="n">cmdname</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">mod</span> <span class="o">=</span> <span class="n">importlib</span><span class="o">.</span><span class="n">import_module</span><span class="p">(</span><span class="n">modpath</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -67,14 +67,16 @@
|
|||
<span class="s2"> """</span>
|
||||
|
||||
|
||||
<span class="n">LIMBO_DESC</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="s2">Welcome to your new |wEvennia|n-based game! Visit https://www.evennia.com if you need</span>
|
||||
<span class="s2">help, want to contribute, report issues or just join the community.</span>
|
||||
<span class="n">LIMBO_DESC</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">Welcome to your new |wEvennia|n-based game! Visit https://www.evennia.com if you need</span>
|
||||
<span class="sd">help, want to contribute, report issues or just join the community.</span>
|
||||
|
||||
<span class="s2">As a privileged user, write |wbatchcommand tutorial_world.build|n to build</span>
|
||||
<span class="s2">tutorial content. Once built, try |wintro|n for starting help and |wtutorial|n to</span>
|
||||
<span class="s2">play the demo game.</span>
|
||||
<span class="s2">"""</span><span class="p">)</span>
|
||||
<span class="sd">As a privileged user, write |wbatchcommand tutorial_world.build|n to build</span>
|
||||
<span class="sd">tutorial content. Once built, try |wintro|n for starting help and |wtutorial|n to</span>
|
||||
<span class="sd">play the demo game.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
|
||||
<span class="n">WARNING_POSTGRESQL_FIX</span> <span class="o">=</span> <span class="s2">"""</span>
|
||||
|
|
@ -141,7 +143,8 @@
|
|||
<span class="n">superuser_character</span> <span class="o">=</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span>
|
||||
<span class="n">superuser_character</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_object</span><span class="p">(</span>
|
||||
<span class="n">character_typeclass</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="n">superuser</span><span class="o">.</span><span class="n">username</span><span class="p">,</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">character_typeclass</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="n">superuser</span><span class="o">.</span><span class="n">username</span><span class="p">,</span> <span class="n">nohome</span><span class="o">=</span><span class="kc">True</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">superuser_character</span><span class="o">.</span><span class="n">db_typeclass_path</span> <span class="o">=</span> <span class="n">character_typeclass</span>
|
||||
<span class="n">superuser_character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"This is User #1."</span><span class="p">)</span>
|
||||
|
|
@ -177,6 +180,7 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">superuser_character</span><span class="o">.</span><span class="n">home</span><span class="p">:</span>
|
||||
<span class="n">superuser_character</span><span class="o">.</span><span class="n">home</span> <span class="o">=</span> <span class="n">limbo_obj</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="at_initial_setup"><a class="viewcode-back" href="../../../api/evennia.server.initial_setup.html#evennia.server.initial_setup.at_initial_setup">[docs]</a><span class="k">def</span> <span class="nf">at_initial_setup</span><span class="p">():</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Custom hook for users to overload some or all parts of the initial</span>
|
||||
|
|
@ -234,7 +238,7 @@
|
|||
<span class="sd"> the function will exit immediately.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">last_step</span> <span class="ow">in</span><span class="p">(</span><span class="s1">'done'</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">last_step</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"done"</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="c1"># this means we don't need to handle setup since</span>
|
||||
<span class="c1"># it already ran sucessfully once. -1 is the legacy</span>
|
||||
<span class="c1"># value for existing databases.</span>
|
||||
|
|
@ -242,15 +246,15 @@
|
|||
|
||||
<span class="c1"># setup sequence</span>
|
||||
<span class="n">setup_sequence</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'create_objects'</span><span class="p">:</span> <span class="n">create_objects</span><span class="p">,</span>
|
||||
<span class="s1">'at_initial_setup'</span><span class="p">:</span> <span class="n">at_initial_setup</span><span class="p">,</span>
|
||||
<span class="s1">'collectstatic'</span><span class="p">:</span> <span class="n">collectstatic</span><span class="p">,</span>
|
||||
<span class="s1">'done'</span><span class="p">:</span> <span class="n">reset_server</span><span class="p">,</span>
|
||||
<span class="s2">"create_objects"</span><span class="p">:</span> <span class="n">create_objects</span><span class="p">,</span>
|
||||
<span class="s2">"at_initial_setup"</span><span class="p">:</span> <span class="n">at_initial_setup</span><span class="p">,</span>
|
||||
<span class="s2">"collectstatic"</span><span class="p">:</span> <span class="n">collectstatic</span><span class="p">,</span>
|
||||
<span class="s2">"done"</span><span class="p">:</span> <span class="n">reset_server</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="c1"># determine the sequence so we can skip ahead</span>
|
||||
<span class="n">steps</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">setup_sequence</span><span class="p">)</span>
|
||||
<span class="n">steps</span> <span class="o">=</span> <span class="n">steps</span><span class="p">[</span><span class="n">steps</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">last_step</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">last_step</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="mi">0</span><span class="p">:]</span>
|
||||
<span class="n">steps</span> <span class="o">=</span> <span class="n">steps</span><span class="p">[</span><span class="n">steps</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">last_step</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">last_step</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="mi">0</span> <span class="p">:]</span>
|
||||
|
||||
<span class="c1"># step through queue from last completed function. Once completed,</span>
|
||||
<span class="c1"># the 'done' key should be set.</span>
|
||||
|
|
@ -263,7 +267,7 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># save the step</span>
|
||||
<span class="n">ServerConfig</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">conf</span><span class="p">(</span><span class="s2">"last_initial_setup_step"</span><span class="p">,</span> <span class="n">stepname</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">stepname</span> <span class="o">==</span> <span class="s1">'done'</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">stepname</span> <span class="o">==</span> <span class="s2">"done"</span><span class="p">:</span>
|
||||
<span class="c1"># always exit on 'done'</span>
|
||||
<span class="k">break</span></div>
|
||||
</pre></div>
|
||||
|
|
|
|||
|
|
@ -84,7 +84,6 @@
|
|||
<span class="n">_STRIP_MXP</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_NA</span><span class="p">(</span><span class="n">o</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"N/A"</span>
|
||||
|
||||
|
|
@ -137,9 +136,7 @@
|
|||
<span class="c1"># nick replacement</span>
|
||||
<span class="n">puppet</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">puppet</span>
|
||||
<span class="k">if</span> <span class="n">puppet</span><span class="p">:</span>
|
||||
<span class="n">txt</span> <span class="o">=</span> <span class="n">puppet</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">nickreplace</span><span class="p">(</span>
|
||||
<span class="n">txt</span><span class="p">,</span> <span class="n">categories</span><span class="o">=</span><span class="p">(</span><span class="s2">"inputline"</span><span class="p">),</span> <span class="n">include_account</span><span class="o">=</span><span class="kc">True</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">txt</span> <span class="o">=</span> <span class="n">puppet</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">nickreplace</span><span class="p">(</span><span class="n">txt</span><span class="p">,</span> <span class="n">categories</span><span class="o">=</span><span class="p">(</span><span class="s2">"inputline"</span><span class="p">),</span> <span class="n">include_account</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">txt</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">nickreplace</span><span class="p">(</span>
|
||||
<span class="n">txt</span><span class="p">,</span> <span class="n">categories</span><span class="o">=</span><span class="p">(</span><span class="s2">"inputline"</span><span class="p">),</span> <span class="n">include_account</span><span class="o">=</span><span class="kc">False</span>
|
||||
|
|
|
|||
|
|
@ -89,12 +89,12 @@
|
|||
<span class="n">AMP_MAXLEN</span> <span class="o">=</span> <span class="n">amp</span><span class="o">.</span><span class="n">MAX_VALUE_LENGTH</span> <span class="c1"># max allowed data length in AMP protocol (cannot be changed)</span>
|
||||
|
||||
<span class="c1"># amp internal</span>
|
||||
<span class="n">ASK</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">'_ask'</span>
|
||||
<span class="n">ANSWER</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">'_answer'</span>
|
||||
<span class="n">ERROR</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">'_error'</span>
|
||||
<span class="n">ERROR_CODE</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">'_error_code'</span>
|
||||
<span class="n">ERROR_DESCRIPTION</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">'_error_description'</span>
|
||||
<span class="n">UNKNOWN_ERROR_CODE</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">'UNKNOWN'</span>
|
||||
<span class="n">ASK</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"_ask"</span>
|
||||
<span class="n">ANSWER</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"_answer"</span>
|
||||
<span class="n">ERROR</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"_error"</span>
|
||||
<span class="n">ERROR_CODE</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"_error_code"</span>
|
||||
<span class="n">ERROR_DESCRIPTION</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"_error_description"</span>
|
||||
<span class="n">UNKNOWN_ERROR_CODE</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"UNKNOWN"</span>
|
||||
|
||||
<span class="c1"># buffers</span>
|
||||
<span class="n">_SENDBATCH</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
|
||||
|
|
@ -364,6 +364,7 @@
|
|||
<span class="sd"> add a specific log of the problem on the erroring side.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">formatAnswer</span><span class="p">(</span><span class="n">answerBox</span><span class="p">):</span>
|
||||
<span class="n">answerBox</span><span class="p">[</span><span class="n">ANSWER</span><span class="p">]</span> <span class="o">=</span> <span class="n">box</span><span class="p">[</span><span class="n">ASK</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">answerBox</span>
|
||||
|
|
@ -392,6 +393,7 @@
|
|||
<span class="n">errorBox</span><span class="p">[</span><span class="n">ERROR_DESCRIPTION</span><span class="p">]</span> <span class="o">=</span> <span class="n">desc</span>
|
||||
<span class="n">errorBox</span><span class="p">[</span><span class="n">ERROR_CODE</span><span class="p">]</span> <span class="o">=</span> <span class="n">code</span>
|
||||
<span class="k">return</span> <span class="n">errorBox</span>
|
||||
|
||||
<span class="n">deferred</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dispatchCommand</span><span class="p">(</span><span class="n">box</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">ASK</span> <span class="ow">in</span> <span class="n">box</span><span class="p">:</span>
|
||||
<span class="n">deferred</span><span class="o">.</span><span class="n">addCallbacks</span><span class="p">(</span><span class="n">formatAnswer</span><span class="p">,</span> <span class="n">formatError</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -286,7 +286,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">sendLine</span><span class="p">(</span><span class="s2">"NAMES </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="IRCBot.irc_RPL_NAMREPLY"><a class="viewcode-back" href="../../../../api/evennia.server.portal.irc.html#evennia.server.portal.irc.IRCBot.irc_RPL_NAMREPLY">[docs]</a> <span class="k">def</span> <span class="nf">irc_RPL_NAMREPLY</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">params</span><span class="p">):</span>
|
||||
<span class="sd">""""Handles IRC NAME request returns (nicklist)"""</span>
|
||||
<span class="sd">""" "Handles IRC NAME request returns (nicklist)"""</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">params</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">channel</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
|
||||
<span class="k">return</span>
|
||||
|
|
|
|||
|
|
@ -400,8 +400,7 @@
|
|||
<span class="k">for</span> <span class="n">port</span> <span class="ow">in</span> <span class="n">SSH_PORTS</span><span class="p">:</span>
|
||||
<span class="n">pstring</span> <span class="o">=</span> <span class="s2">"</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">ifacestr</span><span class="p">,</span> <span class="n">port</span><span class="p">)</span>
|
||||
<span class="n">factory</span> <span class="o">=</span> <span class="n">ssh</span><span class="o">.</span><span class="n">makeFactory</span><span class="p">(</span>
|
||||
<span class="p">{</span><span class="s2">"protocolFactory"</span><span class="p">:</span> <span class="n">_ssh_protocol</span><span class="p">,</span>
|
||||
<span class="s2">"protocolArgs"</span><span class="p">:</span> <span class="p">(),</span> <span class="s2">"sessions"</span><span class="p">:</span> <span class="n">PORTAL_SESSIONS</span><span class="p">}</span>
|
||||
<span class="p">{</span><span class="s2">"protocolFactory"</span><span class="p">:</span> <span class="n">_ssh_protocol</span><span class="p">,</span> <span class="s2">"protocolArgs"</span><span class="p">:</span> <span class="p">(),</span> <span class="s2">"sessions"</span><span class="p">:</span> <span class="n">PORTAL_SESSIONS</span><span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">factory</span><span class="o">.</span><span class="n">noisy</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">ssh_service</span> <span class="o">=</span> <span class="n">internet</span><span class="o">.</span><span class="n">TCPServer</span><span class="p">(</span><span class="n">port</span><span class="p">,</span> <span class="n">factory</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="n">interface</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -79,8 +79,9 @@
|
|||
<span class="c1"># Portal-SessionHandler class</span>
|
||||
<span class="c1"># -------------------------------------------------------------</span>
|
||||
|
||||
<span class="n">DOS_PROTECTION_MSG</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">{servername}</span><span class="s2"> DoS protection is active."</span>
|
||||
<span class="s2">"You are queued to connect in </span><span class="si">{num}</span><span class="s2"> seconds ..."</span><span class="p">)</span>
|
||||
<span class="n">DOS_PROTECTION_MSG</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="si">{servername}</span><span class="s2"> DoS protection is active."</span> <span class="s2">"You are queued to connect in </span><span class="si">{num}</span><span class="s2"> seconds ..."</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="PortalSessionHandler"><a class="viewcode-back" href="../../../../api/evennia.server.portal.portalsessionhandler.html#evennia.server.portal.portalsessionhandler.PortalSessionHandler">[docs]</a><span class="k">class</span> <span class="nc">PortalSessionHandler</span><span class="p">(</span><span class="n">SessionHandler</span><span class="p">):</span>
|
||||
|
|
@ -159,9 +160,12 @@
|
|||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">_CONNECTION_QUEUE</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="n">session</span><span class="o">.</span><span class="n">data_out</span><span class="p">(</span>
|
||||
<span class="n">text</span><span class="o">=</span><span class="p">(</span>
|
||||
<span class="p">(</span><span class="n">DOS_PROTECTION_MSG</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">servername</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">SERVERNAME</span><span class="p">,</span>
|
||||
<span class="n">num</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">_CONNECTION_QUEUE</span><span class="p">)</span> <span class="o">*</span> <span class="n">_MIN_TIME_BETWEEN_CONNECTS</span><span class="p">),),</span>
|
||||
<span class="p">(</span>
|
||||
<span class="n">DOS_PROTECTION_MSG</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">servername</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">SERVERNAME</span><span class="p">,</span>
|
||||
<span class="n">num</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">_CONNECTION_QUEUE</span><span class="p">)</span> <span class="o">*</span> <span class="n">_MIN_TIME_BETWEEN_CONNECTS</span><span class="p">,</span>
|
||||
<span class="p">),</span>
|
||||
<span class="p">),</span>
|
||||
<span class="p">{},</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
|
@ -484,8 +488,8 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">portal</span><span class="o">.</span><span class="n">amp_protocol</span><span class="o">.</span><span class="n">send_MsgPortal2Server</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># eventual local echo (text input only)</span>
|
||||
<span class="k">if</span> <span class="s1">'text'</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="ow">and</span> <span class="n">session</span><span class="o">.</span><span class="n">protocol_flags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'LOCALECHO'</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data_out</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'text'</span><span class="p">])</span></div>
|
||||
<span class="k">if</span> <span class="s2">"text"</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="ow">and</span> <span class="n">session</span><span class="o">.</span><span class="n">protocol_flags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"LOCALECHO"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data_out</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="n">kwargs</span><span class="p">[</span><span class="s2">"text"</span><span class="p">])</span></div>
|
||||
|
||||
<div class="viewcode-block" id="PortalSessionHandler.data_out"><a class="viewcode-back" href="../../../../api/evennia.server.portal.portalsessionhandler.html#evennia.server.portal.portalsessionhandler.PortalSessionHandler.data_out">[docs]</a> <span class="k">def</span> <span class="nf">data_out</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
|
|||
|
|
@ -122,6 +122,7 @@
|
|||
<span class="sd"> This is only to name this better in logs</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">noisy</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<div class="viewcode-block" id="SSHServerFactory.logPrefix"><a class="viewcode-back" href="../../../../api/evennia.server.portal.ssh.html#evennia.server.portal.ssh.SSHServerFactory.logPrefix">[docs]</a> <span class="k">def</span> <span class="nf">logPrefix</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -74,8 +74,8 @@
|
|||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">to_bytes</span><span class="p">,</span> <span class="n">class_from_module</span>
|
||||
|
||||
<span class="n">_RE_N</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"\|n$"</span><span class="p">)</span>
|
||||
<span class="n">_RE_LEND</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">br</span><span class="s2">"\n$|\r$|\r\n$|\r\x00$|"</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">MULTILINE</span><span class="p">)</span>
|
||||
<span class="n">_RE_LINEBREAK</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">br</span><span class="s2">"\n\r|\r\n|\n|\r"</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">DOTALL</span> <span class="o">+</span> <span class="n">re</span><span class="o">.</span><span class="n">MULTILINE</span><span class="p">)</span>
|
||||
<span class="n">_RE_LEND</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">rb</span><span class="s2">"\n$|\r$|\r\n$|\r\x00$|"</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">MULTILINE</span><span class="p">)</span>
|
||||
<span class="n">_RE_LINEBREAK</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">rb</span><span class="s2">"\n\r|\r\n|\n|\r"</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">DOTALL</span> <span class="o">+</span> <span class="n">re</span><span class="o">.</span><span class="n">MULTILINE</span><span class="p">)</span>
|
||||
<span class="n">_RE_SCREENREADER_REGEX</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
|
||||
<span class="sa">r</span><span class="s2">"</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">settings</span><span class="o">.</span><span class="n">SCREENREADER_REGEX_STRIP</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">DOTALL</span> <span class="o">+</span> <span class="n">re</span><span class="o">.</span><span class="n">MULTILINE</span>
|
||||
<span class="p">)</span>
|
||||
|
|
@ -105,6 +105,7 @@
|
|||
<span class="sd"> This exists only to name this better in logs.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">noisy</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<div class="viewcode-block" id="TelnetServerFactory.logPrefix"><a class="viewcode-back" href="../../../../api/evennia.server.portal.telnet.html#evennia.server.portal.telnet.TelnetServerFactory.logPrefix">[docs]</a> <span class="k">def</span> <span class="nf">logPrefix</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -134,6 +135,7 @@
|
|||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">dataReceived</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">logger</span>
|
||||
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_err</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Malformed telnet input: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TelnetProtocol.connectionMade"><a class="viewcode-back" href="../../../../api/evennia.server.portal.telnet.html#evennia.server.portal.telnet.TelnetProtocol.connectionMade">[docs]</a> <span class="k">def</span> <span class="nf">connectionMade</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -500,8 +502,9 @@
|
|||
<span class="n">prompt</span> <span class="o">=</span> <span class="n">mxp_parse</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span>
|
||||
<span class="n">prompt</span> <span class="o">=</span> <span class="n">to_bytes</span><span class="p">(</span><span class="n">prompt</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="n">prompt</span> <span class="o">=</span> <span class="n">prompt</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">IAC</span><span class="p">,</span> <span class="n">IAC</span> <span class="o">+</span> <span class="n">IAC</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="sa">b</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\r\n</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">protocol_flags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"NOPROMPTGOAHEAD"</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">protocol_flags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"NOGOAHEAD"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">protocol_flags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="s2">"NOPROMPTGOAHEAD"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">protocol_flags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"NOGOAHEAD"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="p">):</span>
|
||||
<span class="n">prompt</span> <span class="o">+=</span> <span class="n">IAC</span> <span class="o">+</span> <span class="n">GA</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">transport</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">mccp_compress</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prompt</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -89,14 +89,14 @@
|
|||
<span class="c1"># pre-compiled regexes</span>
|
||||
<span class="c1"># returns 2-tuple</span>
|
||||
<span class="n">msdp_regex_table</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
|
||||
<span class="sa">br</span><span class="s2">"</span><span class="si">%s</span><span class="s2">\s*(\w*?)\s*</span><span class="si">%s</span><span class="s2">\s*</span><span class="si">%s</span><span class="s2">(.*?)</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">MSDP_VAR</span><span class="p">,</span> <span class="n">MSDP_VAL</span><span class="p">,</span> <span class="n">MSDP_TABLE_OPEN</span><span class="p">,</span> <span class="n">MSDP_TABLE_CLOSE</span><span class="p">)</span>
|
||||
<span class="sa">rb</span><span class="s2">"</span><span class="si">%s</span><span class="s2">\s*(\w*?)\s*</span><span class="si">%s</span><span class="s2">\s*</span><span class="si">%s</span><span class="s2">(.*?)</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">MSDP_VAR</span><span class="p">,</span> <span class="n">MSDP_VAL</span><span class="p">,</span> <span class="n">MSDP_TABLE_OPEN</span><span class="p">,</span> <span class="n">MSDP_TABLE_CLOSE</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># returns 2-tuple</span>
|
||||
<span class="n">msdp_regex_array</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
|
||||
<span class="sa">br</span><span class="s2">"</span><span class="si">%s</span><span class="s2">\s*(\w*?)\s*</span><span class="si">%s</span><span class="s2">\s*</span><span class="si">%s</span><span class="s2">(.*?)</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">MSDP_VAR</span><span class="p">,</span> <span class="n">MSDP_VAL</span><span class="p">,</span> <span class="n">MSDP_ARRAY_OPEN</span><span class="p">,</span> <span class="n">MSDP_ARRAY_CLOSE</span><span class="p">)</span>
|
||||
<span class="sa">rb</span><span class="s2">"</span><span class="si">%s</span><span class="s2">\s*(\w*?)\s*</span><span class="si">%s</span><span class="s2">\s*</span><span class="si">%s</span><span class="s2">(.*?)</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">MSDP_VAR</span><span class="p">,</span> <span class="n">MSDP_VAL</span><span class="p">,</span> <span class="n">MSDP_ARRAY_OPEN</span><span class="p">,</span> <span class="n">MSDP_ARRAY_CLOSE</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">msdp_regex_var</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">br</span><span class="s2">"</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">MSDP_VAR</span><span class="p">)</span>
|
||||
<span class="n">msdp_regex_val</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">br</span><span class="s2">"</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">MSDP_VAL</span><span class="p">)</span>
|
||||
<span class="n">msdp_regex_var</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">rb</span><span class="s2">"</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">MSDP_VAR</span><span class="p">)</span>
|
||||
<span class="n">msdp_regex_val</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">rb</span><span class="s2">"</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">MSDP_VAL</span><span class="p">)</span>
|
||||
|
||||
<span class="n">EVENNIA_TO_GMCP</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"client_options"</span><span class="p">:</span> <span class="s2">"Core.Supports.Get"</span><span class="p">,</span>
|
||||
|
|
|
|||
|
|
@ -83,8 +83,10 @@
|
|||
<span class="kn">from</span> <span class="nn">twisted.internet.task</span> <span class="kn">import</span> <span class="n">LoopingCall</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">django</span>
|
||||
|
||||
<span class="n">django</span><span class="o">.</span><span class="n">setup</span><span class="p">()</span>
|
||||
<span class="kn">import</span> <span class="nn">evennia</span> <span class="c1"># noqa</span>
|
||||
|
||||
<span class="n">evennia</span><span class="o">.</span><span class="n">_init</span><span class="p">()</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span> <span class="c1"># noqa</span>
|
||||
|
|
@ -256,6 +258,7 @@
|
|||
<span class="sd"> with the receive time on both ends.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"dummyrunner_echo_response"</span>
|
||||
|
||||
<div class="viewcode-block" id="CmdDummyRunnerEchoResponse.func"><a class="viewcode-back" href="../../../../api/evennia.server.profiling.dummyrunner.html#evennia.server.profiling.dummyrunner.CmdDummyRunnerEchoResponse.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -270,9 +273,11 @@
|
|||
<span class="sd"> Dummyrunner injected cmdset.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="DummyRunnerCmdSet.at_cmdset_creation"><a class="viewcode-back" href="../../../../api/evennia.server.profiling.dummyrunner.html#evennia.server.profiling.dummyrunner.DummyRunnerCmdSet.at_cmdset_creation">[docs]</a> <span class="k">def</span> <span class="nf">at_cmdset_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">CmdDummyRunnerEchoResponse</span><span class="p">())</span></div></div>
|
||||
|
||||
|
||||
<span class="c1"># ------------------------------------------------------------</span>
|
||||
<span class="c1"># Helper functions</span>
|
||||
<span class="c1"># ------------------------------------------------------------</span>
|
||||
|
|
@ -327,6 +332,7 @@
|
|||
<span class="c1"># Client classes</span>
|
||||
<span class="c1"># ------------------------------------------------------------</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="DummyClient"><a class="viewcode-back" href="../../../../api/evennia.server.profiling.dummyrunner.html#evennia.server.profiling.dummyrunner.DummyClient">[docs]</a><span class="k">class</span> <span class="nc">DummyClient</span><span class="p">(</span><span class="n">telnet</span><span class="o">.</span><span class="n">StatefulTelnetProtocol</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Handles connection to a running Evennia server,</span>
|
||||
|
|
@ -338,11 +344,13 @@
|
|||
<div class="viewcode-block" id="DummyClient.report"><a class="viewcode-back" href="../../../../api/evennia.server.profiling.dummyrunner.html#evennia.server.profiling.dummyrunner.DummyClient.report">[docs]</a> <span class="k">def</span> <span class="nf">report</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">clientkey</span><span class="p">):</span>
|
||||
<span class="n">pad</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">*</span> <span class="p">(</span><span class="mi">25</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">))</span>
|
||||
<span class="n">tim</span> <span class="o">=</span> <span class="nb">round</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">connection_timestamp</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">text</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">clientkey</span><span class="si">}{</span><span class="n">pad</span><span class="si">}</span><span class="se">\t</span><span class="s2">"</span>
|
||||
<span class="sa">f</span><span class="s2">"conn: </span><span class="si">{</span><span class="n">NCONNECTED</span><span class="si">}</span><span class="s2"> -> "</span>
|
||||
<span class="sa">f</span><span class="s2">"welcome screen: </span><span class="si">{</span><span class="n">NLOGIN_SCREEN</span><span class="si">}</span><span class="s2"> -> "</span>
|
||||
<span class="sa">f</span><span class="s2">"authing: </span><span class="si">{</span><span class="n">NLOGGING_IN</span><span class="si">}</span><span class="s2"> -> "</span>
|
||||
<span class="sa">f</span><span class="s2">"loggedin/tot: </span><span class="si">{</span><span class="n">NLOGGED_IN</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">NCLIENTS</span><span class="si">}</span><span class="s2"> (after </span><span class="si">{</span><span class="n">tim</span><span class="si">}</span><span class="s2">s)"</span><span class="p">)</span></div>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">text</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">clientkey</span><span class="si">}{</span><span class="n">pad</span><span class="si">}</span><span class="se">\t</span><span class="s2">"</span>
|
||||
<span class="sa">f</span><span class="s2">"conn: </span><span class="si">{</span><span class="n">NCONNECTED</span><span class="si">}</span><span class="s2"> -> "</span>
|
||||
<span class="sa">f</span><span class="s2">"welcome screen: </span><span class="si">{</span><span class="n">NLOGIN_SCREEN</span><span class="si">}</span><span class="s2"> -> "</span>
|
||||
<span class="sa">f</span><span class="s2">"authing: </span><span class="si">{</span><span class="n">NLOGGING_IN</span><span class="si">}</span><span class="s2"> -> "</span>
|
||||
<span class="sa">f</span><span class="s2">"loggedin/tot: </span><span class="si">{</span><span class="n">NLOGGED_IN</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">NCLIENTS</span><span class="si">}</span><span class="s2"> (after </span><span class="si">{</span><span class="n">tim</span><span class="si">}</span><span class="s2">s)"</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DummyClient.connectionMade"><a class="viewcode-back" href="../../../../api/evennia.server.profiling.dummyrunner.html#evennia.server.profiling.dummyrunner.DummyClient.connectionMade">[docs]</a> <span class="k">def</span> <span class="nf">connectionMade</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -384,7 +392,7 @@
|
|||
<span class="c1"># (unclear why this would be - overload?)</span>
|
||||
<span class="c1"># try sending a look to get something to start with</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">report</span><span class="p">(</span><span class="s2">"?? retrying welcome screen"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sendLine</span><span class="p">(</span><span class="nb">bytes</span><span class="p">(</span><span class="s2">"look"</span><span class="p">,</span> <span class="s1">'utf-8'</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sendLine</span><span class="p">(</span><span class="nb">bytes</span><span class="p">(</span><span class="s2">"look"</span><span class="p">,</span> <span class="s2">"utf-8"</span><span class="p">))</span>
|
||||
<span class="c1"># make sure to check again later</span>
|
||||
<span class="n">reactor</span><span class="o">.</span><span class="n">callLater</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_retry_welcome_screen</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -405,8 +413,10 @@
|
|||
<span class="n">TOTAL_LAG_MEASURES</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">TIME_ALL_LOGIN</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
||||
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">".. running 30s average: ~</span><span class="si">{</span><span class="n">avgrate</span><span class="si">}</span><span class="s2"> actions/s "</span>
|
||||
<span class="sa">f</span><span class="s2">"lag: </span><span class="si">{</span><span class="n">lag</span><span class="si">:</span><span class="s2">.2</span><span class="si">}</span><span class="s2">s (in: </span><span class="si">{</span><span class="n">lag_in</span><span class="si">:</span><span class="s2">.2</span><span class="si">}</span><span class="s2">s, out: </span><span class="si">{</span><span class="n">lag_out</span><span class="si">:</span><span class="s2">.2</span><span class="si">}</span><span class="s2">s)"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">".. running 30s average: ~</span><span class="si">{</span><span class="n">avgrate</span><span class="si">}</span><span class="s2"> actions/s "</span>
|
||||
<span class="sa">f</span><span class="s2">"lag: </span><span class="si">{</span><span class="n">lag</span><span class="si">:</span><span class="s2">.2</span><span class="si">}</span><span class="s2">s (in: </span><span class="si">{</span><span class="n">lag_in</span><span class="si">:</span><span class="s2">.2</span><span class="si">}</span><span class="s2">s, out: </span><span class="si">{</span><span class="n">lag_out</span><span class="si">:</span><span class="s2">.2</span><span class="si">}</span><span class="s2">s)"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">reactor</span><span class="o">.</span><span class="n">callLater</span><span class="p">(</span><span class="mi">30</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_print_statistics</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -435,7 +445,7 @@
|
|||
<span class="c1"># negotiation)</span>
|
||||
<span class="c1"># start client tick</span>
|
||||
<span class="n">d</span> <span class="o">=</span> <span class="n">LoopingCall</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p">)</span>
|
||||
<span class="n">df</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="n">TIMESTEP</span> <span class="o">*</span> <span class="mf">0.001</span><span class="p">),</span> <span class="nb">min</span><span class="p">(</span><span class="n">TIMESTEP</span><span class="o">/</span><span class="mi">10</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">))</span>
|
||||
<span class="n">df</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="n">TIMESTEP</span> <span class="o">*</span> <span class="mf">0.001</span><span class="p">),</span> <span class="nb">min</span><span class="p">(</span><span class="n">TIMESTEP</span> <span class="o">/</span> <span class="mi">10</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">))</span>
|
||||
<span class="c1"># dither next attempt with random time</span>
|
||||
<span class="n">timestep</span> <span class="o">=</span> <span class="n">TIMESTEP</span> <span class="o">+</span> <span class="p">(</span><span class="o">-</span><span class="n">df</span> <span class="o">+</span> <span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">random</span><span class="p">()</span> <span class="o">*</span> <span class="n">df</span><span class="p">))</span>
|
||||
<span class="n">d</span><span class="o">.</span><span class="n">start</span><span class="p">(</span><span class="n">timestep</span><span class="p">,</span> <span class="n">now</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">addErrback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">)</span>
|
||||
|
|
@ -519,7 +529,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">_logging_out</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">cmd</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_logout</span><span class="p">(</span><span class="bp">self</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">report</span><span class="p">(</span><span class="sa">f</span><span class="s2">"-> logout/disconnect (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">istep</span><span class="si">}</span><span class="s2"> actions)"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sendLine</span><span class="p">(</span><span class="nb">bytes</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="s1">'utf-8'</span><span class="p">))</span></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sendLine</span><span class="p">(</span><span class="nb">bytes</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="s2">"utf-8"</span><span class="p">))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DummyClient.step"><a class="viewcode-back" href="../../../../api/evennia.server.profiling.dummyrunner.html#evennia.server.profiling.dummyrunner.DummyClient.step">[docs]</a> <span class="k">def</span> <span class="nf">step</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -563,7 +573,7 @@
|
|||
<span class="c1"># the send as possible</span>
|
||||
<span class="n">cmd</span> <span class="o">=</span> <span class="n">cmd</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">timestamp</span><span class="o">=</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">())</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sendLine</span><span class="p">(</span><span class="nb">bytes</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="s1">'utf-8'</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sendLine</span><span class="p">(</span><span class="nb">bytes</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="s2">"utf-8"</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">action_started</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">istep</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
|
||||
|
|
@ -647,17 +657,19 @@
|
|||
<span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
|
||||
<span class="n">nclients</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">nclients</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">INFO_STARTING</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">nclients</span><span class="o">=</span><span class="n">nclients</span><span class="p">,</span>
|
||||
<span class="n">port</span><span class="o">=</span><span class="n">TELNET_PORT</span><span class="p">,</span>
|
||||
<span class="n">idmapper_cache_size</span><span class="o">=</span><span class="n">IDMAPPER_CACHE_MAXSIZE</span><span class="p">,</span>
|
||||
<span class="n">timestep</span><span class="o">=</span><span class="n">TIMESTEP</span><span class="p">,</span>
|
||||
<span class="n">rate</span><span class="o">=</span><span class="mi">1</span><span class="o">/</span><span class="n">TIMESTEP</span><span class="p">,</span>
|
||||
<span class="n">chance_of_login</span><span class="o">=</span><span class="n">CHANCE_OF_LOGIN</span> <span class="o">*</span> <span class="mi">100</span><span class="p">,</span>
|
||||
<span class="n">chance_of_action</span><span class="o">=</span><span class="n">CHANCE_OF_ACTION</span> <span class="o">*</span> <span class="mi">100</span><span class="p">,</span>
|
||||
<span class="n">avg_rate</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">TIMESTEP</span><span class="p">)</span> <span class="o">*</span> <span class="n">CHANCE_OF_ACTION</span><span class="p">,</span>
|
||||
<span class="n">avg_rate_total</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">TIMESTEP</span><span class="p">)</span> <span class="o">*</span> <span class="n">CHANCE_OF_ACTION</span> <span class="o">*</span> <span class="n">nclients</span>
|
||||
<span class="p">))</span>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="n">INFO_STARTING</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">nclients</span><span class="o">=</span><span class="n">nclients</span><span class="p">,</span>
|
||||
<span class="n">port</span><span class="o">=</span><span class="n">TELNET_PORT</span><span class="p">,</span>
|
||||
<span class="n">idmapper_cache_size</span><span class="o">=</span><span class="n">IDMAPPER_CACHE_MAXSIZE</span><span class="p">,</span>
|
||||
<span class="n">timestep</span><span class="o">=</span><span class="n">TIMESTEP</span><span class="p">,</span>
|
||||
<span class="n">rate</span><span class="o">=</span><span class="mi">1</span> <span class="o">/</span> <span class="n">TIMESTEP</span><span class="p">,</span>
|
||||
<span class="n">chance_of_login</span><span class="o">=</span><span class="n">CHANCE_OF_LOGIN</span> <span class="o">*</span> <span class="mi">100</span><span class="p">,</span>
|
||||
<span class="n">chance_of_action</span><span class="o">=</span><span class="n">CHANCE_OF_ACTION</span> <span class="o">*</span> <span class="mi">100</span><span class="p">,</span>
|
||||
<span class="n">avg_rate</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">TIMESTEP</span><span class="p">)</span> <span class="o">*</span> <span class="n">CHANCE_OF_ACTION</span><span class="p">,</span>
|
||||
<span class="n">avg_rate_total</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="n">TIMESTEP</span><span class="p">)</span> <span class="o">*</span> <span class="n">CHANCE_OF_ACTION</span> <span class="o">*</span> <span class="n">nclients</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># run the dummyrunner</span>
|
||||
<span class="n">TIME_START</span> <span class="o">=</span> <span class="n">t0</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
||||
|
|
|
|||
|
|
@ -128,8 +128,9 @@
|
|||
<span class="c1"># some convenient templates</span>
|
||||
|
||||
<span class="n">DUMMY_NAME</span> <span class="o">=</span> <span class="s2">"Dummy_</span><span class="si">{gid}</span><span class="s2">"</span>
|
||||
<span class="n">DUMMY_PWD</span> <span class="o">=</span> <span class="p">(</span><span class="s1">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">ascii_letters</span> <span class="o">+</span> <span class="n">string</span><span class="o">.</span><span class="n">digits</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">20</span><span class="p">))</span> <span class="o">+</span> <span class="s2">"-</span><span class="si">{gid}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">DUMMY_PWD</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">ascii_letters</span> <span class="o">+</span> <span class="n">string</span><span class="o">.</span><span class="n">digits</span><span class="p">)</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">20</span><span class="p">))</span> <span class="o">+</span> <span class="s2">"-</span><span class="si">{gid}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">START_ROOM</span> <span class="o">=</span> <span class="s2">"testing_room_start_</span><span class="si">{gid}</span><span class="s2">"</span>
|
||||
<span class="n">ROOM_TEMPLATE</span> <span class="o">=</span> <span class="s2">"testing_room_</span><span class="si">%s</span><span class="s2">"</span>
|
||||
<span class="n">EXIT_TEMPLATE</span> <span class="o">=</span> <span class="s2">"exit_</span><span class="si">%s</span><span class="s2">"</span>
|
||||
|
|
@ -143,6 +144,7 @@
|
|||
|
||||
<span class="c1"># login/logout</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="c_login"><a class="viewcode-back" href="../../../../api/evennia.server.profiling.dummyrunner_settings.html#evennia.server.profiling.dummyrunner_settings.c_login">[docs]</a><span class="k">def</span> <span class="nf">c_login</span><span class="p">(</span><span class="n">client</span><span class="p">):</span>
|
||||
<span class="s2">"logins to the game"</span>
|
||||
<span class="c1"># we always use a new client name</span>
|
||||
|
|
@ -173,10 +175,7 @@
|
|||
<span class="s2">"logins, don't dig its own room"</span>
|
||||
<span class="n">cname</span> <span class="o">=</span> <span class="n">DUMMY_NAME</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">gid</span><span class="o">=</span><span class="n">client</span><span class="o">.</span><span class="n">gid</span><span class="p">)</span>
|
||||
<span class="n">cpwd</span> <span class="o">=</span> <span class="n">DUMMY_PWD</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">gid</span><span class="o">=</span><span class="n">client</span><span class="o">.</span><span class="n">gid</span><span class="p">)</span>
|
||||
<span class="n">cmds</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"create </span><span class="si">{</span><span class="n">cname</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">cpwd</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
||||
<span class="sa">f</span><span class="s2">"connect </span><span class="si">{</span><span class="n">cname</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">cpwd</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">cmds</span> <span class="o">=</span> <span class="p">(</span><span class="sa">f</span><span class="s2">"create </span><span class="si">{</span><span class="n">cname</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">cpwd</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"connect </span><span class="si">{</span><span class="n">cname</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">cpwd</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">cmds</span></div>
|
||||
|
||||
|
||||
|
|
@ -216,7 +215,10 @@
|
|||
|
||||
<div class="viewcode-block" id="c_help"><a class="viewcode-back" href="../../../../api/evennia.server.profiling.dummyrunner_settings.html#evennia.server.profiling.dummyrunner_settings.c_help">[docs]</a><span class="k">def</span> <span class="nf">c_help</span><span class="p">(</span><span class="n">client</span><span class="p">):</span>
|
||||
<span class="s2">"reads help files"</span>
|
||||
<span class="n">cmds</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"help"</span><span class="p">,</span> <span class="s2">"dummyrunner_echo_response"</span><span class="p">,)</span>
|
||||
<span class="n">cmds</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"help"</span><span class="p">,</span>
|
||||
<span class="s2">"dummyrunner_echo_response"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">cmds</span></div>
|
||||
|
||||
|
||||
|
|
@ -304,21 +306,16 @@
|
|||
<span class="n">PROFILE</span> <span class="o">=</span> <span class="s2">"looker"</span>
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s1">'idler'</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s2">"idler"</span><span class="p">:</span>
|
||||
<span class="n">ACTIONS</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">c_login</span><span class="p">,</span>
|
||||
<span class="n">c_logout</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="n">c_idles</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_measure_lag</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s1">'looker'</span><span class="p">:</span>
|
||||
<span class="n">ACTIONS</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">c_login</span><span class="p">,</span>
|
||||
<span class="n">c_logout</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mf">0.8</span><span class="p">,</span> <span class="n">c_looks</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">c_measure_lag</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s1">'normal_player'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s2">"looker"</span><span class="p">:</span>
|
||||
<span class="n">ACTIONS</span> <span class="o">=</span> <span class="p">(</span><span class="n">c_login</span><span class="p">,</span> <span class="n">c_logout</span><span class="p">,</span> <span class="p">(</span><span class="mf">0.8</span><span class="p">,</span> <span class="n">c_looks</span><span class="p">),</span> <span class="p">(</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">c_measure_lag</span><span class="p">))</span>
|
||||
<span class="k">elif</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s2">"normal_player"</span><span class="p">:</span>
|
||||
<span class="n">ACTIONS</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">c_login</span><span class="p">,</span>
|
||||
<span class="n">c_logout</span><span class="p">,</span>
|
||||
|
|
@ -327,9 +324,9 @@
|
|||
<span class="p">(</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">c_help</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.3</span><span class="p">,</span> <span class="n">c_moves</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.05</span><span class="p">,</span> <span class="n">c_socialize</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_measure_lag</span><span class="p">)</span>
|
||||
<span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_measure_lag</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s1">'normal_builder'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s2">"normal_builder"</span><span class="p">:</span>
|
||||
<span class="n">ACTIONS</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">c_login</span><span class="p">,</span>
|
||||
<span class="n">c_logout</span><span class="p">,</span>
|
||||
|
|
@ -339,9 +336,9 @@
|
|||
<span class="p">(</span><span class="mf">0.01</span><span class="p">,</span> <span class="n">c_digs</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.01</span><span class="p">,</span> <span class="n">c_creates_obj</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">c_moves</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_measure_lag</span><span class="p">)</span>
|
||||
<span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_measure_lag</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s1">'heavy_builder'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s2">"heavy_builder"</span><span class="p">:</span>
|
||||
<span class="n">ACTIONS</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">c_login</span><span class="p">,</span>
|
||||
<span class="n">c_logout</span><span class="p">,</span>
|
||||
|
|
@ -351,9 +348,9 @@
|
|||
<span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_digs</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_creates_obj</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">c_moves</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_measure_lag</span><span class="p">)</span>
|
||||
<span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_measure_lag</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s1">'socializing_builder'</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s2">"socializing_builder"</span><span class="p">:</span>
|
||||
<span class="n">ACTIONS</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">c_login</span><span class="p">,</span>
|
||||
<span class="n">c_logout</span><span class="p">,</span>
|
||||
|
|
@ -363,19 +360,15 @@
|
|||
<span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_creates_obj</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">c_digs</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.3</span><span class="p">,</span> <span class="n">c_moves</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_measure_lag</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s1">'only_digger'</span><span class="p">:</span>
|
||||
<span class="n">ACTIONS</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">c_login</span><span class="p">,</span>
|
||||
<span class="n">c_logout</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="n">c_digs</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_measure_lag</span><span class="p">)</span>
|
||||
<span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_measure_lag</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">PROFILE</span> <span class="o">==</span> <span class="s2">"only_digger"</span><span class="p">:</span>
|
||||
<span class="n">ACTIONS</span> <span class="o">=</span> <span class="p">(</span><span class="n">c_login</span><span class="p">,</span> <span class="n">c_logout</span><span class="p">,</span> <span class="p">(</span><span class="mf">0.9</span><span class="p">,</span> <span class="n">c_digs</span><span class="p">),</span> <span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">c_measure_lag</span><span class="p">))</span>
|
||||
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"No dummyrunner ACTION profile defined."</span><span class="p">)</span>
|
||||
<span class="kn">import</span> <span class="nn">sys</span>
|
||||
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">counter</span> <span class="o">=</span> <span class="n">Mock</span><span class="p">(</span><span class="n">return_value</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">gid</span> <span class="o">=</span> <span class="s2">"20171025161153-1"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s2">"Dummy_</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">gid</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">password</span> <span class="o">=</span> <span class="n">Something</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">password</span> <span class="o">=</span> <span class="p">(</span><span class="n">Something</span><span class="p">,)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">start_room</span> <span class="o">=</span> <span class="s2">"testing_room_start_</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">gid</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">objs</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">exits</span> <span class="o">=</span> <span class="p">[]</span></div>
|
||||
|
|
@ -87,12 +87,12 @@
|
|||
<span class="n">c_login</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="p">),</span>
|
||||
<span class="p">(</span>
|
||||
<span class="n">Something</span><span class="p">,</span> <span class="c1"># create</span>
|
||||
<span class="s1">'yes'</span><span class="p">,</span> <span class="c1"># confirm creation</span>
|
||||
<span class="s2">"yes"</span><span class="p">,</span> <span class="c1"># confirm creation</span>
|
||||
<span class="n">Something</span><span class="p">,</span> <span class="c1"># connect</span>
|
||||
<span class="s2">"dig </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">start_room</span><span class="p">,</span>
|
||||
<span class="s2">"teleport </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">start_room</span><span class="p">,</span>
|
||||
<span class="s2">"py from evennia.server.profiling.dummyrunner import DummyRunnerCmdSet;"</span>
|
||||
<span class="s2">"self.cmdset.add(DummyRunnerCmdSet, persistent=False)"</span>
|
||||
<span class="s2">"self.cmdset.add(DummyRunnerCmdSet, persistent=False)"</span><span class="p">,</span>
|
||||
<span class="p">),</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
|
|
@ -128,7 +128,7 @@
|
|||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestDummyrunnerSettings.test_c_digs"><a class="viewcode-back" href="../../../../api/evennia.server.profiling.tests.html#evennia.server.profiling.tests.TestDummyrunnerSettings.test_c_digs">[docs]</a> <span class="k">def</span> <span class="nf">test_c_digs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">c_digs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="p">),</span> <span class="p">(</span><span class="s2">"dig/tel testing_room_1 = exit_1, exit_1"</span><span class="p">,</span> <span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">c_digs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="p">),</span> <span class="p">(</span><span class="s2">"dig/tel testing_room_1 = exit_1, exit_1"</span><span class="p">,))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">exits</span><span class="p">,</span> <span class="p">[</span><span class="s2">"exit_1"</span><span class="p">,</span> <span class="s2">"exit_1"</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">clear_client_lists</span><span class="p">()</span></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -326,9 +326,12 @@
|
|||
<span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">tup</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">tup</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">tup</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">settings_compare</span><span class="p">)</span> <span class="k">if</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">mismatches</span>
|
||||
<span class="p">):</span>
|
||||
<span class="c1"># update the database</span>
|
||||
<span class="n">INFO_DICT</span><span class="p">[</span><span class="s2">"info"</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">" </span><span class="si">%s</span><span class="s2">:</span><span class="se">\n</span><span class="s2"> '</span><span class="si">%s</span><span class="s2">' changed to '</span><span class="si">%s</span><span class="s2">'. Updating unchanged entries in database ..."</span>
|
||||
<span class="o">%</span> <span class="p">(</span><span class="n">settings_names</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">prev</span><span class="p">,</span> <span class="n">curr</span><span class="p">)</span>
|
||||
<span class="n">INFO_DICT</span><span class="p">[</span>
|
||||
<span class="s2">"info"</span>
|
||||
<span class="p">]</span> <span class="o">=</span> <span class="s2">" </span><span class="si">%s</span><span class="s2">:</span><span class="se">\n</span><span class="s2"> '</span><span class="si">%s</span><span class="s2">' changed to '</span><span class="si">%s</span><span class="s2">'. Updating unchanged entries in database ..."</span> <span class="o">%</span> <span class="p">(</span>
|
||||
<span class="n">settings_names</span><span class="p">[</span><span class="n">i</span><span class="p">],</span>
|
||||
<span class="n">prev</span><span class="p">,</span>
|
||||
<span class="n">curr</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_cmdset_storage__exact</span><span class="o">=</span><span class="n">prev</span><span class="p">)</span><span class="o">.</span><span class="n">update</span><span class="p">(</span>
|
||||
|
|
@ -386,7 +389,7 @@
|
|||
<span class="c1"># i.e. this is an empty DB that needs populating.</span>
|
||||
<span class="n">INFO_DICT</span><span class="p">[</span><span class="s2">"info"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">" Server started for the first time. Setting defaults."</span>
|
||||
<span class="n">initial_setup</span><span class="o">.</span><span class="n">handle_setup</span><span class="p">()</span>
|
||||
<span class="k">elif</span> <span class="n">last_initial_setup_step</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'done'</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="k">elif</span> <span class="n">last_initial_setup_step</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"done"</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="c1"># last step crashed, so we weill resume from this step.</span>
|
||||
<span class="c1"># modules and setup will resume from this step, retrying</span>
|
||||
<span class="c1"># the last failed module. When all are finished, the step</span>
|
||||
|
|
@ -437,7 +440,7 @@
|
|||
<span class="sd"> mode (str): One of shutdown, reload or reset</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.objects.models</span> <span class="kn">import</span> <span class="n">ObjectDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.models</span> <span class="kn">import</span> <span class="n">TypedObject</span>
|
||||
|
||||
<span class="c1"># start server time and maintenance task</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">maintenance_task</span> <span class="o">=</span> <span class="n">LoopingCall</span><span class="p">(</span><span class="n">_server_maintenance</span><span class="p">)</span>
|
||||
|
|
@ -446,8 +449,11 @@
|
|||
<span class="c1"># update eventual changed defaults</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">update_defaults</span><span class="p">()</span>
|
||||
|
||||
<span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">at_init</span><span class="p">()</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">get_all_cached_instances</span><span class="p">()]</span>
|
||||
<span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="n">at_init</span><span class="p">()</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">AccountDB</span><span class="o">.</span><span class="n">get_all_cached_instances</span><span class="p">()]</span>
|
||||
<span class="c1"># run at_init() on all cached entities on reconnect</span>
|
||||
<span class="p">[</span>
|
||||
<span class="p">[</span><span class="n">entity</span><span class="o">.</span><span class="n">at_init</span><span class="p">()</span> <span class="k">for</span> <span class="n">entity</span> <span class="ow">in</span> <span class="n">typeclass_db</span><span class="o">.</span><span class="n">get_all_cached_instances</span><span class="p">()]</span>
|
||||
<span class="k">for</span> <span class="n">typeclass_db</span> <span class="ow">in</span> <span class="n">TypedObject</span><span class="o">.</span><span class="n">__subclasses__</span><span class="p">()</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="c1"># call correct server hook based on start file value</span>
|
||||
<span class="k">if</span> <span class="n">mode</span> <span class="o">==</span> <span class="s2">"reload"</span><span class="p">:</span>
|
||||
|
|
@ -458,6 +464,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">at_server_cold_start</span><span class="p">()</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_msg</span><span class="p">(</span><span class="s2">"Evennia Server successfully restarted in 'reset' mode."</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">mode</span> <span class="o">==</span> <span class="s2">"shutdown"</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.objects.models</span> <span class="kn">import</span> <span class="n">ObjectDB</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">at_server_cold_start</span><span class="p">()</span>
|
||||
<span class="c1"># clear eventual lingering session storages</span>
|
||||
<span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">clear_all_sessids</span><span class="p">()</span>
|
||||
|
|
|
|||
|
|
@ -227,8 +227,10 @@
|
|||
<span class="k">global</span> <span class="n">_FUNCPARSER</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_FUNCPARSER</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.funcparser</span> <span class="kn">import</span> <span class="n">FuncParser</span>
|
||||
<span class="n">_FUNCPARSER</span> <span class="o">=</span> <span class="n">FuncParser</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">FUNCPARSER_OUTGOING_MESSAGES_MODULES</span><span class="p">,</span>
|
||||
<span class="n">raise_errors</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
|
||||
<span class="n">_FUNCPARSER</span> <span class="o">=</span> <span class="n">FuncParser</span><span class="p">(</span>
|
||||
<span class="n">settings</span><span class="o">.</span><span class="n">FUNCPARSER_OUTGOING_MESSAGES_MODULES</span><span class="p">,</span> <span class="n">raise_errors</span><span class="o">=</span><span class="kc">True</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"options"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">{}</span>
|
||||
<span class="n">raw</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"raw"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
|
|
@ -264,8 +266,11 @@
|
|||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">)):</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">_utf8</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">_FUNCPARSER_PARSE_OUTGOING_MESSAGES_ENABLED</span>
|
||||
<span class="ow">and</span> <span class="ow">not</span> <span class="n">raw</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ServerSessionHandler</span><span class="p">)):</span>
|
||||
<span class="k">if</span> <span class="p">(</span>
|
||||
<span class="n">_FUNCPARSER_PARSE_OUTGOING_MESSAGES_ENABLED</span>
|
||||
<span class="ow">and</span> <span class="ow">not</span> <span class="n">raw</span>
|
||||
<span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ServerSessionHandler</span><span class="p">)</span>
|
||||
<span class="p">):</span>
|
||||
<span class="c1"># only apply funcparser on the outgoing path (sessionhandler->)</span>
|
||||
<span class="c1"># data = parse_inlinefunc(data, strip=strip_inlinefunc, session=session)</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">_FUNCPARSER</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">strip</span><span class="o">=</span><span class="n">strip_inlinefunc</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">)</span>
|
||||
|
|
@ -680,8 +685,7 @@
|
|||
<span class="c1"># mean connecting from the same host would not catch duplicates</span>
|
||||
<span class="n">sid</span> <span class="o">=</span> <span class="nb">id</span><span class="p">(</span><span class="n">curr_session</span><span class="p">)</span>
|
||||
<span class="n">doublet_sessions</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">sess</span> <span class="k">for</span> <span class="n">sess</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">values</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">sess</span><span class="o">.</span><span class="n">logged_in</span> <span class="ow">and</span> <span class="n">sess</span><span class="o">.</span><span class="n">uid</span> <span class="o">==</span> <span class="n">uid</span> <span class="ow">and</span> <span class="nb">id</span><span class="p">(</span><span class="n">sess</span><span class="p">)</span> <span class="o">!=</span> <span class="n">sid</span>
|
||||
<span class="n">sess</span> <span class="k">for</span> <span class="n">sess</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">if</span> <span class="n">sess</span><span class="o">.</span><span class="n">logged_in</span> <span class="ow">and</span> <span class="n">sess</span><span class="o">.</span><span class="n">uid</span> <span class="o">==</span> <span class="n">uid</span> <span class="ow">and</span> <span class="nb">id</span><span class="p">(</span><span class="n">sess</span><span class="p">)</span> <span class="o">!=</span> <span class="n">sid</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">session</span> <span class="ow">in</span> <span class="n">doublet_sessions</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -77,14 +77,14 @@
|
|||
<span class="sd"> the throttle is imposed!</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">storage</span> <span class="o">=</span> <span class="n">caches</span><span class="p">[</span><span class="s1">'throttle'</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">storage</span> <span class="o">=</span> <span class="n">caches</span><span class="p">[</span><span class="s2">"throttle"</span><span class="p">]</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">(</span><span class="s2">"Throttle: Errors encountered; using default cache."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">storage</span> <span class="o">=</span> <span class="n">caches</span><span class="p">[</span><span class="s1">'default'</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">storage</span> <span class="o">=</span> <span class="n">caches</span><span class="p">[</span><span class="s2">"default"</span><span class="p">]</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'name'</span><span class="p">,</span> <span class="s1">'undefined-throttle'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"name"</span><span class="p">,</span> <span class="s2">"undefined-throttle"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">limit</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"limit"</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cache_size</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'cache_size'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">limit</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cache_size</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"cache_size"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">limit</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">timeout</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"timeout"</span><span class="p">,</span> <span class="mi">5</span> <span class="o">*</span> <span class="mi">60</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Throttle.get_cache_key"><a class="viewcode-back" href="../../../api/evennia.server.throttle.html#evennia.server.throttle.Throttle.get_cache_key">[docs]</a> <span class="k">def</span> <span class="nf">get_cache_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
<span class="sd"> collisions in the same namespace.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="s1">'-'</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">))</span></div>
|
||||
<span class="k">return</span> <span class="s2">"-"</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Throttle.touch"><a class="viewcode-back" href="../../../api/evennia.server.throttle.html#evennia.server.throttle.Throttle.touch">[docs]</a> <span class="k">def</span> <span class="nf">touch</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -127,7 +127,7 @@
|
|||
<span class="n">cache_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_cache_key</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">ip</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">cache_key</span><span class="p">,</span> <span class="n">deque</span><span class="p">(</span><span class="n">maxlen</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">cache_size</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">keys_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_cache_key</span><span class="p">(</span><span class="s1">'keys'</span><span class="p">)</span>
|
||||
<span class="n">keys_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_cache_key</span><span class="p">(</span><span class="s2">"keys"</span><span class="p">)</span>
|
||||
<span class="n">keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">get_or_set</span><span class="p">(</span><span class="n">keys_key</span><span class="p">,</span> <span class="nb">set</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">timeout</span><span class="p">)</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">get_many</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">get_cache_key</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">))</span>
|
||||
|
||||
|
|
@ -203,7 +203,7 @@
|
|||
<span class="sd"> IP, not the cache-prefixed key.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">keys_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_cache_key</span><span class="p">(</span><span class="s1">'keys'</span><span class="p">)</span>
|
||||
<span class="n">keys_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_cache_key</span><span class="p">(</span><span class="s2">"keys"</span><span class="p">)</span>
|
||||
<span class="n">keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">keys_key</span><span class="p">,</span> <span class="nb">set</span><span class="p">())</span>
|
||||
<span class="n">keys</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">ip</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">keys_key</span><span class="p">,</span> <span class="n">keys</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">timeout</span><span class="p">)</span>
|
||||
|
|
@ -217,7 +217,7 @@
|
|||
<span class="sd"> ip(str): IP to remove from list of keys.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">keys_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_cache_key</span><span class="p">(</span><span class="s1">'keys'</span><span class="p">)</span>
|
||||
<span class="n">keys_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_cache_key</span><span class="p">(</span><span class="s2">"keys"</span><span class="p">)</span>
|
||||
<span class="n">keys</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">storage</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">keys_key</span><span class="p">,</span> <span class="nb">set</span><span class="p">())</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">keys</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">ip</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -215,10 +215,10 @@
|
|||
<span class="sd"> foo = AttributeProperty(default="Bar")</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">attrhandler_name</span> <span class="o">=</span> <span class="s2">"attributes"</span>
|
||||
|
||||
<div class="viewcode-block" id="AttributeProperty.__init__"><a class="viewcode-back" href="../../../api/evennia.typeclasses.attributes.html#evennia.typeclasses.attributes.AttributeProperty.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">strattr</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">lockstring</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span>
|
||||
<span class="n">autocreate</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="AttributeProperty.__init__"><a class="viewcode-back" href="../../../api/evennia.typeclasses.attributes.html#evennia.typeclasses.attributes.AttributeProperty.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">strattr</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">lockstring</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">autocreate</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Initialize an Attribute as a property descriptor.</span>
|
||||
|
||||
|
|
@ -260,13 +260,12 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_default</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attrhandler_name</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_default</span><span class="p">,</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">,</span>
|
||||
<span class="n">strattr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_strattr</span><span class="p">,</span>
|
||||
<span class="n">raise_exception</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_autocreate</span><span class="p">)</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attrhandler_name</span><span class="p">)</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_default</span><span class="p">,</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">,</span>
|
||||
<span class="n">strattr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_strattr</span><span class="p">,</span>
|
||||
<span class="n">raise_exception</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_autocreate</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_autocreate</span><span class="p">:</span>
|
||||
|
|
@ -283,12 +282,13 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="p">(</span>
|
||||
<span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attrhandler_name</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span>
|
||||
<span class="n">value</span><span class="p">,</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">,</span>
|
||||
<span class="n">lockstring</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_lockstring</span><span class="p">,</span>
|
||||
<span class="n">strattr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_strattr</span><span class="p">)</span>
|
||||
<span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attrhandler_name</span><span class="p">)</span><span class="o">.</span><span class="n">add</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span>
|
||||
<span class="n">value</span><span class="p">,</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">,</span>
|
||||
<span class="n">lockstring</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_lockstring</span><span class="p">,</span>
|
||||
<span class="n">strattr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_strattr</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__delete__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">):</span>
|
||||
|
|
@ -296,11 +296,7 @@
|
|||
<span class="sd"> Called when running `del` on the field. Will remove/clear the Attribute.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="p">(</span>
|
||||
<span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attrhandler_name</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">)</span>
|
||||
<span class="p">)</span></div>
|
||||
<span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attrhandler_name</span><span class="p">)</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">))</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="NAttributeProperty"><a class="viewcode-back" href="../../../api/evennia.typeclasses.attributes.html#evennia.typeclasses.attributes.NAttributeProperty">[docs]</a><span class="k">class</span> <span class="nc">NAttributeProperty</span><span class="p">(</span><span class="n">AttributeProperty</span><span class="p">):</span>
|
||||
|
|
@ -315,6 +311,7 @@
|
|||
<span class="sd"> foo = NAttributeProperty(default="Bar")</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">attrhandler_name</span> <span class="o">=</span> <span class="s2">"nattributes"</span></div>
|
||||
|
||||
|
||||
|
|
@ -399,7 +396,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">update_fields</span><span class="o">=</span><span class="p">[</span><span class="s2">"db_lock_storage"</span><span class="p">])</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__lock_storage_del</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db_lock_storage</span> <span class="o">=</span> <span class="s1">''</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db_lock_storage</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">update_fields</span><span class="o">=</span><span class="p">[</span><span class="s2">"db_lock_storage"</span><span class="p">])</span>
|
||||
|
||||
<span class="n">lock_storage</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">__lock_storage_get</span><span class="p">,</span> <span class="n">__lock_storage_set</span><span class="p">,</span> <span class="n">__lock_storage_del</span><span class="p">)</span>
|
||||
|
|
@ -429,6 +426,7 @@
|
|||
<span class="sd">"""Deleter. Allows for del attr.value. This removes the entire attribute."""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span></div>
|
||||
|
||||
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># Handlers making use of the Attribute model</span>
|
||||
<span class="c1">#</span>
|
||||
|
|
@ -1507,15 +1505,14 @@
|
|||
<span class="c1"># groups. we need to split out any | - separated parts so we can</span>
|
||||
<span class="c1"># attach the line-break/ending extras all regexes require.</span>
|
||||
<span class="n">pattern_regex_string</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">"|"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">or_part</span> <span class="o">+</span> <span class="sa">r</span><span class="s2">"(?:[\n\r]*?)\Z"</span>
|
||||
<span class="k">for</span> <span class="n">or_part</span> <span class="ow">in</span> <span class="n">_RE_OR</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">pattern</span><span class="p">))</span>
|
||||
<span class="n">or_part</span> <span class="o">+</span> <span class="sa">r</span><span class="s2">"(?:[\n\r]*?)\Z"</span> <span class="k">for</span> <span class="n">or_part</span> <span class="ow">in</span> <span class="n">_RE_OR</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">pattern</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># Shell pattern syntax - convert $N to argN groups</span>
|
||||
<span class="c1"># for the shell pattern we make sure we have matching $N on both sides</span>
|
||||
<span class="n">pattern_args</span> <span class="o">=</span> <span class="p">[</span><span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">match</span> <span class="ow">in</span> <span class="n">_RE_NICK_RAW_ARG</span><span class="o">.</span><span class="n">finditer</span><span class="p">(</span><span class="n">pattern</span><span class="p">)]</span>
|
||||
<span class="n">replacement_args</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="k">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">match</span> <span class="ow">in</span> <span class="n">_RE_NICK_RAW_ARG</span><span class="o">.</span><span class="n">finditer</span><span class="p">(</span><span class="n">replacement</span><span class="p">)]</span>
|
||||
<span class="n">replacement_args</span> <span class="o">=</span> <span class="p">[</span><span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">match</span> <span class="ow">in</span> <span class="n">_RE_NICK_RAW_ARG</span><span class="o">.</span><span class="n">finditer</span><span class="p">(</span><span class="n">replacement</span><span class="p">)]</span>
|
||||
<span class="k">if</span> <span class="nb">set</span><span class="p">(</span><span class="n">pattern_args</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">set</span><span class="p">(</span><span class="n">replacement_args</span><span class="p">):</span>
|
||||
<span class="c1"># We don't have the same amount of argN/$N tags in input/output.</span>
|
||||
<span class="k">raise</span> <span class="n">NickTemplateInvalid</span><span class="p">(</span><span class="s2">"Nicks: Both in/out-templates must contain the same $N tags."</span><span class="p">)</span>
|
||||
|
|
@ -1524,7 +1521,8 @@
|
|||
<span class="n">pattern_regex_string</span> <span class="o">=</span> <span class="n">fnmatch</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="n">pattern</span><span class="p">)</span>
|
||||
<span class="n">pattern_regex_string</span> <span class="o">=</span> <span class="n">_RE_NICK_SPACE</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="sa">r</span><span class="s2">"</span><span class="se">\\</span><span class="s2">s+"</span><span class="p">,</span> <span class="n">pattern_regex_string</span><span class="p">)</span>
|
||||
<span class="n">pattern_regex_string</span> <span class="o">=</span> <span class="n">_RE_NICK_ARG</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span>
|
||||
<span class="k">lambda</span> <span class="n">m</span><span class="p">:</span> <span class="s2">"(?P<arg</span><span class="si">%s</span><span class="s2">>.+?)"</span> <span class="o">%</span> <span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">pattern_regex_string</span><span class="p">)</span>
|
||||
<span class="k">lambda</span> <span class="n">m</span><span class="p">:</span> <span class="s2">"(?P<arg</span><span class="si">%s</span><span class="s2">>.+?)"</span> <span class="o">%</span> <span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">pattern_regex_string</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># we must account for a possible line break coming over the wire</span>
|
||||
<span class="n">pattern_regex_string</span> <span class="o">=</span> <span class="n">pattern_regex_string</span><span class="p">[:</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="sa">r</span><span class="s2">"(?:[\n\r]*?)\Z"</span>
|
||||
|
||||
|
|
@ -1551,8 +1549,9 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="n">match</span> <span class="o">=</span> <span class="n">template_regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">match</span><span class="p">:</span>
|
||||
<span class="n">matchdict</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">value</span> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">match</span><span class="o">.</span><span class="n">groupdict</span><span class="p">()</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
|
||||
<span class="n">matchdict</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">key</span><span class="p">:</span> <span class="n">value</span> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="s2">""</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">match</span><span class="o">.</span><span class="n">groupdict</span><span class="p">()</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="p">}</span>
|
||||
<span class="k">return</span> <span class="kc">True</span><span class="p">,</span> <span class="n">outtemplate</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="n">matchdict</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">False</span><span class="p">,</span> <span class="n">string</span></div>
|
||||
|
||||
|
|
@ -1655,9 +1654,11 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">nick_regex</span><span class="p">,</span> <span class="n">nick_template</span> <span class="o">=</span> <span class="n">initialize_nick_templates</span><span class="p">(</span>
|
||||
<span class="n">pattern</span><span class="p">,</span> <span class="n">replacement</span><span class="p">,</span> <span class="n">pattern_is_regex</span><span class="o">=</span><span class="n">pattern_is_regex</span><span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="p">(</span><span class="n">nick_regex</span><span class="p">,</span> <span class="n">nick_template</span><span class="p">,</span> <span class="n">pattern</span><span class="p">,</span> <span class="n">replacement</span><span class="p">),</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="n">category</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
<span class="n">pattern</span><span class="p">,</span> <span class="n">replacement</span><span class="p">,</span> <span class="n">pattern_is_regex</span><span class="o">=</span><span class="n">pattern_is_regex</span>
|
||||
<span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">add</span><span class="p">(</span>
|
||||
<span class="n">pattern</span><span class="p">,</span> <span class="p">(</span><span class="n">nick_regex</span><span class="p">,</span> <span class="n">nick_template</span><span class="p">,</span> <span class="n">pattern</span><span class="p">,</span> <span class="n">replacement</span><span class="p">),</span> <span class="n">category</span><span class="o">=</span><span class="n">category</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="NickHandler.remove"><a class="viewcode-back" href="../../../api/evennia.typeclasses.attributes.html#evennia.typeclasses.attributes.NickHandler.remove">[docs]</a> <span class="k">def</span> <span class="nf">remove</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"inputline"</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
|
|||
|
|
@ -556,7 +556,8 @@
|
|||
<span class="n">typeclass</span><span class="o">=</span><span class="n">F</span><span class="p">(</span><span class="s2">"db_typeclass_path"</span><span class="p">),</span>
|
||||
<span class="c1"># Calculate this class' percentage of total composition</span>
|
||||
<span class="n">percent</span><span class="o">=</span><span class="n">ExpressionWrapper</span><span class="p">(</span>
|
||||
<span class="p">((</span><span class="n">F</span><span class="p">(</span><span class="s2">"count"</span><span class="p">)</span> <span class="o">/</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">count</span><span class="p">()))</span> <span class="o">*</span> <span class="mf">100.0</span><span class="p">),</span> <span class="n">output_field</span><span class="o">=</span><span class="n">FloatField</span><span class="p">(),</span>
|
||||
<span class="p">((</span><span class="n">F</span><span class="p">(</span><span class="s2">"count"</span><span class="p">)</span> <span class="o">/</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">count</span><span class="p">()))</span> <span class="o">*</span> <span class="mf">100.0</span><span class="p">),</span>
|
||||
<span class="n">output_field</span><span class="o">=</span><span class="n">FloatField</span><span class="p">(),</span>
|
||||
<span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">values</span><span class="p">(</span><span class="s2">"typeclass"</span><span class="p">,</span> <span class="s2">"count"</span><span class="p">,</span> <span class="s2">"percent"</span><span class="p">)</span>
|
||||
|
|
@ -792,11 +793,7 @@
|
|||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> Annotated queryset.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="nb">super</span><span class="p">()</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_typeclass_path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">annotate</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_typeclass_path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">path</span><span class="p">)</span><span class="o">.</span><span class="n">annotate</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">values</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -808,11 +805,7 @@
|
|||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> Queryset of values dictionaries, just filtered by typeclass first.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="nb">super</span><span class="p">()</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_typeclass_path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">values</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_typeclass_path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">path</span><span class="p">)</span><span class="o">.</span><span class="n">values</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">values_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -824,11 +817,7 @@
|
|||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> Queryset of value_list tuples, just filtered by typeclass first.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="nb">super</span><span class="p">()</span>
|
||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_typeclass_path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">values_list</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_typeclass_path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">path</span><span class="p">)</span><span class="o">.</span><span class="n">values_list</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_subclasses</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="bp">cls</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@
|
|||
<span class="n">max_length</span><span class="o">=</span><span class="mi">255</span><span class="p">,</span>
|
||||
<span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">help_text</span><span class="o">=</span><span class="s2">"this defines what 'type' of entity this is. This variable holds "</span>
|
||||
<span class="s2">"a Python path to a module with a valid Evennia Typeclass."</span><span class="p">,</span>
|
||||
<span class="s2">"a Python path to a module with a valid Evennia Typeclass."</span><span class="p">,</span>
|
||||
<span class="n">db_index</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># Creation date. This is not changed once the object is created.</span>
|
||||
|
|
@ -265,19 +265,19 @@
|
|||
<span class="s2">"locks"</span><span class="p">,</span>
|
||||
<span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">help_text</span><span class="o">=</span><span class="s2">"locks limit access to an entity. A lock is defined as a 'lock string' "</span>
|
||||
<span class="s2">"on the form 'type:lockfunctions', defining what functionality is locked and "</span>
|
||||
<span class="s2">"how to determine access. Not defining a lock means no access is granted."</span><span class="p">,</span>
|
||||
<span class="s2">"on the form 'type:lockfunctions', defining what functionality is locked and "</span>
|
||||
<span class="s2">"how to determine access. Not defining a lock means no access is granted."</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="c1"># many2many relationships</span>
|
||||
<span class="n">db_attributes</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span>
|
||||
<span class="n">Attribute</span><span class="p">,</span>
|
||||
<span class="n">help_text</span><span class="o">=</span><span class="s2">"attributes on this object. An attribute can hold any pickle-able "</span>
|
||||
<span class="s2">"python object (see docs for special cases)."</span><span class="p">,</span>
|
||||
<span class="s2">"python object (see docs for special cases)."</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">db_tags</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span>
|
||||
<span class="n">Tag</span><span class="p">,</span>
|
||||
<span class="n">help_text</span><span class="o">=</span><span class="s2">"tags on this object. Tags are simple string markers to identify, "</span>
|
||||
<span class="s2">"group and alias objects."</span><span class="p">,</span>
|
||||
<span class="s2">"group and alias objects."</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Database manager</span>
|
||||
|
|
@ -527,6 +527,14 @@
|
|||
<span class="c1"># Object manipulation methods</span>
|
||||
<span class="c1">#</span>
|
||||
|
||||
<div class="viewcode-block" id="TypedObject.at_init"><a class="viewcode-back" href="../../../api/evennia.typeclasses.models.html#evennia.typeclasses.models.TypedObject.at_init">[docs]</a> <span class="k">def</span> <span class="nf">at_init</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called when this object is loaded into cache. This is more reliable</span>
|
||||
<span class="sd"> than to override `__init__`.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">pass</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TypedObject.search"><a class="viewcode-back" href="../../../api/evennia.typeclasses.models.html#evennia.typeclasses.models.TypedObject.search">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">search</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
|
|||
|
|
@ -482,7 +482,7 @@
|
|||
<span class="sd"> Strip explicitly ansi line breaks and tabs.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsafe_tokens</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s1">''</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span></div>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsafe_tokens</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ANSIParser.parse_ansi"><a class="viewcode-back" href="../../../api/evennia.utils.ansi.html#evennia.utils.ansi.ANSIParser.parse_ansi">[docs]</a> <span class="k">def</span> <span class="nf">parse_ansi</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">strip_ansi</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">xterm256</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">mxp</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -1040,10 +1040,10 @@
|
|||
<span class="k">return</span> <span class="n">ANSIString</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_raw_string</span><span class="p">[</span><span class="n">slc</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="n">slc</span><span class="o">.</span><span class="n">start</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="c1"># this is a [:x] slice</span>
|
||||
<span class="k">return</span> <span class="n">ANSIString</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_raw_string</span><span class="p">[:</span><span class="n">char_indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">]])</span>
|
||||
<span class="k">return</span> <span class="n">ANSIString</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_raw_string</span><span class="p">[:</span> <span class="n">char_indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">]])</span>
|
||||
<span class="k">if</span> <span class="n">slc</span><span class="o">.</span><span class="n">stop</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="c1"># a [x:] slice</span>
|
||||
<span class="k">return</span> <span class="n">ANSIString</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_raw_string</span><span class="p">[</span><span class="n">char_indexes</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:])</span>
|
||||
<span class="k">return</span> <span class="n">ANSIString</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_raw_string</span><span class="p">[</span><span class="n">char_indexes</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span> <span class="p">:])</span>
|
||||
<span class="k">return</span> <span class="n">ANSIString</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="bp">self</span><span class="p">[</span><span class="n">slc</span><span class="o">.</span><span class="n">start</span> <span class="ow">or</span> <span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">_raw_string</span>
|
||||
|
|
@ -1146,7 +1146,7 @@
|
|||
<span class="n">current_index</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">section</span> <span class="ow">in</span> <span class="n">parent_result</span><span class="p">:</span>
|
||||
<span class="n">result</span> <span class="o">+=</span> <span class="p">(</span><span class="bp">self</span><span class="p">[</span><span class="n">current_index</span><span class="p">:</span> <span class="n">current_index</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">section</span><span class="p">)],)</span>
|
||||
<span class="n">result</span> <span class="o">+=</span> <span class="p">(</span><span class="bp">self</span><span class="p">[</span><span class="n">current_index</span> <span class="p">:</span> <span class="n">current_index</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">section</span><span class="p">)],)</span>
|
||||
<span class="n">current_index</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="n">section</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">result</span></div>
|
||||
|
||||
|
|
@ -1266,7 +1266,7 @@
|
|||
<span class="n">start</span> <span class="o">=</span> <span class="nb">next</span> <span class="o">+</span> <span class="n">bylen</span>
|
||||
<span class="n">maxsplit</span> <span class="o">-=</span> <span class="mi">1</span> <span class="c1"># NB. if it's already < 0, it stays < 0</span>
|
||||
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="p">[</span><span class="n">start</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">)])</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="p">[</span><span class="n">start</span> <span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">)])</span>
|
||||
<span class="k">if</span> <span class="n">drop_spaces</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">part</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">res</span> <span class="k">if</span> <span class="n">part</span> <span class="o">!=</span> <span class="s2">""</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">res</span></div>
|
||||
|
|
@ -1309,7 +1309,7 @@
|
|||
<span class="k">if</span> <span class="nb">next</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">break</span>
|
||||
<span class="c1"># Get character codes after the index as well.</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="p">[</span><span class="nb">next</span> <span class="o">+</span> <span class="n">bylen</span><span class="p">:</span> <span class="n">end</span><span class="p">])</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="p">[</span><span class="nb">next</span> <span class="o">+</span> <span class="n">bylen</span> <span class="p">:</span> <span class="n">end</span><span class="p">])</span>
|
||||
<span class="n">end</span> <span class="o">=</span> <span class="nb">next</span>
|
||||
<span class="n">maxsplit</span> <span class="o">-=</span> <span class="mi">1</span> <span class="c1"># NB. if it's already < 0, it stays < 0</span>
|
||||
|
||||
|
|
@ -1363,7 +1363,7 @@
|
|||
<span class="n">ic</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
<span class="n">ir2</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
<span class="n">rstripped</span> <span class="o">=</span> <span class="n">rstripped</span><span class="p">[::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">ANSIString</span><span class="p">(</span><span class="n">lstripped</span> <span class="o">+</span> <span class="n">raw</span><span class="p">[</span><span class="n">ir1</span><span class="p">:</span> <span class="n">ir2</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">rstripped</span><span class="p">)</span></div>
|
||||
<span class="k">return</span> <span class="n">ANSIString</span><span class="p">(</span><span class="n">lstripped</span> <span class="o">+</span> <span class="n">raw</span><span class="p">[</span><span class="n">ir1</span> <span class="p">:</span> <span class="n">ir2</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">rstripped</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ANSIString.lstrip"><a class="viewcode-back" href="../../../api/evennia.utils.ansi.html#evennia.utils.ansi.ANSIString.lstrip">[docs]</a> <span class="k">def</span> <span class="nf">lstrip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">chars</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -1482,7 +1482,7 @@
|
|||
<span class="n">start</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">end</span> <span class="o">=</span> <span class="n">char</span><span class="o">.</span><span class="n">_char_indexes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">prefix</span> <span class="o">=</span> <span class="n">char</span><span class="o">.</span><span class="n">_raw_string</span><span class="p">[</span><span class="n">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span>
|
||||
<span class="n">postfix</span> <span class="o">=</span> <span class="n">char</span><span class="o">.</span><span class="n">_raw_string</span><span class="p">[</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:]</span>
|
||||
<span class="n">postfix</span> <span class="o">=</span> <span class="n">char</span><span class="o">.</span><span class="n">_raw_string</span><span class="p">[</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span> <span class="p">:]</span>
|
||||
<span class="n">line</span> <span class="o">=</span> <span class="n">char</span><span class="o">.</span><span class="n">_clean_string</span> <span class="o">*</span> <span class="n">amount</span>
|
||||
<span class="n">code_indexes</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">))]</span>
|
||||
<span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -176,11 +176,12 @@
|
|||
|
||||
<span class="n">typeclass</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">typeclass_storage</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="n">script</span> <span class="o">=</span> <span class="n">typeclass</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
||||
<span class="n">db_key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">db_account__isnull</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">db_obj__isnull</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
|
||||
<span class="n">db_key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">db_account__isnull</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">db_obj__isnull</span><span class="o">=</span><span class="kc">True</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
|
||||
|
||||
<span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">loaded_data</span><span class="p">[</span><span class="n">key</span><span class="p">]}</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'key'</span><span class="p">]</span> <span class="o">=</span> <span class="n">key</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'persistent'</span><span class="p">]</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'persistent'</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"key"</span><span class="p">]</span> <span class="o">=</span> <span class="n">key</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"persistent"</span><span class="p">]</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"persistent"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
|
||||
<span class="n">compare_hash</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">dumps</span><span class="p">(</span><span class="n">kwargs</span><span class="p">,</span> <span class="n">protocol</span><span class="o">=</span><span class="mi">4</span><span class="p">))</span>
|
||||
|
||||
|
|
@ -188,8 +189,9 @@
|
|||
<span class="n">script_hash</span> <span class="o">=</span> <span class="n">script</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"global_script_settings"</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"settings_hash"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">script_hash</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="c1"># legacy - store the hash anew and assume no change</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"global_script_settings"</span><span class="p">,</span> <span class="n">compare_hash</span><span class="p">,</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="s2">"settings_hash"</span><span class="p">)</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span>
|
||||
<span class="s2">"global_script_settings"</span><span class="p">,</span> <span class="n">compare_hash</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"settings_hash"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">script_hash</span> <span class="o">!=</span> <span class="n">compare_hash</span><span class="p">:</span>
|
||||
<span class="c1"># wipe the old version and create anew</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"GLOBAL_SCRIPTS: Settings changed for </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">typeclass</span><span class="si">}</span><span class="s2">)."</span><span class="p">)</span>
|
||||
|
|
@ -206,8 +208,7 @@
|
|||
<span class="k">return</span> <span class="kc">None</span>
|
||||
|
||||
<span class="c1"># store a hash representation of the setup</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"_global_script_settings"</span><span class="p">,</span>
|
||||
<span class="n">compare_hash</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"settings_hash"</span><span class="p">)</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"_global_script_settings"</span><span class="p">,</span> <span class="n">compare_hash</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"settings_hash"</span><span class="p">)</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">script</span>
|
||||
|
|
@ -242,7 +243,8 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">typeclass_storage</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">typeclass</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"GlobalScriptContainer could not start import global script </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span></div>
|
||||
<span class="sa">f</span><span class="s2">"GlobalScriptContainer could not start import global script </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">."</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="GlobalScriptContainer.get"><a class="viewcode-back" href="../../../api/evennia.utils.containers.html#evennia.utils.containers.GlobalScriptContainer.get">[docs]</a> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
|
|||
|
|
@ -433,7 +433,7 @@
|
|||
<span class="nd">@_save</span>
|
||||
<span class="k">def</span> <span class="nf">rotate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="o">.</span><span class="n">rotate</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="nd">@_save</span>
|
||||
<span class="k">def</span> <span class="nf">remove</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -106,90 +106,104 @@
|
|||
<span class="c1">#</span>
|
||||
<span class="c1"># -------------------------------------------------------------</span>
|
||||
|
||||
<span class="n">_HELP_TEXT</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="s2"> <txt> - any non-command is appended to the end of the buffer.</span>
|
||||
<span class="s2"> : <l> - view buffer or only line(s) <l></span>
|
||||
<span class="s2"> :: <l> - raw-view buffer or only line(s) <l></span>
|
||||
<span class="s2"> ::: - escape - enter ':' as the only character on the line.</span>
|
||||
<span class="s2"> :h - this help.</span>
|
||||
<span class="n">_HELP_TEXT</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> <txt> - any non-command is appended to the end of the buffer.</span>
|
||||
<span class="sd"> : <l> - view buffer or only line(s) <l></span>
|
||||
<span class="sd"> :: <l> - raw-view buffer or only line(s) <l></span>
|
||||
<span class="sd"> ::: - escape - enter ':' as the only character on the line.</span>
|
||||
<span class="sd"> :h - this help.</span>
|
||||
|
||||
<span class="s2"> :w - save the buffer (don't quit)</span>
|
||||
<span class="s2"> :wq - save buffer and quit</span>
|
||||
<span class="s2"> :q - quit (will be asked to save if buffer was changed)</span>
|
||||
<span class="s2"> :q! - quit without saving, no questions asked</span>
|
||||
<span class="sd"> :w - save the buffer (don't quit)</span>
|
||||
<span class="sd"> :wq - save buffer and quit</span>
|
||||
<span class="sd"> :q - quit (will be asked to save if buffer was changed)</span>
|
||||
<span class="sd"> :q! - quit without saving, no questions asked</span>
|
||||
|
||||
<span class="s2"> :u - (undo) step backwards in undo history</span>
|
||||
<span class="s2"> :uu - (redo) step forward in undo history</span>
|
||||
<span class="s2"> :UU - reset all changes back to initial state</span>
|
||||
<span class="sd"> :u - (undo) step backwards in undo history</span>
|
||||
<span class="sd"> :uu - (redo) step forward in undo history</span>
|
||||
<span class="sd"> :UU - reset all changes back to initial state</span>
|
||||
|
||||
<span class="s2"> :dd <l> - delete last line or line(s) <l></span>
|
||||
<span class="s2"> :dw <l> <w> - delete word or regex <w> in entire buffer or on line <l></span>
|
||||
<span class="s2"> :DD - clear entire buffer</span>
|
||||
<span class="sd"> :dd <l> - delete last line or line(s) <l></span>
|
||||
<span class="sd"> :dw <l> <w> - delete word or regex <w> in entire buffer or on line <l></span>
|
||||
<span class="sd"> :DD - clear entire buffer</span>
|
||||
|
||||
<span class="s2"> :y <l> - yank (copy) line(s) <l> to the copy buffer</span>
|
||||
<span class="s2"> :x <l> - cut line(s) <l> and store it in the copy buffer</span>
|
||||
<span class="s2"> :p <l> - put (paste) previously copied line(s) directly after <l></span>
|
||||
<span class="s2"> :i <l> <txt> - insert new text <txt> at line <l>. Old line will move down</span>
|
||||
<span class="s2"> :r <l> <txt> - replace line <l> with text <txt></span>
|
||||
<span class="s2"> :I <l> <txt> - insert text at the beginning of line <l></span>
|
||||
<span class="s2"> :A <l> <txt> - append text after the end of line <l></span>
|
||||
<span class="sd"> :y <l> - yank (copy) line(s) <l> to the copy buffer</span>
|
||||
<span class="sd"> :x <l> - cut line(s) <l> and store it in the copy buffer</span>
|
||||
<span class="sd"> :p <l> - put (paste) previously copied line(s) directly after <l></span>
|
||||
<span class="sd"> :i <l> <txt> - insert new text <txt> at line <l>. Old line will move down</span>
|
||||
<span class="sd"> :r <l> <txt> - replace line <l> with text <txt></span>
|
||||
<span class="sd"> :I <l> <txt> - insert text at the beginning of line <l></span>
|
||||
<span class="sd"> :A <l> <txt> - append text after the end of line <l></span>
|
||||
|
||||
<span class="s2"> :s <l> <w> <txt> - search/replace word or regex <w> in buffer or on line <l></span>
|
||||
<span class="sd"> :s <l> <w> <txt> - search/replace word or regex <w> in buffer or on line <l></span>
|
||||
|
||||
<span class="s2"> :j <l> <w> - justify buffer or line <l>. <w> is f, c, l or r. Default f (full)</span>
|
||||
<span class="s2"> :f <l> - flood-fill entire buffer or line <l>: Equivalent to :j left</span>
|
||||
<span class="s2"> :fi <l> - indent entire buffer or line <l></span>
|
||||
<span class="s2"> :fd <l> - de-indent entire buffer or line <l></span>
|
||||
<span class="sd"> :j <l> <w> - justify buffer or line <l>. <w> is f, c, l or r. Default f (full)</span>
|
||||
<span class="sd"> :f <l> - flood-fill entire buffer or line <l>: Equivalent to :j left</span>
|
||||
<span class="sd"> :fi <l> - indent entire buffer or line <l></span>
|
||||
<span class="sd"> :fd <l> - de-indent entire buffer or line <l></span>
|
||||
|
||||
<span class="s2"> :echo - turn echoing of the input on/off (helpful for some clients)</span>
|
||||
<span class="s2">"""</span><span class="p">)</span>
|
||||
<span class="sd"> :echo - turn echoing of the input on/off (helpful for some clients)</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">_HELP_LEGEND</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="s2"> Legend:</span>
|
||||
<span class="s2"> <l> - line number, like '5' or range, like '3:7'.</span>
|
||||
<span class="s2"> <w> - a single word, or multiple words with quotes around them.</span>
|
||||
<span class="s2"> <txt> - longer string, usually not needing quotes.</span>
|
||||
<span class="s2">"""</span><span class="p">)</span>
|
||||
<span class="n">_HELP_LEGEND</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Legend:</span>
|
||||
<span class="sd"> <l> - line number, like '5' or range, like '3:7'.</span>
|
||||
<span class="sd"> <w> - a single word, or multiple words with quotes around them.</span>
|
||||
<span class="sd"> <txt> - longer string, usually not needing quotes.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">_HELP_CODE</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="s2"> :! - Execute code buffer without saving</span>
|
||||
<span class="s2"> :< - Decrease the level of automatic indentation for the next lines</span>
|
||||
<span class="s2"> :> - Increase the level of automatic indentation for the next lines</span>
|
||||
<span class="s2"> := - Switch automatic indentation on/off</span>
|
||||
<span class="s2">"""</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="p">))</span>
|
||||
<span class="n">_HELP_CODE</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> :! - Execute code buffer without saving</span>
|
||||
<span class="sd"> :< - Decrease the level of automatic indentation for the next lines</span>
|
||||
<span class="sd"> :> - Increase the level of automatic indentation for the next lines</span>
|
||||
<span class="sd"> := - Switch automatic indentation on/off</span>
|
||||
<span class="sd">"""</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">_ERROR_LOADFUNC</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="si">{error}</span><span class="s2"></span>
|
||||
<span class="n">_ERROR_LOADFUNC</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">{error}</span>
|
||||
|
||||
<span class="s2">|rBuffer load function error. Could not load initial data.|n</span>
|
||||
<span class="s2">"""</span><span class="p">)</span>
|
||||
<span class="sd">|rBuffer load function error. Could not load initial data.|n</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">_ERROR_SAVEFUNC</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="si">{error}</span><span class="s2"></span>
|
||||
<span class="n">_ERROR_SAVEFUNC</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">{error}</span>
|
||||
|
||||
<span class="s2">|rSave function returned an error. Buffer not saved.|n</span>
|
||||
<span class="s2">"""</span><span class="p">)</span>
|
||||
<span class="sd">|rSave function returned an error. Buffer not saved.|n</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">_ERROR_NO_SAVEFUNC</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"|rNo save function defined. Buffer cannot be saved.|n"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">_MSG_SAVE_NO_CHANGE</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"No changes need saving"</span><span class="p">)</span>
|
||||
<span class="n">_DEFAULT_NO_QUITFUNC</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"Exited editor."</span><span class="p">)</span>
|
||||
|
||||
<span class="n">_ERROR_QUITFUNC</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="si">{error}</span><span class="s2"></span>
|
||||
<span class="n">_ERROR_QUITFUNC</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">{error}</span>
|
||||
|
||||
<span class="s2">|rQuit function gave an error. Skipping.|n</span>
|
||||
<span class="s2">"""</span><span class="p">)</span>
|
||||
<span class="sd">|rQuit function gave an error. Skipping.|n</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">_ERROR_PERSISTENT_SAVING</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span><span class="s2">"""</span>
|
||||
<span class="si">{error}</span><span class="s2"></span>
|
||||
<span class="n">_ERROR_PERSISTENT_SAVING</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">{error}</span>
|
||||
|
||||
<span class="s2">|rThe editor state could not be saved for persistent mode. Switching</span>
|
||||
<span class="s2">to non-persistent mode (which means the editor session won't survive</span>
|
||||
<span class="s2">an eventual server reload - so save often!)|n</span>
|
||||
<span class="s2">"""</span><span class="p">)</span>
|
||||
<span class="sd">|rThe editor state could not be saved for persistent mode. Switching</span>
|
||||
<span class="sd">to non-persistent mode (which means the editor session won't survive</span>
|
||||
<span class="sd">an eventual server reload - so save often!)|n</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">_TRACE_PERSISTENT_SAVING</span> <span class="o">=</span> <span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"EvEditor persistent-mode error. Commonly, this is because one or "</span>
|
||||
|
|
@ -564,11 +578,15 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">linerange</span><span class="p">:</span>
|
||||
<span class="n">lstart</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">lend</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cline</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Removed </span><span class="si">{arg1}</span><span class="s2"> for lines </span><span class="si">{l1}</span><span class="s2">-</span><span class="si">{l2}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">arg1</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">arg1</span><span class="p">,</span> <span class="n">l1</span><span class="o">=</span><span class="n">lstart</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">l2</span><span class="o">=</span><span class="n">lend</span> <span class="o">+</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Removed </span><span class="si">{arg1}</span><span class="s2"> for lines </span><span class="si">{l1}</span><span class="s2">-</span><span class="si">{l2}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">arg1</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">arg1</span><span class="p">,</span> <span class="n">l1</span><span class="o">=</span><span class="n">lstart</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">l2</span><span class="o">=</span><span class="n">lend</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Removed </span><span class="si">{arg1}</span><span class="s2"> for </span><span class="si">{line}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">arg1</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">arg1</span><span class="p">,</span> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span><span class="p">))</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Removed </span><span class="si">{arg1}</span><span class="s2"> for </span><span class="si">{line}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">arg1</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">arg1</span><span class="p">,</span> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">sarea</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">linebuffer</span><span class="p">[</span><span class="n">lstart</span><span class="p">:</span><span class="n">lend</span><span class="p">])</span>
|
||||
<span class="n">sarea</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="sa">r</span><span class="s2">"</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">arg1</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"'"</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s1">'"'</span><span class="p">),</span> <span class="s2">""</span><span class="p">,</span> <span class="n">sarea</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">MULTILINE</span><span class="p">)</span>
|
||||
<span class="n">buf</span> <span class="o">=</span> <span class="n">linebuffer</span><span class="p">[:</span><span class="n">lstart</span><span class="p">]</span> <span class="o">+</span> <span class="n">sarea</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> <span class="o">+</span> <span class="n">linebuffer</span><span class="p">[</span><span class="n">lend</span><span class="p">:]</span>
|
||||
|
|
@ -603,8 +621,11 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">buf</span> <span class="o">=</span> <span class="n">linebuffer</span><span class="p">[:</span><span class="n">lstart</span><span class="p">]</span> <span class="o">+</span> <span class="n">editor</span><span class="o">.</span><span class="n">_copy_buffer</span> <span class="o">+</span> <span class="n">linebuffer</span><span class="p">[</span><span class="n">lstart</span><span class="p">:]</span>
|
||||
<span class="n">editor</span><span class="o">.</span><span class="n">update_buffer</span><span class="p">(</span><span class="n">buf</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Pasted buffer </span><span class="si">{cbuf}</span><span class="s2"> to </span><span class="si">{line}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">cbuf</span><span class="o">=</span><span class="n">editor</span><span class="o">.</span><span class="n">_copy_buffer</span><span class="p">,</span> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span><span class="p">))</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Pasted buffer </span><span class="si">{cbuf}</span><span class="s2"> to </span><span class="si">{line}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">cbuf</span><span class="o">=</span><span class="n">editor</span><span class="o">.</span><span class="n">_copy_buffer</span><span class="p">,</span> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">cmd</span> <span class="o">==</span> <span class="s2">":i"</span><span class="p">:</span>
|
||||
<span class="c1"># :i <l> <txt> - insert new line</span>
|
||||
<span class="n">new_lines</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
|
@ -613,8 +634,11 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">buf</span> <span class="o">=</span> <span class="n">linebuffer</span><span class="p">[:</span><span class="n">lstart</span><span class="p">]</span> <span class="o">+</span> <span class="n">new_lines</span> <span class="o">+</span> <span class="n">linebuffer</span><span class="p">[</span><span class="n">lstart</span><span class="p">:]</span>
|
||||
<span class="n">editor</span><span class="o">.</span><span class="n">update_buffer</span><span class="p">(</span><span class="n">buf</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Inserted </span><span class="si">{num}</span><span class="s2"> new line(s) at </span><span class="si">{line}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">num</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">new_lines</span><span class="p">),</span> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span><span class="p">))</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Inserted </span><span class="si">{num}</span><span class="s2"> new line(s) at </span><span class="si">{line}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">num</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">new_lines</span><span class="p">),</span> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">cmd</span> <span class="o">==</span> <span class="s2">":r"</span><span class="p">:</span>
|
||||
<span class="c1"># :r <l> <txt> - replace lines</span>
|
||||
<span class="n">new_lines</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
|
@ -623,8 +647,11 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">buf</span> <span class="o">=</span> <span class="n">linebuffer</span><span class="p">[:</span><span class="n">lstart</span><span class="p">]</span> <span class="o">+</span> <span class="n">new_lines</span> <span class="o">+</span> <span class="n">linebuffer</span><span class="p">[</span><span class="n">lend</span><span class="p">:]</span>
|
||||
<span class="n">editor</span><span class="o">.</span><span class="n">update_buffer</span><span class="p">(</span><span class="n">buf</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Replaced </span><span class="si">{num}</span><span class="s2"> line(s) at </span><span class="si">{line}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">num</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">new_lines</span><span class="p">),</span> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span><span class="p">))</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Replaced </span><span class="si">{num}</span><span class="s2"> line(s) at </span><span class="si">{line}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">num</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">new_lines</span><span class="p">),</span> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">cmd</span> <span class="o">==</span> <span class="s2">":I"</span><span class="p">:</span>
|
||||
<span class="c1"># :I <l> <txt> - insert text at beginning of line(s) <l></span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">raw_string</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">editor</span><span class="o">.</span><span class="n">_codefunc</span><span class="p">:</span>
|
||||
|
|
@ -660,12 +687,14 @@
|
|||
<span class="n">lend</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cline</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Search-replaced </span><span class="si">{arg1}</span><span class="s2"> -> </span><span class="si">{arg2}</span><span class="s2"> for lines </span><span class="si">{l1}</span><span class="s2">-</span><span class="si">{l2}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">arg1</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">arg1</span><span class="p">,</span> <span class="n">arg2</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">arg2</span><span class="p">,</span> <span class="n">l1</span><span class="o">=</span><span class="n">lstart</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">l2</span><span class="o">=</span><span class="n">lend</span><span class="p">)</span>
|
||||
<span class="n">arg1</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">arg1</span><span class="p">,</span> <span class="n">arg2</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">arg2</span><span class="p">,</span> <span class="n">l1</span><span class="o">=</span><span class="n">lstart</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">l2</span><span class="o">=</span><span class="n">lend</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Search-replaced </span><span class="si">{arg1}</span><span class="s2"> -> </span><span class="si">{arg2}</span><span class="s2"> for </span><span class="si">{line}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">arg1</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">arg1</span><span class="p">,</span> <span class="n">arg2</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">arg2</span><span class="p">,</span> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span><span class="p">)</span>
|
||||
<span class="n">arg1</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">arg1</span><span class="p">,</span> <span class="n">arg2</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">arg2</span><span class="p">,</span> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">sarea</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">linebuffer</span><span class="p">[</span><span class="n">lstart</span><span class="p">:</span><span class="n">lend</span><span class="p">])</span>
|
||||
|
||||
|
|
@ -687,8 +716,7 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">linerange</span><span class="p">:</span>
|
||||
<span class="n">lstart</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">lend</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cline</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Flood filled lines </span><span class="si">{l1}</span><span class="s2">-</span><span class="si">{l2}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">l1</span><span class="o">=</span><span class="n">lstart</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">l2</span><span class="o">=</span><span class="n">lend</span><span class="p">))</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Flood filled lines </span><span class="si">{l1}</span><span class="s2">-</span><span class="si">{l2}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">l1</span><span class="o">=</span><span class="n">lstart</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">l2</span><span class="o">=</span><span class="n">lend</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Flood filled </span><span class="si">{line}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span><span class="p">))</span>
|
||||
<span class="n">fbuf</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">linebuffer</span><span class="p">[</span><span class="n">lstart</span><span class="p">:</span><span class="n">lend</span><span class="p">])</span>
|
||||
|
|
@ -720,11 +748,15 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">linerange</span><span class="p">:</span>
|
||||
<span class="n">lstart</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">lend</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cline</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">{align}</span><span class="s2">-justified lines </span><span class="si">{l1}</span><span class="s2">-</span><span class="si">{l2}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">align</span><span class="o">=</span><span class="n">align_name</span><span class="p">[</span><span class="n">align</span><span class="p">],</span> <span class="n">l1</span><span class="o">=</span><span class="n">lstart</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">l2</span><span class="o">=</span><span class="n">lend</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">{align}</span><span class="s2">-justified lines </span><span class="si">{l1}</span><span class="s2">-</span><span class="si">{l2}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">align</span><span class="o">=</span><span class="n">align_name</span><span class="p">[</span><span class="n">align</span><span class="p">],</span> <span class="n">l1</span><span class="o">=</span><span class="n">lstart</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">l2</span><span class="o">=</span><span class="n">lend</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">{align}</span><span class="s2">-justified </span><span class="si">{line}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">align</span><span class="o">=</span><span class="n">align_name</span><span class="p">[</span><span class="n">align</span><span class="p">],</span> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"</span><span class="si">{align}</span><span class="s2">-justified </span><span class="si">{line}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">align</span><span class="o">=</span><span class="n">align_name</span><span class="p">[</span><span class="n">align</span><span class="p">],</span> <span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">jbuf</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">linebuffer</span><span class="p">[</span><span class="n">lstart</span><span class="p">:</span><span class="n">lend</span><span class="p">])</span>
|
||||
<span class="n">jbuf</span> <span class="o">=</span> <span class="n">justify</span><span class="p">(</span><span class="n">jbuf</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="n">width</span><span class="p">,</span> <span class="n">align</span><span class="o">=</span><span class="n">align</span><span class="p">)</span>
|
||||
<span class="n">buf</span> <span class="o">=</span> <span class="n">linebuffer</span><span class="p">[:</span><span class="n">lstart</span><span class="p">]</span> <span class="o">+</span> <span class="n">jbuf</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> <span class="o">+</span> <span class="n">linebuffer</span><span class="p">[</span><span class="n">lend</span><span class="p">:]</span>
|
||||
|
|
@ -746,8 +778,11 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">linerange</span><span class="p">:</span>
|
||||
<span class="n">lstart</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">lend</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cline</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Removed left margin (dedented) lines </span><span class="si">{l1}</span><span class="s2">-</span><span class="si">{l2}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">l1</span><span class="o">=</span><span class="n">lstart</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">l2</span><span class="o">=</span><span class="n">lend</span><span class="p">))</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Removed left margin (dedented) lines </span><span class="si">{l1}</span><span class="s2">-</span><span class="si">{l2}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">l1</span><span class="o">=</span><span class="n">lstart</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">l2</span><span class="o">=</span><span class="n">lend</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Removed left margin (dedented) </span><span class="si">{line}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">line</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">lstr</span><span class="p">))</span>
|
||||
<span class="n">fbuf</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">linebuffer</span><span class="p">[</span><span class="n">lstart</span><span class="p">:</span><span class="n">lend</span><span class="p">])</span>
|
||||
|
|
@ -769,9 +804,11 @@
|
|||
<span class="n">editor</span><span class="o">.</span><span class="n">decrease_indent</span><span class="p">()</span>
|
||||
<span class="n">indent</span> <span class="o">=</span> <span class="n">editor</span><span class="o">.</span><span class="n">_indent</span>
|
||||
<span class="k">if</span> <span class="n">indent</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"Decreased indentation: new indentation is </span><span class="si">{indent}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">indent</span><span class="o">=</span><span class="n">indent</span><span class="p">))</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Decreased indentation: new indentation is </span><span class="si">{indent}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">indent</span><span class="o">=</span><span class="n">indent</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"|rManual indentation is OFF.|n Use := to turn it on."</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -782,9 +819,11 @@
|
|||
<span class="n">editor</span><span class="o">.</span><span class="n">increase_indent</span><span class="p">()</span>
|
||||
<span class="n">indent</span> <span class="o">=</span> <span class="n">editor</span><span class="o">.</span><span class="n">_indent</span>
|
||||
<span class="k">if</span> <span class="n">indent</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span>
|
||||
<span class="s2">"Increased indentation: new indentation is </span><span class="si">{indent}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">indent</span><span class="o">=</span><span class="n">indent</span><span class="p">))</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"Increased indentation: new indentation is </span><span class="si">{indent}</span><span class="s2">."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">indent</span><span class="o">=</span><span class="n">indent</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"|rManual indentation is OFF.|n Use := to turn it on."</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -951,9 +990,11 @@
|
|||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_loadfunc</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_caller</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|rBuffer is of type |w</span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="p">)</span><span class="si">}</span><span class="s2">)|r. "</span>
|
||||
<span class="s2">"Continuing, it is converted to a string "</span>
|
||||
<span class="s2">"(and will be saved as such)!|n"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"|rBuffer is of type |w</span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="p">)</span><span class="si">}</span><span class="s2">)|r. "</span>
|
||||
<span class="s2">"Continuing, it is converted to a string "</span>
|
||||
<span class="s2">"(and will be saved as such)!|n"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="n">to_str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">logger</span>
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue