From a355a90d891dbb048322b1547197569af35e81cc Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action
Date: Wed, 20 Sep 2023 21:05:42 +0000
Subject: [PATCH] Updated HTML docs.
---
docs/2.x/.buildinfo | 2 +-
docs/2.x/Coding/Changelog.html | 11 ++++++++++
docs/2.x/Coding/Coding-Overview.html | 1 +
.../contrib/tutorials/evadventure/ai.html | 15 ++++++++++---
.../2.x/_modules/evennia/objects/objects.html | 4 ++--
docs/2.x/_modules/evennia/utils/utils.html | 8 +++----
docs/2.x/_sources/Coding/Changelog.md.txt | 12 +++++++++++
.../api/evennia.commands.default.account.html | 4 ++--
.../api/evennia.commands.default.admin.html | 4 ++--
...evennia.commands.default.batchprocess.html | 4 ++--
.../evennia.commands.default.building.html | 8 +++----
.../api/evennia.commands.default.general.html | 16 +++++++-------
.../api/evennia.commands.default.system.html | 4 ++--
.../api/evennia.commands.default.tests.html | 2 +-
.../evennia.commands.default.unloggedin.html | 12 +++++------
....base_systems.email_login.email_login.html | 12 +++++------
...rib.full_systems.evscaperoom.commands.html | 20 +++++++++---------
...ia.contrib.game_systems.barter.barter.html | 4 ++--
...ontrib.game_systems.clothing.clothing.html | 4 ++--
...trib.grid.extended_room.extended_room.html | 4 ++--
...evennia.contrib.grid.xyzgrid.commands.html | 4 ++--
...evennia.contrib.rpg.rpsystem.rpsystem.html | 4 ++--
...utorials.evadventure.combat_turnbased.html | 4 ++--
...b.tutorials.evadventure.combat_twitch.html | 4 ++--
...ontrib.tutorials.evadventure.commands.html | 4 ++--
...ntrib.tutorials.red_button.red_button.html | 12 +++++------
...trib.tutorials.tutorial_world.objects.html | 16 +++++++-------
...ontrib.tutorials.tutorial_world.rooms.html | 8 +++----
...utils.git_integration.git_integration.html | 4 ++--
docs/2.x/api/evennia.utils.eveditor.html | 4 ++--
docs/2.x/api/evennia.utils.evmenu.html | 4 ++--
docs/2.x/api/evennia.utils.evmore.html | 4 ++--
docs/2.x/objects.inv | Bin 164538 -> 164572 bytes
docs/2.x/searchindex.js | 2 +-
34 files changed, 129 insertions(+), 96 deletions(-)
diff --git a/docs/2.x/.buildinfo b/docs/2.x/.buildinfo
index e515de6d62..3c000b1c0f 100644
--- a/docs/2.x/.buildinfo
+++ b/docs/2.x/.buildinfo
@@ -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: 8ee085903da246c2f35ab68d3066c695
+config: de5713337696ee1a216965e9ea2d6ce9
tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/2.x/Coding/Changelog.html b/docs/2.x/Coding/Changelog.html
index 3f1408f296..f44208f78b 100644
--- a/docs/2.x/Coding/Changelog.html
+++ b/docs/2.x/Coding/Changelog.html
@@ -66,6 +66,7 @@
- Changelog
+- Main branch
- Evennia 2.3.0
- Evennia 2.2.0
- Evennia 2.1.0
@@ -182,6 +183,16 @@
Changelog
+
+Main branch
+
+Fix: Missing recache step in ObjectSessionHandler (InspectorCaracal)
+Fix: Evennia is its own MSSP family now, so we should return that
+instead of ‘Custom’ (InspectorCaracal)
+Fix: Traceback when creating objects with initial nattributes
+(InspectorCaracal)
+
+
Evennia 2.3.0
Sept 3, 2023
diff --git a/docs/2.x/Coding/Coding-Overview.html b/docs/2.x/Coding/Coding-Overview.html
index affa1fdb54..c842eb3398 100644
--- a/docs/2.x/Coding/Coding-Overview.html
+++ b/docs/2.x/Coding/Coding-Overview.html
@@ -170,6 +170,7 @@ make your game, also if you never coded before.
- Changelog
+- Main branch
- Evennia 2.3.0
- Evennia 2.2.0
- Evennia 2.1.0
diff --git a/docs/2.x/_modules/evennia/contrib/tutorials/evadventure/ai.html b/docs/2.x/_modules/evennia/contrib/tutorials/evadventure/ai.html
index 805723cb81..fb183aaecb 100644
--- a/docs/2.x/_modules/evennia/contrib/tutorials/evadventure/ai.html
+++ b/docs/2.x/_modules/evennia/contrib/tutorials/evadventure/ai.html
@@ -210,7 +210,12 @@
"""
[docs] def __init__(self, obj):
-
self.obj = obj
+ self.obj = obj
+
+ if hasattr(self, "AI_STATES"):
+ # load AI dict from typeclass core if it exists - allows for setting it
+ # on the typeclass directly.
+ self.add_aidict(self.AI_STATES)
def __str__(self):
return f"AIHandler for {self.obj}. Current state: {self.state}"
@@ -242,7 +247,8 @@
object: Randomly chosen element from choices.
"""
- return random.choices(choices, odds)[0]
+ if choices:
+ return random.choices(choices, odds)[0]
@staticmethod
def _weighted_choice_dict(choices):
@@ -438,7 +444,10 @@
return
# perform the action
- getattr(self.obj, f"ai_{self.state}")(next_action)
+ try:
+ getattr(self.obj, f"ai_{self.state}")(next_action)
+ except AttributeError:
+ logger.log_err(f"AIHandler: {self.obj} has no ai_{self.state} method.")
diff --git a/docs/2.x/_modules/evennia/objects/objects.html b/docs/2.x/_modules/evennia/objects/objects.html
index 27520a975a..d56509f5b2 100644
--- a/docs/2.x/_modules/evennia/objects/objects.html
+++ b/docs/2.x/_modules/evennia/objects/objects.html
@@ -193,7 +193,7 @@
]
if None in sessions:
# this happens only if our cache has gone out of sync with the SessionHandler.
-
+ self._recache()
return self.get(sessid=sessid)
return sessions
@@ -1589,7 +1589,7 @@
self.attributes.batch_add(*cdict["attributes"])
if cdict.get("nattributes"):
# this should be a dict of nattrname:value
- for key, value in cdict["nattributes"]:
+ for key, value in cdict["nattributes"].items():
self.nattributes.add(key, value)
del self._createdict
diff --git a/docs/2.x/_modules/evennia/utils/utils.html b/docs/2.x/_modules/evennia/utils/utils.html
index f72f20385b..2570a858f0 100644
--- a/docs/2.x/_modules/evennia/utils/utils.html
+++ b/docs/2.x/_modules/evennia/utils/utils.html
@@ -113,6 +113,7 @@
from string import punctuation
from unicodedata import east_asian_width
+import evennia
from django.apps import apps
from django.conf import settings
from django.core.exceptions import ValidationError as DjangoValidationError
@@ -120,8 +121,6 @@
from django.utils import timezone
from django.utils.html import strip_tags
from django.utils.translation import gettext as _
-
-import evennia
from evennia.utils import logger
from simpleeval import simple_eval
from twisted.internet import reactor, threads
@@ -1150,7 +1149,9 @@
"""
- if hasattr(evennia.SESSION_HANDLER, "server") and hasattr(evennia.SESSION_HANDLER.server, "services"):
+ if hasattr(evennia.SESSION_HANDLER, "server") and hasattr(
+ evennia.SESSION_HANDLER.server, "services"
+ ):
server = evennia.SESSION_HANDLER.server.services.namedServices
else:
# This function must be called from inside the evennia process.
@@ -2062,7 +2063,6 @@
ic = 0
row = ""
for ie, element in enumerate(elements):
-
wl = wls[ie]
lrow = display_len((row))
# debug = row.replace(" ", ".")
diff --git a/docs/2.x/_sources/Coding/Changelog.md.txt b/docs/2.x/_sources/Coding/Changelog.md.txt
index b1871540d5..d5f2b1c717 100644
--- a/docs/2.x/_sources/Coding/Changelog.md.txt
+++ b/docs/2.x/_sources/Coding/Changelog.md.txt
@@ -1,5 +1,17 @@
# Changelog
+## Main branch
+
+- [Fix][pull3267]: Missing recache step in ObjectSessionHandler (InspectorCaracal)
+- [Fix][pull3270]: Evennia is its own MSSP family now, so we should return that
+ instead of 'Custom' (InspectorCaracal)
+- [Fix][pull3274]: Traceback when creating objects with initial nattributes
+ (InspectorCaracal)
+
+[pull3267]: https://github.com/evennia/evennia/pull/3267
+[pull3270]: https://github.com/evennia/evennia/pull/3270
+[pull3274]: https://github.com/evennia/evennia/pull/3274
+
## Evennia 2.3.0
Sept 3, 2023
diff --git a/docs/2.x/api/evennia.commands.default.account.html b/docs/2.x/api/evennia.commands.default.account.html
index af4cefee04..cc34d4484b 100644
--- a/docs/2.x/api/evennia.commands.default.account.html
+++ b/docs/2.x/api/evennia.commands.default.account.html
@@ -141,7 +141,7 @@ method. Otherwise all text will be returned to all connected sessions.
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -172,7 +172,7 @@ method. Otherwise all text will be returned to all connected sessions.
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look while out-of-character\n\n Usage:\n look\n\n Look in the ooc state.\n '}
+search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look while out-of-character\n\n Usage:\n look\n\n Look in the ooc state.\n '}
diff --git a/docs/2.x/api/evennia.commands.default.admin.html b/docs/2.x/api/evennia.commands.default.admin.html
index 7564dce65b..d19b4515c3 100644
--- a/docs/2.x/api/evennia.commands.default.admin.html
+++ b/docs/2.x/api/evennia.commands.default.admin.html
@@ -325,7 +325,7 @@ to accounts respectively.
-
-
aliases = ['pemit', 'remit']
+aliases = ['remit', 'pemit']
@@ -356,7 +356,7 @@ to accounts respectively.
-
-
search_index_entry = {'aliases': 'pemit remit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' pemit remit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}
+search_index_entry = {'aliases': 'remit pemit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' remit pemit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}
diff --git a/docs/2.x/api/evennia.commands.default.batchprocess.html b/docs/2.x/api/evennia.commands.default.batchprocess.html
index a5c8291f19..8f0552b75e 100644
--- a/docs/2.x/api/evennia.commands.default.batchprocess.html
+++ b/docs/2.x/api/evennia.commands.default.batchprocess.html
@@ -146,7 +146,7 @@ skipping, reloading etc.
-
-
aliases = ['batchcmd', 'batchcommand']
+aliases = ['batchcommand', 'batchcmd']
@@ -177,7 +177,7 @@ skipping, reloading etc.
-
-
search_index_entry = {'aliases': 'batchcmd batchcommand', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcmd batchcommand', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}
+search_index_entry = {'aliases': 'batchcommand batchcmd', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcommand batchcmd', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}
diff --git a/docs/2.x/api/evennia.commands.default.building.html b/docs/2.x/api/evennia.commands.default.building.html
index 47a0555b98..fdce263dd9 100644
--- a/docs/2.x/api/evennia.commands.default.building.html
+++ b/docs/2.x/api/evennia.commands.default.building.html
@@ -600,7 +600,7 @@ You can specify the /force switch to bypass this confirmation.
-
-
aliases = ['@delete', '@del']
+aliases = ['@del', '@delete']
@@ -641,7 +641,7 @@ You can specify the /force switch to bypass this confirmation.
-
-
search_index_entry = {'aliases': '@delete @del', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy delete del', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}
+search_index_entry = {'aliases': '@del @delete', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy del delete', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}
@@ -1353,7 +1353,7 @@ server settings.
-
-
aliases = ['@typeclasses', '@parent', '@swap', '@type', '@update']
+aliases = ['@type', '@typeclasses', '@update', '@parent', '@swap']
@@ -1384,7 +1384,7 @@ server settings.
-
-
search_index_entry = {'aliases': '@typeclasses @parent @swap @type @update', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass typeclasses parent swap type update', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}
+search_index_entry = {'aliases': '@type @typeclasses @update @parent @swap', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass type typeclasses update parent swap', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}
diff --git a/docs/2.x/api/evennia.commands.default.general.html b/docs/2.x/api/evennia.commands.default.general.html
index 8aa47dae0a..6ae3c4f18c 100644
--- a/docs/2.x/api/evennia.commands.default.general.html
+++ b/docs/2.x/api/evennia.commands.default.general.html
@@ -183,7 +183,7 @@ look *<account&g
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -214,7 +214,7 @@ look *<account&g
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}
+search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}
@@ -276,7 +276,7 @@ for everyone to use, you need build privileges and the alias command.
-
-
aliases = ['nickname', 'nicks']
+aliases = ['nicks', 'nickname']
@@ -308,7 +308,7 @@ for everyone to use, you need build privileges and the alias command.
-
-
search_index_entry = {'aliases': 'nickname nicks', 'category': 'general', 'key': 'nick', 'no_prefix': ' nickname nicks', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}
+search_index_entry = {'aliases': 'nicks nickname', 'category': 'general', 'key': 'nick', 'no_prefix': ' nicks nickname', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}
@@ -331,7 +331,7 @@ inv
-
-
aliases = ['inv', 'i']
+aliases = ['i', 'inv']
@@ -362,7 +362,7 @@ inv
-
-
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}
+search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}
@@ -606,7 +606,7 @@ placing it in their inventory.
-
-
aliases = ['"', "'"]
+aliases = ["'", '"']
@@ -637,7 +637,7 @@ placing it in their inventory.
-
-
search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}
+search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}
diff --git a/docs/2.x/api/evennia.commands.default.system.html b/docs/2.x/api/evennia.commands.default.system.html
index dc97c889a1..4f4b66b558 100644
--- a/docs/2.x/api/evennia.commands.default.system.html
+++ b/docs/2.x/api/evennia.commands.default.system.html
@@ -691,7 +691,7 @@ See |luhttps://ww
-
-
aliases = ['@task', '@delays']
+aliases = ['@delays', '@task']
@@ -737,7 +737,7 @@ to all the variables defined therein.
-
-
search_index_entry = {'aliases': '@task @delays', 'category': 'system', 'key': '@tasks', 'no_prefix': 'tasks task delays', 'tags': '', 'text': "\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n "}
+search_index_entry = {'aliases': '@delays @task', 'category': 'system', 'key': '@tasks', 'no_prefix': 'tasks delays task', 'tags': '', 'text': "\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n "}
diff --git a/docs/2.x/api/evennia.commands.default.tests.html b/docs/2.x/api/evennia.commands.default.tests.html
index ed71638360..26247b8df4 100644
--- a/docs/2.x/api/evennia.commands.default.tests.html
+++ b/docs/2.x/api/evennia.commands.default.tests.html
@@ -963,7 +963,7 @@ main test suite started with
Test the batch processor.
-
-
red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpi5od0r8z/b3ee9d053deda795640c07a4d7f756ca8e650b19/evennia/contrib/tutorials/red_button/red_button.py'>
+red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpks0i109c/bf8620887b4407fad850e87c9342e0b8f72338e8/evennia/contrib/tutorials/red_button/red_button.py'>
diff --git a/docs/2.x/api/evennia.commands.default.unloggedin.html b/docs/2.x/api/evennia.commands.default.unloggedin.html
index 23481491a8..3aee010a6a 100644
--- a/docs/2.x/api/evennia.commands.default.unloggedin.html
+++ b/docs/2.x/api/evennia.commands.default.unloggedin.html
@@ -130,7 +130,7 @@ connect “account name” “pass word”
-
-
aliases = ['conn', 'con', 'co']
+aliases = ['co', 'con', 'conn']
@@ -165,7 +165,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'conn con co', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn con co', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}
+search_index_entry = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con conn', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}
@@ -189,7 +189,7 @@ create “account name” “pass word”
-
-
aliases = ['cre', 'cr']
+aliases = ['cr', 'cre']
@@ -226,7 +226,7 @@ create “account name” “pass word”
-
-
search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}
+search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}
@@ -250,7 +250,7 @@ version is a bit more complicated.
-
-
aliases = ['qu', 'q']
+aliases = ['q', 'qu']
@@ -276,7 +276,7 @@ version is a bit more complicated.
-
-
search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}
+search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}
diff --git a/docs/2.x/api/evennia.contrib.base_systems.email_login.email_login.html b/docs/2.x/api/evennia.contrib.base_systems.email_login.email_login.html
index 90dd15877e..a6c39ef954 100644
--- a/docs/2.x/api/evennia.contrib.base_systems.email_login.email_login.html
+++ b/docs/2.x/api/evennia.contrib.base_systems.email_login.email_login.html
@@ -147,7 +147,7 @@ the module given by settings.CONNECTION_SCREEN_MODULE.
-
-
aliases = ['conn', 'con', 'co']
+aliases = ['co', 'con', 'conn']
@@ -177,7 +177,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'conn con co', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn con co', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}
+search_index_entry = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con conn', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}
@@ -199,7 +199,7 @@ there is no object yet before the account has logged in)
-
-
aliases = ['cre', 'cr']
+aliases = ['cr', 'cre']
@@ -235,7 +235,7 @@ name enclosed in quotes:
-
-
search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}
+search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}
@@ -254,7 +254,7 @@ version is a bit more complicated.
-
-
aliases = ['qu', 'q']
+aliases = ['q', 'qu']
@@ -280,7 +280,7 @@ version is a bit more complicated.
-
-
search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}
+search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}
diff --git a/docs/2.x/api/evennia.contrib.full_systems.evscaperoom.commands.html b/docs/2.x/api/evennia.contrib.full_systems.evscaperoom.commands.html
index cf1fdd12ec..401e95814a 100644
--- a/docs/2.x/api/evennia.contrib.full_systems.evscaperoom.commands.html
+++ b/docs/2.x/api/evennia.contrib.full_systems.evscaperoom.commands.html
@@ -219,7 +219,7 @@ the operation will be general or on the room.
-
-
aliases = ['quit', 'abort', 'q', 'chicken out']
+aliases = ['chicken out', 'q', 'quit', 'abort']
@@ -243,7 +243,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'quit abort q chicken out', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' quit abort q chicken out', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}
+search_index_entry = {'aliases': 'chicken out q quit abort', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' chicken out q quit abort', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}
@@ -264,7 +264,7 @@ set in self.parse())
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -298,7 +298,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'evscaperoom', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n Look at the room, an object or the currently focused object\n\n Usage:\n look [obj]\n\n '}
+search_index_entry = {'aliases': 'ls l', 'category': 'evscaperoom', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n Look at the room, an object or the currently focused object\n\n Usage:\n look [obj]\n\n '}
@@ -379,7 +379,7 @@ shout
-
-
aliases = ['whisper', ';', 'shout']
+aliases = [';', 'shout', 'whisper']
@@ -408,7 +408,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'whisper ; shout', 'category': 'general', 'key': 'say', 'no_prefix': ' whisper ; shout', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}
+search_index_entry = {'aliases': '; shout whisper', 'category': 'general', 'key': 'say', 'no_prefix': ' ; shout whisper', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}
@@ -498,7 +498,7 @@ looks and what actions is available.
-
-
aliases = ['unfocus', 'e', 'examine', 'ex']
+aliases = ['examine', 'e', 'ex', 'unfocus']
@@ -527,7 +527,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'unfocus e examine ex', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' unfocus e examine ex', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}
+search_index_entry = {'aliases': 'examine e ex unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' examine e ex unfocus', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}
@@ -589,7 +589,7 @@ set in self.parse())
-
-
aliases = ['inv', 'i', 'give', 'inventory']
+aliases = ['i', 'inv', 'inventory', 'give']
@@ -613,7 +613,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'inv i give inventory', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inv i give inventory', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}
+search_index_entry = {'aliases': 'i inv inventory give', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' i inv inventory give', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}
diff --git a/docs/2.x/api/evennia.contrib.game_systems.barter.barter.html b/docs/2.x/api/evennia.contrib.game_systems.barter.barter.html
index ebcc660be2..6b461fdbfa 100644
--- a/docs/2.x/api/evennia.contrib.game_systems.barter.barter.html
+++ b/docs/2.x/api/evennia.contrib.game_systems.barter.barter.html
@@ -753,7 +753,7 @@ try to influence the other part in the deal.
-
-
aliases = ['deal', 'offers']
+aliases = ['offers', 'deal']
@@ -779,7 +779,7 @@ try to influence the other part in the deal.
-
-
search_index_entry = {'aliases': 'deal offers', 'category': 'trading', 'key': 'status', 'no_prefix': ' deal offers', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}
+search_index_entry = {'aliases': 'offers deal', 'category': 'trading', 'key': 'status', 'no_prefix': ' offers deal', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}
diff --git a/docs/2.x/api/evennia.contrib.game_systems.clothing.clothing.html b/docs/2.x/api/evennia.contrib.game_systems.clothing.clothing.html
index 7c96a8a017..2c3865a810 100644
--- a/docs/2.x/api/evennia.contrib.game_systems.clothing.clothing.html
+++ b/docs/2.x/api/evennia.contrib.game_systems.clothing.clothing.html
@@ -630,7 +630,7 @@ inv
-
-
aliases = ['inv', 'i']
+aliases = ['i', 'inv']
@@ -661,7 +661,7 @@ inv
-
-
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}
+search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}
diff --git a/docs/2.x/api/evennia.contrib.grid.extended_room.extended_room.html b/docs/2.x/api/evennia.contrib.grid.extended_room.extended_room.html
index 44aed4cdec..f161a9924f 100644
--- a/docs/2.x/api/evennia.contrib.grid.extended_room.extended_room.html
+++ b/docs/2.x/api/evennia.contrib.grid.extended_room.extended_room.html
@@ -651,7 +651,7 @@ look *<account&g
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -671,7 +671,7 @@ look *<account&g
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look\n\n Usage:\n look\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects in your vicinity.\n '}
+search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look\n\n Usage:\n look\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects in your vicinity.\n '}
diff --git a/docs/2.x/api/evennia.contrib.grid.xyzgrid.commands.html b/docs/2.x/api/evennia.contrib.grid.xyzgrid.commands.html
index 652a2fef7e..f92fe04007 100644
--- a/docs/2.x/api/evennia.contrib.grid.xyzgrid.commands.html
+++ b/docs/2.x/api/evennia.contrib.grid.xyzgrid.commands.html
@@ -430,7 +430,7 @@ there is no room above/below you, your movement will fail.
-
-
aliases = ['fly', 'dive']
+aliases = ['dive', 'fly']
@@ -453,7 +453,7 @@ to all the variables defined therein.
-
-
search_index_entry = {'aliases': 'fly dive', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' fly dive', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}
+search_index_entry = {'aliases': 'dive fly', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' dive fly', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}
diff --git a/docs/2.x/api/evennia.contrib.rpg.rpsystem.rpsystem.html b/docs/2.x/api/evennia.contrib.rpg.rpsystem.rpsystem.html
index 354dd6d3af..797bc2810d 100644
--- a/docs/2.x/api/evennia.contrib.rpg.rpsystem.rpsystem.html
+++ b/docs/2.x/api/evennia.contrib.rpg.rpsystem.rpsystem.html
@@ -709,7 +709,7 @@ a different language.
-
-
aliases = ['"', "'"]
+aliases = ["'", '"']
@@ -740,7 +740,7 @@ a different language.
-
-
search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}
+search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}
diff --git a/docs/2.x/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html b/docs/2.x/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html
index 73fe4f65d0..5009392c4f 100644
--- a/docs/2.x/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html
+++ b/docs/2.x/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html
@@ -474,7 +474,7 @@ turn of combat, performing everyone’s actions in random order.
-
-
aliases = ['hit', 'turnbased combat']
+aliases = ['turnbased combat', 'hit']
@@ -520,7 +520,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'hit turnbased combat', 'category': 'general', 'key': 'attack', 'no_prefix': ' hit turnbased combat', 'tags': '', 'text': '\n Start or join combat.\n\n Usage:\n attack [<target>]\n\n '}
+search_index_entry = {'aliases': 'turnbased combat hit', 'category': 'general', 'key': 'attack', 'no_prefix': ' turnbased combat hit', 'tags': '', 'text': '\n Start or join combat.\n\n Usage:\n attack [<target>]\n\n '}
diff --git a/docs/2.x/api/evennia.contrib.tutorials.evadventure.combat_twitch.html b/docs/2.x/api/evennia.contrib.tutorials.evadventure.combat_twitch.html
index 9e80a493d0..6775e22af1 100644
--- a/docs/2.x/api/evennia.contrib.tutorials.evadventure.combat_twitch.html
+++ b/docs/2.x/api/evennia.contrib.tutorials.evadventure.combat_twitch.html
@@ -389,7 +389,7 @@ look *<account&g
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -409,7 +409,7 @@ look *<account&g
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}
+search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}
diff --git a/docs/2.x/api/evennia.contrib.tutorials.evadventure.commands.html b/docs/2.x/api/evennia.contrib.tutorials.evadventure.commands.html
index 380402d274..7142454385 100644
--- a/docs/2.x/api/evennia.contrib.tutorials.evadventure.commands.html
+++ b/docs/2.x/api/evennia.contrib.tutorials.evadventure.commands.html
@@ -200,7 +200,7 @@ self.args).
-
-
aliases = ['inv', 'i']
+aliases = ['i', 'inv']
@@ -224,7 +224,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}
+search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}
diff --git a/docs/2.x/api/evennia.contrib.tutorials.red_button.red_button.html b/docs/2.x/api/evennia.contrib.tutorials.red_button.red_button.html
index dc0ecb3306..7192fdd017 100644
--- a/docs/2.x/api/evennia.contrib.tutorials.red_button.red_button.html
+++ b/docs/2.x/api/evennia.contrib.tutorials.red_button.red_button.html
@@ -161,7 +161,7 @@ such as when closing the lid and un-blinding a character.
-
-
aliases = ['press button', 'press', 'push']
+aliases = ['push', 'press', 'press button']
@@ -190,7 +190,7 @@ check if the lid is open or closed.
-
-
search_index_entry = {'aliases': 'press button press push', 'category': 'general', 'key': 'push button', 'no_prefix': ' press button press push', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}
+search_index_entry = {'aliases': 'push press press button', 'category': 'general', 'key': 'push button', 'no_prefix': ' push press press button', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}
@@ -387,7 +387,7 @@ be mutually exclusive.
-
-
aliases = ['press button', 'press', 'push']
+aliases = ['push', 'press', 'press button']
@@ -416,7 +416,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'press button press push', 'category': 'general', 'key': 'push button', 'no_prefix': ' press button press push', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}
+search_index_entry = {'aliases': 'push press press button', 'category': 'general', 'key': 'push button', 'no_prefix': ' push press press button', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}
@@ -514,7 +514,7 @@ be mutually exclusive.
-
-
aliases = ['get', 'feel', 'l', 'examine', 'ex', 'listen']
+aliases = ['listen', 'examine', 'feel', 'ex', 'get', 'l']
@@ -540,7 +540,7 @@ be mutually exclusive.
-
-
search_index_entry = {'aliases': 'get feel l examine ex listen', 'category': 'general', 'key': 'look', 'no_prefix': ' get feel l examine ex listen', 'tags': '', 'text': "\n Looking around in darkness\n\n Usage:\n look <obj>\n\n ... not that there's much to see in the dark.\n\n "}
+search_index_entry = {'aliases': 'listen examine feel ex get l', 'category': 'general', 'key': 'look', 'no_prefix': ' listen examine feel ex get l', 'tags': '', 'text': "\n Looking around in darkness\n\n Usage:\n look <obj>\n\n ... not that there's much to see in the dark.\n\n "}
diff --git a/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.objects.html b/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.objects.html
index 29f197d0a1..e6562bade1 100644
--- a/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.objects.html
+++ b/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.objects.html
@@ -433,7 +433,7 @@ of the object. We overload it with our own version.
-
-
aliases = ['burn', 'light']
+aliases = ['light', 'burn']
@@ -460,7 +460,7 @@ to sit on a “lightable” object, we operate only on self.obj.
-
-
search_index_entry = {'aliases': 'burn light', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' burn light', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}
+search_index_entry = {'aliases': 'light burn', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' light burn', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}
@@ -564,7 +564,7 @@ shift green root up/down
-
-
aliases = ['pull', 'shiftroot', 'move', 'push']
+aliases = ['pull', 'push', 'move', 'shiftroot']
@@ -600,7 +600,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'pull shiftroot move push', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' pull shiftroot move push', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}
+search_index_entry = {'aliases': 'pull push move shiftroot', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' pull push move shiftroot', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}
@@ -617,7 +617,7 @@ yellow/green - horizontal roots
-
-
aliases = ['press button', 'push button', 'button']
+aliases = ['push button', 'button', 'press button']
@@ -643,7 +643,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'press button push button button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button push button button', 'tags': '', 'text': '\n Presses a button.\n '}
+search_index_entry = {'aliases': 'push button button press button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' push button button press button', 'tags': '', 'text': '\n Presses a button.\n '}
@@ -787,7 +787,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
aliases = ['chop', 'stab', 'fight', 'pierce', 'hit', 'defend', 'kill', 'slash', 'parry', 'bash', 'thrust']
+aliases = ['hit', 'slash', 'kill', 'pierce', 'stab', 'bash', 'thrust', 'chop', 'parry', 'fight', 'defend']
@@ -813,7 +813,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
search_index_entry = {'aliases': 'chop stab fight pierce hit defend kill slash parry bash thrust', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' chop stab fight pierce hit defend kill slash parry bash thrust', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}
+search_index_entry = {'aliases': 'hit slash kill pierce stab bash thrust chop parry fight defend', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' hit slash kill pierce stab bash thrust chop parry fight defend', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}
diff --git a/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.rooms.html b/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.rooms.html
index c10a8e41b1..824bd4312a 100644
--- a/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.rooms.html
+++ b/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.rooms.html
@@ -256,7 +256,7 @@ code except for adding in the details.
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -271,7 +271,7 @@ code except for adding in the details.
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n looks at the room and on details\n\n Usage:\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects\n in your vicinity.\n\n Tutorial: This is a child of the default Look command, that also\n allows us to look at "details" in the room. These details are\n things to examine and offers some extra description without\n actually having to be actual database objects. It uses the\n return_detail() hook on TutorialRooms for this.\n '}
+search_index_entry = {'aliases': 'ls l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n looks at the room and on details\n\n Usage:\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects\n in your vicinity.\n\n Tutorial: This is a child of the default Look command, that also\n allows us to look at "details" in the room. These details are\n things to examine and offers some extra description without\n actually having to be actual database objects. It uses the\n return_detail() hook on TutorialRooms for this.\n '}
@@ -976,7 +976,7 @@ to find something.
-
-
aliases = ['l', 'feel', 'fiddle', 'feel around', 'search']
+aliases = ['feel', 'fiddle', 'feel around', 'search', 'l']
@@ -1004,7 +1004,7 @@ random chance of eventually finding a light source.
-
-
search_index_entry = {'aliases': 'l feel fiddle feel around search', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l feel fiddle feel around search', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}
+search_index_entry = {'aliases': 'feel fiddle feel around search l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel fiddle feel around search l', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}
diff --git a/docs/2.x/api/evennia.contrib.utils.git_integration.git_integration.html b/docs/2.x/api/evennia.contrib.utils.git_integration.git_integration.html
index 04f23645db..1b1af61979 100644
--- a/docs/2.x/api/evennia.contrib.utils.git_integration.git_integration.html
+++ b/docs/2.x/api/evennia.contrib.utils.git_integration.git_integration.html
@@ -216,7 +216,7 @@ git evennia pull - Pull the latest evennia code.
-
-
directory = '/tmp/tmpi5od0r8z/b3ee9d053deda795640c07a4d7f756ca8e650b19/evennia'
+directory = '/tmp/tmpks0i109c/bf8620887b4407fad850e87c9342e0b8f72338e8/evennia'
@@ -277,7 +277,7 @@ git pull - Pull the latest code from your current branch.
-
-
directory = '/tmp/tmpi5od0r8z/b3ee9d053deda795640c07a4d7f756ca8e650b19/evennia/game_template'
+directory = '/tmp/tmpks0i109c/bf8620887b4407fad850e87c9342e0b8f72338e8/evennia/game_template'
diff --git a/docs/2.x/api/evennia.utils.eveditor.html b/docs/2.x/api/evennia.utils.eveditor.html
index a4ec37dd7a..5047d1f35e 100644
--- a/docs/2.x/api/evennia.utils.eveditor.html
+++ b/docs/2.x/api/evennia.utils.eveditor.html
@@ -344,7 +344,7 @@ indentation.
-
-
aliases = [':I', ':', ':dw', ':u', ':uu', ':A', ':i', ':fd', ':S', ':w', ':=', ':x', ':h', ':s', ':echo', ':fi', ':!', ':::', ':p', ':q!', ':j', ':UU', ':y', ':dd', ':<', ':DD', ':wq', ':q', ':f', ':>', '::', ':r']
+aliases = [':dd', ':x', '::', ':I', ':::', ':!', ':u', ':', ':p', ':fd', ':fi', ':DD', ':w', ':<', ':f', ':echo', ':q', ':s', ':>', ':uu', ':dw', ':A', ':wq', ':i', ':y', ':r', ':q!', ':UU', ':S', ':=', ':h', ':j']
@@ -372,7 +372,7 @@ efficient presentation.
-
-
search_index_entry = {'aliases': ':I : :dw :u :uu :A :i :fd :S :w := :x :h :s :echo :fi :! ::: :p :q! :j :UU :y :dd :< :DD :wq :q :f :> :: :r', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :I : :dw :u :uu :A :i :fd :S :w := :x :h :s :echo :fi :! ::: :p :q! :j :UU :y :dd :< :DD :wq :q :f :> :: :r', 'tags': '', 'text': '\n Commands for the editor\n '}
+search_index_entry = {'aliases': ':dd :x :: :I ::: :! :u : :p :fd :fi :DD :w :< :f :echo :q :s :> :uu :dw :A :wq :i :y :r :q! :UU :S := :h :j', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :dd :x :: :I ::: :! :u : :p :fd :fi :DD :w :< :f :echo :q :s :> :uu :dw :A :wq :i :y :r :q! :UU :S := :h :j', 'tags': '', 'text': '\n Commands for the editor\n '}
diff --git a/docs/2.x/api/evennia.utils.evmenu.html b/docs/2.x/api/evennia.utils.evmenu.html
index 08df1360e7..4090e4d978 100644
--- a/docs/2.x/api/evennia.utils.evmenu.html
+++ b/docs/2.x/api/evennia.utils.evmenu.html
@@ -947,7 +947,7 @@ single question.
+aliases = ['a', 'n', '__nomatch_command', 'yes', 'y', 'no', 'abort']
@@ -973,7 +973,7 @@ single question.
+search_index_entry = {'aliases': 'a n __nomatch_command yes y no abort', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' a n __nomatch_command yes y no abort', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}
diff --git a/docs/2.x/api/evennia.utils.evmore.html b/docs/2.x/api/evennia.utils.evmore.html
index e34753799a..1643892da8 100644
--- a/docs/2.x/api/evennia.utils.evmore.html
+++ b/docs/2.x/api/evennia.utils.evmore.html
@@ -145,7 +145,7 @@ the caller.msg() construct every time the page is updated.
-
-
aliases = ['previous', 'end', 'e', 'n', 't', 'top', 'p', 'abort', 'next', 'q', 'quit', 'a']
+aliases = ['t', 'e', 'a', 'n', 'quit', 'top', 'previous', 'next', 'p', 'q', 'abort', 'end']
@@ -171,7 +171,7 @@ the caller.msg() construct every time the page is updated.
-
-
search_index_entry = {'aliases': 'previous end e n t top p abort next q quit a', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' previous end e n t top p abort next q quit a', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}
+search_index_entry = {'aliases': 't e a n quit top previous next p q abort end', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' t e a n quit top previous next p q abort end', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}
diff --git a/docs/2.x/objects.inv b/docs/2.x/objects.inv
index 72d05adfc66066d0a5ede485ed201d14a096f4ee..14e117f03d41a1f4eecb3dbe7415609145d408b3 100644
GIT binary patch
delta 50628
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 |