From ea71dcb87f51d8051f221e69214b31385547ca14 Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action
Date: Sat, 25 Feb 2023 19:05:33 +0000
Subject: [PATCH] Updated HTML docs.
---
docs/1.0/.buildinfo | 2 +-
docs/1.0/Coding/Changelog.html | 10 +++++++++
docs/1.0/Coding/Coding-Overview.html | 1 +
.../evennia/commands/default/building.html | 1 -
.../1.0/_modules/evennia/objects/objects.html | 16 +++++++++++---
docs/1.0/_modules/evennia/utils/evtable.html | 2 --
docs/1.0/_sources/Coding/Changelog.md.txt | 7 ++++++
.../api/evennia.commands.default.account.html | 4 ++--
.../evennia.commands.default.building.html | 8 +++----
.../api/evennia.commands.default.general.html | 20 +++++++++---------
.../api/evennia.commands.default.system.html | 4 ++--
.../api/evennia.commands.default.tests.html | 2 +-
.../evennia.commands.default.unloggedin.html | 20 +++++++++---------
....base_systems.email_login.email_login.html | 20 +++++++++---------
...b.base_systems.ingame_python.commands.html | 4 ++--
...systems.mux_comms_cmds.mux_comms_cmds.html | 8 +++----
...rib.full_systems.evscaperoom.commands.html | 20 +++++++++---------
...ontrib.game_systems.clothing.clothing.html | 4 ++--
...trib.grid.extended_room.extended_room.html | 4 ++--
...evennia.contrib.rpg.rpsystem.rpsystem.html | 4 ++--
...ntrib.tutorials.red_button.red_button.html | 16 +++++++-------
...trib.tutorials.tutorial_world.objects.html | 16 +++++++-------
...ontrib.tutorials.tutorial_world.rooms.html | 12 +++++------
...utils.git_integration.git_integration.html | 4 ++--
docs/1.0/api/evennia.utils.eveditor.html | 4 ++--
docs/1.0/api/evennia.utils.evmenu.html | 4 ++--
docs/1.0/api/evennia.utils.evmore.html | 4 ++--
docs/1.0/objects.inv | Bin 157926 -> 157944 bytes
docs/1.0/searchindex.js | 2 +-
29 files changed, 124 insertions(+), 99 deletions(-)
diff --git a/docs/1.0/.buildinfo b/docs/1.0/.buildinfo
index b6cf78469f..395a995159 100644
--- a/docs/1.0/.buildinfo
+++ b/docs/1.0/.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: cd962337b9bb502bcb1b19150c707ac4
+config: be512b701e62d022b4f5734174622379
tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/1.0/Coding/Changelog.html b/docs/1.0/Coding/Changelog.html
index 90e0ab67dd..5492b9eeac 100644
--- a/docs/1.0/Coding/Changelog.html
+++ b/docs/1.0/Coding/Changelog.html
@@ -62,6 +62,7 @@
- Changelog
+- Main
- Evennia 1.2.0
- Evennia 1.1.1
- Evennia 1.1.0
@@ -167,6 +168,15 @@
Changelog
+
+Main
+
+Bug fix: Evtable options showed spurious empty lines if set without desc
+Usage fix: The teleport: and teleport_here: locks where checked in
+CmdTeleport, but not actually set on any entities. These locks are now
+set with defaults on all objects,characters,rooms and exits.
+
+
Evennia 1.2.0
diff --git a/docs/1.0/Coding/Coding-Overview.html b/docs/1.0/Coding/Coding-Overview.html
index 55496546b5..ad326aee9d 100644
--- a/docs/1.0/Coding/Coding-Overview.html
+++ b/docs/1.0/Coding/Coding-Overview.html
@@ -162,6 +162,7 @@ make your game, also if you never coded before.
- Changelog
+- Main
- Evennia 1.2.0
- Evennia 1.1.1
- Evennia 1.1.0
diff --git a/docs/1.0/_modules/evennia/commands/default/building.html b/docs/1.0/_modules/evennia/commands/default/building.html
index 428ae6b39f..8bb51760c1 100644
--- a/docs/1.0/_modules/evennia/commands/default/building.html
+++ b/docs/1.0/_modules/evennia/commands/default/building.html
@@ -84,7 +84,6 @@
from django.conf import settings
from django.core.paginator import Paginator
from django.db.models import Max, Min, Q
-
from evennia import InterruptCommand
from evennia.commands.cmdhandler import get_and_merge_cmdsets
from evennia.locks.lockhandler import LockException
diff --git a/docs/1.0/_modules/evennia/objects/objects.html b/docs/1.0/_modules/evennia/objects/objects.html
index bff765f504..fea869c225 100644
--- a/docs/1.0/_modules/evennia/objects/objects.html
+++ b/docs/1.0/_modules/evennia/objects/objects.html
@@ -91,7 +91,6 @@
import inflect
from django.conf import settings
from django.utils.translation import gettext as _
-
from evennia.commands import cmdset
from evennia.commands.cmdsethandler import CmdSetHandler
from evennia.objects.manager import ObjectManager
@@ -1624,6 +1623,8 @@
"call:true()", # allow to call commands on this object
"tell:perm(Admin)", # allow emits to this object
"puppet:pperm(Developer)",
+ "teleport:true()",
+ "teleport_here:true()",
]
)
) # lock down puppeting only to staff by default
@@ -2713,7 +2714,14 @@
"""
super().basetype_setup()
self.locks.add(
- ";".join(["get:false()", "call:false()"]) # noone can pick up the character
+ ";".join(
+ [
+ "get:false()",
+ "call:false()",
+ "teleport:perm(Admin)",
+ "teleport_here:perm(Admin)",
+ ]
+ ) # noone can pick up the character
) # no commands can be called on character from outside
# add the default cmdset
self.cmdset.add_default(settings.CMDSET_CHARACTER, persistent=True)
@@ -2940,7 +2948,7 @@
super().basetype_setup()
self.locks.add(
- ";".join(["get:false()", "puppet:false()"])
+ ";".join(["get:false()", "puppet:false()", "teleport:false()", "teleport_here:true()"])
) # would be weird to puppet a room ...
self.location = None
@@ -3156,6 +3164,8 @@
"puppet:false()", # would be weird to puppet an exit ...
"traverse:all()", # who can pass through exit by default
"get:false()", # noone can pick up the exit
+ "teleport:false()",
+ "teleport_here:false()",
]
)
)
diff --git a/docs/1.0/_modules/evennia/utils/evtable.html b/docs/1.0/_modules/evennia/utils/evtable.html
index 9ee9df8013..02b56a02ea 100644
--- a/docs/1.0/_modules/evennia/utils/evtable.html
+++ b/docs/1.0/_modules/evennia/utils/evtable.html
@@ -196,7 +196,6 @@
from textwrap import TextWrapper
from django.conf import settings
-
from evennia.utils.ansi import ANSIString
from evennia.utils.utils import display_len as d_len
from evennia.utils.utils import is_iter, justify
@@ -1621,7 +1620,6 @@
# we need to add new rows to new column
empty_rows = ["" for _ in range(abs(excess))]
column.add_rows(*empty_rows, **options)
- self.nrows -= excess
if xpos is None or xpos > wtable - 1:
# add to the end
diff --git a/docs/1.0/_sources/Coding/Changelog.md.txt b/docs/1.0/_sources/Coding/Changelog.md.txt
index a1b94734c0..60c2288f9f 100644
--- a/docs/1.0/_sources/Coding/Changelog.md.txt
+++ b/docs/1.0/_sources/Coding/Changelog.md.txt
@@ -1,5 +1,12 @@
# Changelog
+## Main
+
+- Bug fix: Evtable options showed spurious empty lines if set without desc
+- Usage fix: The `teleport:` and `teleport_here:` locks where checked in
+ `CmdTeleport`, but not actually set on any entities. These locks are now
+ set with defaults on all objects,characters,rooms and exits.
+
## Evennia 1.2.0
- Bug fix: `TagHandler.get` did not consistently cast to string (aMiss-aWry)
diff --git a/docs/1.0/api/evennia.commands.default.account.html b/docs/1.0/api/evennia.commands.default.account.html
index 2d8ed1fd54..d0a30c1dfa 100644
--- a/docs/1.0/api/evennia.commands.default.account.html
+++ b/docs/1.0/api/evennia.commands.default.account.html
@@ -133,7 +133,7 @@ method. Otherwise all text will be returned to all connected sessions.
-
-
aliases = ['ls', 'l']
+aliases = ['l', 'ls']
@@ -164,7 +164,7 @@ method. Otherwise all text will be returned to all connected sessions.
-
-
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 '}
+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 '}
diff --git a/docs/1.0/api/evennia.commands.default.building.html b/docs/1.0/api/evennia.commands.default.building.html
index 92d10460a1..480970a524 100644
--- a/docs/1.0/api/evennia.commands.default.building.html
+++ b/docs/1.0/api/evennia.commands.default.building.html
@@ -1345,7 +1345,7 @@ server settings.
-
-
aliases = ['@parent', '@type', '@swap', '@typeclasses', '@update']
+aliases = ['@swap', '@parent', '@type', '@update', '@typeclasses']
@@ -1376,7 +1376,7 @@ server settings.
-
-
search_index_entry = {'aliases': '@parent @type @swap @typeclasses @update', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass parent type swap typeclasses 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': '@swap @parent @type @update @typeclasses', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass swap parent type update typeclasses', '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 "}
@@ -1833,7 +1833,7 @@ one is given.
-
-
aliases = ['@search', '@locate']
+aliases = ['@locate', '@search']
@@ -1864,7 +1864,7 @@ one is given.
-
-
search_index_entry = {'aliases': '@search @locate', 'category': 'building', 'key': '@find', 'no_prefix': 'find search locate', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}
+search_index_entry = {'aliases': '@locate @search', 'category': 'building', 'key': '@find', 'no_prefix': 'find locate search', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}
diff --git a/docs/1.0/api/evennia.commands.default.general.html b/docs/1.0/api/evennia.commands.default.general.html
index c56af83af5..7635c0ff9d 100644
--- a/docs/1.0/api/evennia.commands.default.general.html
+++ b/docs/1.0/api/evennia.commands.default.general.html
@@ -175,7 +175,7 @@ look *<account&g
-
-
aliases = ['ls', 'l']
+aliases = ['l', 'ls']
@@ -206,7 +206,7 @@ look *<account&g
-
-
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 '}
+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 '}
@@ -268,7 +268,7 @@ for everyone to use, you need build privileges and the alias command.
-
-
aliases = ['nicks', 'nickname']
+aliases = ['nickname', 'nicks']
@@ -300,7 +300,7 @@ for everyone to use, you need build privileges and the alias command.
-
-
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 '}
+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 '}
@@ -323,7 +323,7 @@ inv
-
-
aliases = ['i', 'inv']
+aliases = ['inv', 'i']
@@ -354,7 +354,7 @@ inv
-
-
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 '}
+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 '}
@@ -598,7 +598,7 @@ placing it in their inventory.
-
-
aliases = ["'", '"']
+aliases = ['"', "'"]
@@ -629,7 +629,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 '}
@@ -773,7 +773,7 @@ which permission groups you are a member of.
-
-
aliases = ['hierarchy', 'groups']
+aliases = ['groups', 'hierarchy']
@@ -804,7 +804,7 @@ which permission groups you are a member of.
-
-
search_index_entry = {'aliases': 'hierarchy groups', 'category': 'general', 'key': 'access', 'no_prefix': ' hierarchy groups', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}
+search_index_entry = {'aliases': 'groups hierarchy', 'category': 'general', 'key': 'access', 'no_prefix': ' groups hierarchy', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}
diff --git a/docs/1.0/api/evennia.commands.default.system.html b/docs/1.0/api/evennia.commands.default.system.html
index fdc40c105d..1fd72e3fc9 100644
--- a/docs/1.0/api/evennia.commands.default.system.html
+++ b/docs/1.0/api/evennia.commands.default.system.html
@@ -683,7 +683,7 @@ See |luhttps://ww
-
-
aliases = ['@task', '@delays']
+aliases = ['@delays', '@task']
@@ -729,7 +729,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/1.0/api/evennia.commands.default.tests.html b/docs/1.0/api/evennia.commands.default.tests.html
index 87c6e9b076..a4cf1d6988 100644
--- a/docs/1.0/api/evennia.commands.default.tests.html
+++ b/docs/1.0/api/evennia.commands.default.tests.html
@@ -955,7 +955,7 @@ main test suite started with
Test the batch processor.
-
-
red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmp6z5k64f2/f6cc41dcbda8abe5715392c3cb23c36a411efa0b/evennia/contrib/tutorials/red_button/red_button.py'>
+red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpy964r8s_/471465b14339eb7c42b3e6d0a2212958708a1533/evennia/contrib/tutorials/red_button/red_button.py'>
diff --git a/docs/1.0/api/evennia.commands.default.unloggedin.html b/docs/1.0/api/evennia.commands.default.unloggedin.html
index e4f31f7f69..c8e8dd9507 100644
--- a/docs/1.0/api/evennia.commands.default.unloggedin.html
+++ b/docs/1.0/api/evennia.commands.default.unloggedin.html
@@ -122,7 +122,7 @@ connect “account name” “pass word”
-
-
aliases = ['conn', 'co', 'con']
+aliases = ['con', 'conn', 'co']
@@ -157,7 +157,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'conn co con', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn co con', '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': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn 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 '}
@@ -181,7 +181,7 @@ create “account name” “pass word”
-
-
aliases = ['cr', 'cre']
+aliases = ['cre', 'cr']
@@ -218,7 +218,7 @@ create “account name” “pass word”
-
-
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 '}
+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 '}
@@ -242,7 +242,7 @@ version is a bit more complicated.
-
-
aliases = ['q', 'qu']
+aliases = ['qu', 'q']
@@ -268,7 +268,7 @@ version is a bit more complicated.
-
-
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 '}
+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 '}
@@ -292,7 +292,7 @@ All it does is display the connect screen.
-
-
aliases = ['look', 'l']
+aliases = ['l', 'look']
@@ -318,7 +318,7 @@ All it does is display the connect screen.
-
-
search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}
+search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}
@@ -341,7 +341,7 @@ for simplicity. It shows a pane of info.
-
-
aliases = ['h', '?']
+aliases = ['?', 'h']
@@ -367,7 +367,7 @@ for simplicity. It shows a pane of info.
-
-
search_index_entry = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}
+search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}
diff --git a/docs/1.0/api/evennia.contrib.base_systems.email_login.email_login.html b/docs/1.0/api/evennia.contrib.base_systems.email_login.email_login.html
index 0eb96ca6dc..625969a40c 100644
--- a/docs/1.0/api/evennia.contrib.base_systems.email_login.email_login.html
+++ b/docs/1.0/api/evennia.contrib.base_systems.email_login.email_login.html
@@ -139,7 +139,7 @@ the module given by settings.CONNECTION_SCREEN_MODULE.
-
-
aliases = ['conn', 'co', 'con']
+aliases = ['con', 'conn', 'co']
@@ -169,7 +169,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'conn co con', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn co con', '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': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn 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 '}
@@ -191,7 +191,7 @@ there is no object yet before the account has logged in)
-
-
aliases = ['cr', 'cre']
+aliases = ['cre', 'cr']
@@ -227,7 +227,7 @@ name enclosed in quotes:
-
-
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 '}
+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 '}
@@ -246,7 +246,7 @@ version is a bit more complicated.
-
-
aliases = ['q', 'qu']
+aliases = ['qu', 'q']
@@ -272,7 +272,7 @@ version is a bit more complicated.
-
-
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 '}
+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 '}
@@ -291,7 +291,7 @@ All it does is display the connect screen.
-
-
aliases = ['look', 'l']
+aliases = ['l', 'look']
@@ -317,7 +317,7 @@ All it does is display the connect screen.
-
-
search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}
+search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}
@@ -335,7 +335,7 @@ for simplicity. It shows a pane of info.
-
-
aliases = ['h', '?']
+aliases = ['?', 'h']
@@ -361,7 +361,7 @@ for simplicity. It shows a pane of info.
-
-
search_index_entry = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}
+search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}
diff --git a/docs/1.0/api/evennia.contrib.base_systems.ingame_python.commands.html b/docs/1.0/api/evennia.contrib.base_systems.ingame_python.commands.html
index 6ab5e8d3d3..538172f38b 100644
--- a/docs/1.0/api/evennia.contrib.base_systems.ingame_python.commands.html
+++ b/docs/1.0/api/evennia.contrib.base_systems.ingame_python.commands.html
@@ -116,7 +116,7 @@
-
-
aliases = ['@callback', '@calls', '@callbacks']
+aliases = ['@calls', '@callbacks', '@callback']
@@ -197,7 +197,7 @@ on user permission.
-
-
search_index_entry = {'aliases': '@callback @calls @callbacks', 'category': 'building', 'key': '@call', 'no_prefix': 'call callback calls callbacks', 'tags': '', 'text': '\n Command to edit callbacks.\n '}
+search_index_entry = {'aliases': '@calls @callbacks @callback', 'category': 'building', 'key': '@call', 'no_prefix': 'call calls callbacks callback', 'tags': '', 'text': '\n Command to edit callbacks.\n '}
diff --git a/docs/1.0/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html b/docs/1.0/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html
index ee13ebc230..026a48e13b 100644
--- a/docs/1.0/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html
+++ b/docs/1.0/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html
@@ -160,7 +160,7 @@ aliases to an already joined channel.
-
-
aliases = ['aliaschan', 'chanalias']
+aliases = ['chanalias', 'aliaschan']
@@ -191,7 +191,7 @@ aliases to an already joined channel.
-
-
search_index_entry = {'aliases': 'aliaschan chanalias', 'category': 'comms', 'key': 'addcom', 'no_prefix': ' aliaschan chanalias', 'tags': '', 'text': '\n Add a channel alias and/or subscribe to a channel\n\n Usage:\n addcom [alias=] <channel>\n\n Joins a given channel. If alias is given, this will allow you to\n refer to the channel by this alias rather than the full channel\n name. Subsequent calls of this command can be used to add multiple\n aliases to an already joined channel.\n '}
+search_index_entry = {'aliases': 'chanalias aliaschan', 'category': 'comms', 'key': 'addcom', 'no_prefix': ' chanalias aliaschan', 'tags': '', 'text': '\n Add a channel alias and/or subscribe to a channel\n\n Usage:\n addcom [alias=] <channel>\n\n Joins a given channel. If alias is given, this will allow you to\n refer to the channel by this alias rather than the full channel\n name. Subsequent calls of this command can be used to add multiple\n aliases to an already joined channel.\n '}
@@ -217,7 +217,7 @@ for that channel.
-
-
aliases = ['delaliaschan', 'delchanalias']
+aliases = ['delchanalias', 'delaliaschan']
@@ -248,7 +248,7 @@ for that channel.
-
-
search_index_entry = {'aliases': 'delaliaschan delchanalias', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delaliaschan delchanalias', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}
+search_index_entry = {'aliases': 'delchanalias delaliaschan', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delchanalias delaliaschan', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}
diff --git a/docs/1.0/api/evennia.contrib.full_systems.evscaperoom.commands.html b/docs/1.0/api/evennia.contrib.full_systems.evscaperoom.commands.html
index 6272b398b1..4db1fe6dd8 100644
--- a/docs/1.0/api/evennia.contrib.full_systems.evscaperoom.commands.html
+++ b/docs/1.0/api/evennia.contrib.full_systems.evscaperoom.commands.html
@@ -211,7 +211,7 @@ the operation will be general or on the room.
-
-
aliases = ['chicken out', 'abort', 'quit', 'q']
+aliases = ['quit', 'abort', 'q', 'chicken out']
@@ -235,7 +235,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'chicken out abort quit q', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' chicken out abort quit q', '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': '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 '}
@@ -256,7 +256,7 @@ set in self.parse())
-
-
aliases = ['ls', 'l']
+aliases = ['l', 'ls']
@@ -290,7 +290,7 @@ set in self.parse())
-
-
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 '}
+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 '}
@@ -371,7 +371,7 @@ shout
-
-
aliases = [';', 'shout', 'whisper']
+aliases = [';', 'whisper', 'shout']
@@ -400,7 +400,7 @@ set in self.parse())
-
-
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 '}
+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 '}
@@ -490,7 +490,7 @@ looks and what actions is available.
-
-
aliases = ['ex', 'e', 'examine', 'unfocus']
+aliases = ['unfocus', 'examine', 'e', 'ex']
@@ -519,7 +519,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'ex e examine unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex e examine 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 '}
+search_index_entry = {'aliases': 'unfocus examine e ex', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' unfocus examine e 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 '}
@@ -581,7 +581,7 @@ set in self.parse())
-
-
aliases = ['inv', 'give', 'i', 'inventory']
+aliases = ['inv', 'i', 'inventory', 'give']
@@ -605,7 +605,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'inv give i inventory', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inv give i inventory', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}
+search_index_entry = {'aliases': 'inv i inventory give', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inv i inventory give', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}
diff --git a/docs/1.0/api/evennia.contrib.game_systems.clothing.clothing.html b/docs/1.0/api/evennia.contrib.game_systems.clothing.clothing.html
index 65bdc57e64..11f48efe6f 100644
--- a/docs/1.0/api/evennia.contrib.game_systems.clothing.clothing.html
+++ b/docs/1.0/api/evennia.contrib.game_systems.clothing.clothing.html
@@ -622,7 +622,7 @@ inv
-
-
aliases = ['i', 'inv']
+aliases = ['inv', 'i']
@@ -653,7 +653,7 @@ inv
-
-
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 '}
+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 '}
diff --git a/docs/1.0/api/evennia.contrib.grid.extended_room.extended_room.html b/docs/1.0/api/evennia.contrib.grid.extended_room.extended_room.html
index c33a133ad9..04d7fc42fb 100644
--- a/docs/1.0/api/evennia.contrib.grid.extended_room.extended_room.html
+++ b/docs/1.0/api/evennia.contrib.grid.extended_room.extended_room.html
@@ -340,7 +340,7 @@ look *<account&g
-
-
aliases = ['ls', 'l']
+aliases = ['l', 'ls']
@@ -360,7 +360,7 @@ look *<account&g
-
-
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 '}
+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 '}
diff --git a/docs/1.0/api/evennia.contrib.rpg.rpsystem.rpsystem.html b/docs/1.0/api/evennia.contrib.rpg.rpsystem.rpsystem.html
index dec686a800..ac2986c4ea 100644
--- a/docs/1.0/api/evennia.contrib.rpg.rpsystem.rpsystem.html
+++ b/docs/1.0/api/evennia.contrib.rpg.rpsystem.rpsystem.html
@@ -695,7 +695,7 @@ a different language.
-
-
aliases = ["'", '"']
+aliases = ['"', "'"]
@@ -726,7 +726,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/1.0/api/evennia.contrib.tutorials.red_button.red_button.html b/docs/1.0/api/evennia.contrib.tutorials.red_button.red_button.html
index 1db54ed329..6f17a29b7d 100644
--- a/docs/1.0/api/evennia.contrib.tutorials.red_button.red_button.html
+++ b/docs/1.0/api/evennia.contrib.tutorials.red_button.red_button.html
@@ -153,7 +153,7 @@ such as when closing the lid and un-blinding a character.
-
-
aliases = ['push', 'press button', 'press']
+aliases = ['press', 'press button', 'push']
@@ -182,7 +182,7 @@ check if the lid is open or closed.
-
-
search_index_entry = {'aliases': 'push press button press', 'category': 'general', 'key': 'push button', 'no_prefix': ' push press button press', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}
+search_index_entry = {'aliases': 'press press button push', 'category': 'general', 'key': 'push button', 'no_prefix': ' press press button push', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}
@@ -252,7 +252,7 @@ check if the lid is open or closed.
-
-
aliases = ['smash', 'smash lid', 'break lid']
+aliases = ['smash lid', 'smash', 'break lid']
@@ -279,7 +279,7 @@ break.
-
-
search_index_entry = {'aliases': 'smash smash lid break lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash smash lid break lid', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}
+search_index_entry = {'aliases': 'smash lid smash break lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash lid smash break lid', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}
@@ -379,7 +379,7 @@ be mutually exclusive.
-
-
aliases = ['push', 'press button', 'press']
+aliases = ['press', 'press button', 'push']
@@ -408,7 +408,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'push press button press', 'category': 'general', 'key': 'push button', 'no_prefix': ' push press button press', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}
+search_index_entry = {'aliases': 'press press button push', 'category': 'general', 'key': 'push button', 'no_prefix': ' press press button push', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}
@@ -506,7 +506,7 @@ be mutually exclusive.
-
-
aliases = ['ex', 'l', 'get', 'examine', 'listen', 'feel']
+aliases = ['examine', 'l', 'feel', 'get', 'ex', 'listen']
@@ -532,7 +532,7 @@ be mutually exclusive.
-
-
search_index_entry = {'aliases': 'ex l get examine listen feel', 'category': 'general', 'key': 'look', 'no_prefix': ' ex l get examine listen feel', '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': 'examine l feel get ex listen', 'category': 'general', 'key': 'look', 'no_prefix': ' examine l feel get 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 "}
diff --git a/docs/1.0/api/evennia.contrib.tutorials.tutorial_world.objects.html b/docs/1.0/api/evennia.contrib.tutorials.tutorial_world.objects.html
index 7fb8afbbba..550380aeca 100644
--- a/docs/1.0/api/evennia.contrib.tutorials.tutorial_world.objects.html
+++ b/docs/1.0/api/evennia.contrib.tutorials.tutorial_world.objects.html
@@ -425,7 +425,7 @@ of the object. We overload it with our own version.
-
-
aliases = ['light', 'burn']
+aliases = ['burn', 'light']
@@ -452,7 +452,7 @@ to sit on a “lightable” object, we operate only on self.obj.
-
-
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 '}
+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 '}
@@ -556,7 +556,7 @@ shift green root up/down
-
-
aliases = ['move', 'push', 'shiftroot', 'pull']
+aliases = ['shiftroot', 'move', 'push', 'pull']
@@ -592,7 +592,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'move push shiftroot pull', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' move push shiftroot pull', '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': 'shiftroot move push pull', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' shiftroot move push pull', '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 '}
@@ -609,7 +609,7 @@ yellow/green - horizontal roots
-
-
aliases = ['button', 'push button', 'press button']
+aliases = ['push button', 'button', 'press button']
@@ -635,7 +635,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'button push button press button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' button push button press 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 '}
@@ -779,7 +779,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
aliases = ['slash', 'bash', 'kill', 'pierce', 'stab', 'fight', 'chop', 'hit', 'defend', 'thrust', 'parry']
+aliases = ['thrust', 'kill', 'defend', 'fight', 'slash', 'bash', 'stab', 'parry', 'pierce', 'hit', 'chop']
@@ -805,7 +805,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
search_index_entry = {'aliases': 'slash bash kill pierce stab fight chop hit defend thrust parry', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' slash bash kill pierce stab fight chop hit defend thrust parry', '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': 'thrust kill defend fight slash bash stab parry pierce hit chop', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' thrust kill defend fight slash bash stab parry pierce hit chop', '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/1.0/api/evennia.contrib.tutorials.tutorial_world.rooms.html b/docs/1.0/api/evennia.contrib.tutorials.tutorial_world.rooms.html
index d5b34e33b6..f14bdb846c 100644
--- a/docs/1.0/api/evennia.contrib.tutorials.tutorial_world.rooms.html
+++ b/docs/1.0/api/evennia.contrib.tutorials.tutorial_world.rooms.html
@@ -248,7 +248,7 @@ code except for adding in the details.
-
-
aliases = ['ls', 'l']
+aliases = ['l', 'ls']
@@ -263,7 +263,7 @@ code except for adding in the details.
-
-
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 '}
+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 '}
@@ -816,7 +816,7 @@ if they fall off the bridge.
-
-
aliases = ['h', '?']
+aliases = ['?', 'h']
@@ -842,7 +842,7 @@ if they fall off the bridge.
-
-
search_index_entry = {'aliases': 'h ?', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}
+search_index_entry = {'aliases': '? h', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}
@@ -968,7 +968,7 @@ to find something.
-
-
aliases = ['feel', 'search', 'l', 'fiddle', 'feel around']
+aliases = ['feel around', 'l', 'feel', 'search', 'fiddle']
@@ -996,7 +996,7 @@ random chance of eventually finding a light source.
-
-
search_index_entry = {'aliases': 'feel search l fiddle feel around', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel search l fiddle feel around', '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 around l feel search fiddle', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel around l feel search fiddle', '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/1.0/api/evennia.contrib.utils.git_integration.git_integration.html b/docs/1.0/api/evennia.contrib.utils.git_integration.git_integration.html
index 1475b84a9a..9735a935fa 100644
--- a/docs/1.0/api/evennia.contrib.utils.git_integration.git_integration.html
+++ b/docs/1.0/api/evennia.contrib.utils.git_integration.git_integration.html
@@ -208,7 +208,7 @@ git evennia pull - Pull the latest evennia code.
-
-
directory = '/tmp/tmp6z5k64f2/f6cc41dcbda8abe5715392c3cb23c36a411efa0b/evennia'
+directory = '/tmp/tmpy964r8s_/471465b14339eb7c42b3e6d0a2212958708a1533/evennia'
@@ -269,7 +269,7 @@ git pull - Pull the latest code from your current branch.
-
-
directory = '/tmp/tmp6z5k64f2/f6cc41dcbda8abe5715392c3cb23c36a411efa0b/evennia/game_template'
+directory = '/tmp/tmpy964r8s_/471465b14339eb7c42b3e6d0a2212958708a1533/evennia/game_template'
diff --git a/docs/1.0/api/evennia.utils.eveditor.html b/docs/1.0/api/evennia.utils.eveditor.html
index 01a54c302b..6d7a9a28cc 100644
--- a/docs/1.0/api/evennia.utils.eveditor.html
+++ b/docs/1.0/api/evennia.utils.eveditor.html
@@ -336,7 +336,7 @@ indentation.
-
-
aliases = [':uu', ':j', ':q', ':fi', ':!', ':DD', ':dw', ':A', ':>', ':::', ':=', ':S', ':u', ':h', '::', ':x', ':w', ':r', ':q!', ':echo', ':<', ':i', ':y', ':', ':I', ':fd', ':wq', ':UU', ':dd', ':f', ':s', ':p']
+aliases = [':u', ':p', ':dd', ':<', ':uu', ':S', ':s', ':y', ':>', ':i', ':f', ':q!', ':!', ':w', ':q', ':wq', '::', ':', ':fi', ':DD', ':UU', ':fd', ':echo', ':x', ':=', ':h', ':A', ':::', ':j', ':dw', ':r', ':I']
@@ -364,7 +364,7 @@ efficient presentation.
-
-
search_index_entry = {'aliases': ':uu :j :q :fi :! :DD :dw :A :> ::: := :S :u :h :: :x :w :r :q! :echo :< :i :y : :I :fd :wq :UU :dd :f :s :p', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :uu :j :q :fi :! :DD :dw :A :> ::: := :S :u :h :: :x :w :r :q! :echo :< :i :y : :I :fd :wq :UU :dd :f :s :p', 'tags': '', 'text': '\n Commands for the editor\n '}
+search_index_entry = {'aliases': ':u :p :dd :< :uu :S :s :y :> :i :f :q! :! :w :q :wq :: : :fi :DD :UU :fd :echo :x := :h :A ::: :j :dw :r :I', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :u :p :dd :< :uu :S :s :y :> :i :f :q! :! :w :q :wq :: : :fi :DD :UU :fd :echo :x := :h :A ::: :j :dw :r :I', 'tags': '', 'text': '\n Commands for the editor\n '}
diff --git a/docs/1.0/api/evennia.utils.evmenu.html b/docs/1.0/api/evennia.utils.evmenu.html
index 56757e8241..813f2ab2ef 100644
--- a/docs/1.0/api/evennia.utils.evmenu.html
+++ b/docs/1.0/api/evennia.utils.evmenu.html
@@ -931,7 +931,7 @@ single question.
+aliases = ['a', 'n', 'abort', 'yes', 'y', 'no', '__nomatch_command']
@@ -957,7 +957,7 @@ single question.
+search_index_entry = {'aliases': 'a n abort yes y no __nomatch_command', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' a n abort yes y no __nomatch_command', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}
diff --git a/docs/1.0/api/evennia.utils.evmore.html b/docs/1.0/api/evennia.utils.evmore.html
index b0a6ba5bd5..efbd585f97 100644
--- a/docs/1.0/api/evennia.utils.evmore.html
+++ b/docs/1.0/api/evennia.utils.evmore.html
@@ -137,7 +137,7 @@ the caller.msg() construct every time the page is updated.
-
-
aliases = ['n', 'quit', 'previous', 'end', 'top', 'e', 'next', 'p', 'a', 't', 'abort', 'q']
+aliases = ['a', 'n', 't', 'p', 'q', 'next', 'abort', 'previous', 'end', 'e', 'quit', 'top']
@@ -163,7 +163,7 @@ the caller.msg() construct every time the page is updated.
-
-
search_index_entry = {'aliases': 'n quit previous end top e next p a t abort q', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' n quit previous end top e next p a t abort q', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}
+search_index_entry = {'aliases': 'a n t p q next abort previous end e quit top', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' a n t p q next abort previous end e quit top', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}
diff --git a/docs/1.0/objects.inv b/docs/1.0/objects.inv
index 705b0baffb61a389c836f04e6b8201ca314c2d30..c212cd28fa96cff2b74aa3c39a287f9ae95a0746 100644
GIT binary patch
delta 94685
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