[docs] def get_content_names(self, looker, **kwargs):
"""
+
DEPRECATED
Get the proper names for all contents of this object. Helper method
for return_appearance.
diff --git a/docs/latest/_sources/Coding/Changelog.md.txt b/docs/latest/_sources/Coding/Changelog.md.txt
index a40a4871a0..6c7be3c330 100644
--- a/docs/latest/_sources/Coding/Changelog.md.txt
+++ b/docs/latest/_sources/Coding/Changelog.md.txt
@@ -2,6 +2,11 @@
## Main branch
+- [Deprecation]: `DefaultObject.get_visible_contents` - unused in core, will be
+ removed. Use the new `.filter_visible` together with the `.get_display_*` methods instead..
+- [Deprecation]: `DefaultObject.get_content_names` - unused in core, will be
+ removed. Use the `DefaultObject.get_display_*` methods instead.
+
- [Feature][pull3421]: New `utils.compress_whitespace` utility used with
default object's `.format_appearance` to make it easier to overload without
adding line breaks in hook returns. (InspectorCaracal)
@@ -12,8 +17,13 @@
- [Feature][issue3450]: The default `page` command now tags its `Msg` objects
with tag 'page' (category 'comms') and also checks the `Msg`' 'read' lock.
made backwards compatible for old pages (Griatch)
+- [Feature][pull3466]: Add optional `no_article` kwarg to
+ `DefaultObject.get_numbered_name` for the system to skip adding automatic
+ articles. (chiizujin)
- Feature: Clean up the default Command variable list shown when a command has
no `func()` defined (Griatch)
+- [Feature][issue3461]: Add `DefaultObject.filter_display_visible` helper method
+ to make it easier to customize object visibility rules. (Griatch)
- [Fix][pull3446]: Use plural ('no apples') instead of singular ('no apple') in
`get_numbered_name` for better grammatical form (InspectorCaracal)
- [Fix][pull3453]: Object aliases not showing in search multi-match
@@ -36,7 +46,7 @@
- [Fix][issue3460]: The `menu_login` contrib regression caused it to error out
when creating a new character (Griatch)
- Doc: Added Beginner Tutorial lessons for AI, Quests and Procedural dungeon (Griatch)
-- Doc fixes (Griatch, InspectorCaracal)
+- Doc fixes (Griatch, InspectorCaracal, homeofpoe)
[pull3421]: https://github.com/evennia/evennia/pull/3421
[pull3446]: https://github.com/evennia/evennia/pull/3446
@@ -49,10 +59,12 @@
[pull3459]: https://github.com/evennia/evennia/pull/3459
[pull3463]: https://github.com/evennia/evennia/pull/3463
[pull3464]: https://github.com/evennia/evennia/pull/3464
+[pull3466]: https://github.com/evennia/evennia/pull/3466
[pull3467]: https://github.com/evennia/evennia/pull/3467
[issue3450]: https://github.com/evennia/evennia/issues/3450
[issue3462]: https://github.com/evennia/evennia/issues/3462
[issue3460]: https://github.com/evennia/evennia/issues/3460
+[issue3461]: https://github.com/evennia/evennia/issues/3461
## Evennia 4.0.0
diff --git a/docs/latest/api/evennia.commands.default.account.html b/docs/latest/api/evennia.commands.default.account.html
index b10f1138b3..7ee8590fa2 100644
--- a/docs/latest/api/evennia.commands.default.account.html
+++ b/docs/latest/api/evennia.commands.default.account.html
@@ -147,7 +147,7 @@ method. Otherwise all text will be returned to all connected sessions.
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -178,7 +178,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/latest/api/evennia.commands.default.building.html b/docs/latest/api/evennia.commands.default.building.html
index 9f6950670c..922ffbf439 100644
--- a/docs/latest/api/evennia.commands.default.building.html
+++ b/docs/latest/api/evennia.commands.default.building.html
@@ -646,7 +646,7 @@ You can specify the /force switch to bypass this confirmation.
-
-
aliases = ['@del', '@delete']
+aliases = ['@delete', '@del']
@@ -687,7 +687,7 @@ You can specify the /force switch to bypass this confirmation.
-
-
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 '}
+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 '}
@@ -1414,7 +1414,7 @@ server settings.
-
-
aliases = ['@swap', '@update', '@type', '@typeclasses', '@parent']
+aliases = ['@typeclasses', '@parent', '@swap', '@update', '@type']
@@ -1445,7 +1445,7 @@ server settings.
-
-
search_index_entry = {'aliases': '@swap @update @type @typeclasses @parent', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass swap update type typeclasses parent', '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': '@typeclasses @parent @swap @update @type', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass typeclasses parent swap update type', '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 "}
@@ -1600,7 +1600,7 @@ If object is not specified, the current location is examined.
-
-
aliases = ['@exam', '@ex']
+aliases = ['@ex', '@exam']
@@ -1873,7 +1873,7 @@ the cases, see the module doc.
-
-
search_index_entry = {'aliases': '@exam @ex', 'category': 'building', 'key': '@examine', 'no_prefix': 'examine exam ex', 'tags': '', 'text': '\n get detailed information about an object\n\n Usage:\n examine [<object>[/attrname]]\n examine [*<account>[/attrname]]\n\n Switch:\n account - examine an Account (same as adding *)\n object - examine an Object (useful when OOC)\n script - examine a Script\n channel - examine a Channel\n\n The examine command shows detailed game info about an\n object and optionally a specific attribute on it.\n If object is not specified, the current location is examined.\n\n Append a * before the search string to examine an account.\n\n '}
+search_index_entry = {'aliases': '@ex @exam', 'category': 'building', 'key': '@examine', 'no_prefix': 'examine ex exam', 'tags': '', 'text': '\n get detailed information about an object\n\n Usage:\n examine [<object>[/attrname]]\n examine [*<account>[/attrname]]\n\n Switch:\n account - examine an Account (same as adding *)\n object - examine an Object (useful when OOC)\n script - examine a Script\n channel - examine a Channel\n\n The examine command shows detailed game info about an\n object and optionally a specific attribute on it.\n If object is not specified, the current location is examined.\n\n Append a * before the search string to examine an account.\n\n '}
@@ -1907,7 +1907,7 @@ one is given.
-
-
aliases = ['@locate', '@search']
+aliases = ['@search', '@locate']
@@ -1938,7 +1938,7 @@ one is given.
-
-
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 '}
+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 '}
diff --git a/docs/latest/api/evennia.commands.default.general.html b/docs/latest/api/evennia.commands.default.general.html
index c21d2fb217..10372702cc 100644
--- a/docs/latest/api/evennia.commands.default.general.html
+++ b/docs/latest/api/evennia.commands.default.general.html
@@ -189,7 +189,7 @@ look
*<account&g
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -220,7 +220,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 '}
@@ -282,7 +282,7 @@ for everyone to use, you need build privileges and the alias command.
-
-
aliases = ['nickname', 'nicks']
+aliases = ['nicks', 'nickname']
@@ -314,7 +314,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 '}
@@ -723,7 +723,7 @@ automatically begin with your name.
-
-
aliases = ['emote', ':']
+aliases = [':', 'emote']
@@ -764,7 +764,7 @@ space.
-
-
search_index_entry = {'aliases': 'emote :', 'category': 'general', 'key': 'pose', 'no_prefix': ' emote :', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}
+search_index_entry = {'aliases': ': emote', 'category': 'general', 'key': 'pose', 'no_prefix': ' : emote', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}
diff --git a/docs/latest/api/evennia.commands.default.system.html b/docs/latest/api/evennia.commands.default.system.html
index 196b1c1736..d02b7cfcc2 100644
--- a/docs/latest/api/evennia.commands.default.system.html
+++ b/docs/latest/api/evennia.commands.default.system.html
@@ -697,7 +697,7 @@ See
|luhttps://ww
-
-
aliases = ['@delays', '@task']
+aliases = ['@task', '@delays']
@@ -743,7 +743,7 @@ to all the variables defined therein.
-
-
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 "}
+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 "}
diff --git a/docs/latest/api/evennia.commands.default.tests.html b/docs/latest/api/evennia.commands.default.tests.html
index e288807378..a5cc93828e 100644
--- a/docs/latest/api/evennia.commands.default.tests.html
+++ b/docs/latest/api/evennia.commands.default.tests.html
@@ -975,7 +975,7 @@ main test suite started with
Test the batch processor.
-
-
red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpcbzv8qix/22067c32dc76cef8a423c261d77ea9c1752cc309/evennia/contrib/tutorials/red_button/red_button.py'>
+red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpcqt2j3bj/cf5123ad568c9df832980d48bcaa1a9e4b65bb75/evennia/contrib/tutorials/red_button/red_button.py'>
diff --git a/docs/latest/api/evennia.commands.default.unloggedin.html b/docs/latest/api/evennia.commands.default.unloggedin.html
index afbfebc15b..30feda40ce 100644
--- a/docs/latest/api/evennia.commands.default.unloggedin.html
+++ b/docs/latest/api/evennia.commands.default.unloggedin.html
@@ -136,7 +136,7 @@ connect “account name” “pass word”
-
-
aliases = ['co', 'conn', 'con']
+aliases = ['conn', 'co', 'con']
@@ -171,7 +171,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'co conn con', 'category': 'general', 'key': 'connect', 'no_prefix': ' co conn 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': '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 '}
@@ -306,7 +306,7 @@ All it does is display the connect screen.
-
-
aliases = ['l', 'look']
+aliases = ['look', 'l']
@@ -332,7 +332,7 @@ All it does is display the connect screen.
-
-
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 '}
+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 '}
@@ -355,7 +355,7 @@ for simplicity. It shows a pane of info.
-
-
aliases = ['h', '?']
+aliases = ['?', 'h']
@@ -381,7 +381,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/latest/api/evennia.contrib.base_systems.email_login.email_login.html b/docs/latest/api/evennia.contrib.base_systems.email_login.email_login.html
index e414007d4b..6bebe31e75 100644
--- a/docs/latest/api/evennia.contrib.base_systems.email_login.email_login.html
+++ b/docs/latest/api/evennia.contrib.base_systems.email_login.email_login.html
@@ -153,7 +153,7 @@ the module given by settings.CONNECTION_SCREEN_MODULE.
-
-
aliases = ['co', 'conn', 'con']
+aliases = ['conn', 'co', 'con']
@@ -183,7 +183,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'co conn con', 'category': 'general', 'key': 'connect', 'no_prefix': ' co conn 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': '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 '}
@@ -311,7 +311,7 @@ All it does is display the connect screen.
-
-
aliases = ['l', 'look']
+aliases = ['look', 'l']
@@ -337,7 +337,7 @@ All it does is display the connect screen.
-
-
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 '}
+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 '}
@@ -355,7 +355,7 @@ for simplicity. It shows a pane of info.
-
-
aliases = ['h', '?']
+aliases = ['?', 'h']
@@ -381,7 +381,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/latest/api/evennia.contrib.base_systems.ingame_python.commands.html b/docs/latest/api/evennia.contrib.base_systems.ingame_python.commands.html
index 10d456bfec..e75581b399 100644
--- a/docs/latest/api/evennia.contrib.base_systems.ingame_python.commands.html
+++ b/docs/latest/api/evennia.contrib.base_systems.ingame_python.commands.html
@@ -130,7 +130,7 @@
-
-
aliases = ['@calls', '@callbacks', '@callback']
+aliases = ['@callbacks', '@callback', '@calls']
@@ -211,7 +211,7 @@ on user permission.
-
-
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 '}
+search_index_entry = {'aliases': '@callbacks @callback @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callbacks callback calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}
diff --git a/docs/latest/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html b/docs/latest/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html
index 9cb93a4627..0b54e83fe8 100644
--- a/docs/latest/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html
+++ b/docs/latest/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html
@@ -174,7 +174,7 @@ aliases to an already joined channel.
-
-
aliases = ['aliaschan', 'chanalias']
+aliases = ['chanalias', 'aliaschan']
@@ -205,7 +205,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 '}
@@ -231,7 +231,7 @@ for that channel.
-
-
aliases = ['delchanalias', 'delaliaschan']
+aliases = ['delaliaschan', 'delchanalias']
@@ -262,7 +262,7 @@ for that channel.
-
-
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 "}
+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 "}
diff --git a/docs/latest/api/evennia.contrib.full_systems.evscaperoom.commands.html b/docs/latest/api/evennia.contrib.full_systems.evscaperoom.commands.html
index 08876ed0b3..c11ca02b2a 100644
--- a/docs/latest/api/evennia.contrib.full_systems.evscaperoom.commands.html
+++ b/docs/latest/api/evennia.contrib.full_systems.evscaperoom.commands.html
@@ -225,7 +225,7 @@ the operation will be general or on the room.
-
-
aliases = ['chicken out', 'abort', 'q', 'quit']
+aliases = ['quit', 'abort', 'q', 'chicken out']
@@ -249,7 +249,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'chicken out abort q quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' chicken out abort q quit', '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 '}
@@ -270,7 +270,7 @@ set in self.parse())
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -304,7 +304,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 '}
@@ -385,7 +385,7 @@ shout
-
-
aliases = ['whisper', ';', 'shout']
+aliases = [';', 'whisper', 'shout']
@@ -414,7 +414,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': '; 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 '}
@@ -504,7 +504,7 @@ looks and what actions is available.
-
-
aliases = ['unfocus', 'e', 'ex', 'examine']
+aliases = ['e', 'ex', 'examine', 'unfocus']
@@ -533,7 +533,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'unfocus e ex examine', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' unfocus e ex examine', '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': 'e ex examine unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' e ex 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 '}
@@ -595,7 +595,7 @@ set in self.parse())
-
-
aliases = ['i', 'inventory', 'inv', 'give']
+aliases = ['give', 'i', 'inventory', 'inv']
@@ -619,7 +619,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'i inventory inv give', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' i inventory inv give', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}
+search_index_entry = {'aliases': 'give i inventory inv', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' give i inventory inv', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}
@@ -640,7 +640,7 @@ set in self.parse())
-
-
aliases = ['@open', '@dig']
+aliases = ['@dig', '@open']
@@ -663,7 +663,7 @@ to all the variables defined therein.
-
-
search_index_entry = {'aliases': '@open @dig', 'category': 'general', 'key': 'open', 'no_prefix': ' open dig', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}
+search_index_entry = {'aliases': '@dig @open', 'category': 'general', 'key': 'open', 'no_prefix': ' dig open', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}
diff --git a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_basic.html b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_basic.html
index 9dd6a535f0..c662d4ed02 100644
--- a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_basic.html
+++ b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_basic.html
@@ -686,7 +686,7 @@ if there are still any actions you can take.
-
-
aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -712,7 +712,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}
+search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}
diff --git a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_equip.html b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_equip.html
index 0bed424fda..b43d0f5a48 100644
--- a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_equip.html
+++ b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_equip.html
@@ -581,7 +581,7 @@ if there are still any actions you can take.
-
-
aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -601,7 +601,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}
+search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}
diff --git a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_items.html b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_items.html
index 9b7607f915..1e2a340556 100644
--- a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_items.html
+++ b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_items.html
@@ -704,7 +704,7 @@ if there are still any actions you can take.
-
-
aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -724,7 +724,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}
+search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}
diff --git a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_magic.html b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_magic.html
index 0f29530eac..62ecd7c88e 100644
--- a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_magic.html
+++ b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_magic.html
@@ -483,7 +483,7 @@ if there are still any actions you can take.
-
-
aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -503,7 +503,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}
+search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}
diff --git a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_range.html b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_range.html
index d06a19f299..66eedd87ae 100644
--- a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_range.html
+++ b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_range.html
@@ -943,7 +943,7 @@ if there are still any actions you can take.
-
-
aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -963,7 +963,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}
+search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}
diff --git a/docs/latest/api/evennia.contrib.grid.extended_room.extended_room.html b/docs/latest/api/evennia.contrib.grid.extended_room.extended_room.html
index 5900224179..c723345f26 100644
--- a/docs/latest/api/evennia.contrib.grid.extended_room.extended_room.html
+++ b/docs/latest/api/evennia.contrib.grid.extended_room.extended_room.html
@@ -657,7 +657,7 @@ look *<account&g
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -677,7 +677,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/latest/api/evennia.contrib.rpg.dice.dice.html b/docs/latest/api/evennia.contrib.rpg.dice.dice.html
index fad4cb5e02..3d7ee8d157 100644
--- a/docs/latest/api/evennia.contrib.rpg.dice.dice.html
+++ b/docs/latest/api/evennia.contrib.rpg.dice.dice.html
@@ -340,7 +340,7 @@ everyone but the person rolling.
-
-
aliases = ['roll', '@dice']
+aliases = ['@dice', 'roll']
@@ -366,7 +366,7 @@ everyone but the person rolling.
-
-
search_index_entry = {'aliases': 'roll @dice', 'category': 'general', 'key': 'dice', 'no_prefix': ' roll dice', 'tags': '', 'text': "\n roll dice\n\n Usage:\n dice[/switch] <nr>d<sides> [modifier] [success condition]\n\n Switch:\n hidden - tell the room the roll is being done, but don't show the result\n secret - don't inform the room about neither roll nor result\n\n Examples:\n dice 3d6 + 4\n dice 1d100 - 2 < 50\n\n This will roll the given number of dice with given sides and modifiers.\n So e.g. 2d6 + 3 means to 'roll a 6-sided die 2 times and add the result,\n then add 3 to the total'.\n Accepted modifiers are +, -, * and /.\n A success condition is given as normal Python conditionals\n (<,>,<=,>=,==,!=). So e.g. 2d6 + 3 > 10 means that the roll will succeed\n only if the final result is above 8. If a success condition is given, the\n outcome (pass/fail) will be echoed along with how much it succeeded/failed\n with. The hidden/secret switches will hide all or parts of the roll from\n everyone but the person rolling.\n "}
+search_index_entry = {'aliases': '@dice roll', 'category': 'general', 'key': 'dice', 'no_prefix': ' dice roll', 'tags': '', 'text': "\n roll dice\n\n Usage:\n dice[/switch] <nr>d<sides> [modifier] [success condition]\n\n Switch:\n hidden - tell the room the roll is being done, but don't show the result\n secret - don't inform the room about neither roll nor result\n\n Examples:\n dice 3d6 + 4\n dice 1d100 - 2 < 50\n\n This will roll the given number of dice with given sides and modifiers.\n So e.g. 2d6 + 3 means to 'roll a 6-sided die 2 times and add the result,\n then add 3 to the total'.\n Accepted modifiers are +, -, * and /.\n A success condition is given as normal Python conditionals\n (<,>,<=,>=,==,!=). So e.g. 2d6 + 3 > 10 means that the roll will succeed\n only if the final result is above 8. If a success condition is given, the\n outcome (pass/fail) will be echoed along with how much it succeeded/failed\n with. The hidden/secret switches will hide all or parts of the roll from\n everyone but the person rolling.\n "}
diff --git a/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html b/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html
index 269a797481..5749a8d5e1 100644
--- a/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html
+++ b/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html
@@ -480,7 +480,7 @@ turn of combat, performing everyone’s actions in random order.
-
-
aliases = ['hit', 'turnbased combat']
+aliases = ['turnbased combat', 'hit']
@@ -526,7 +526,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/latest/api/evennia.contrib.tutorials.evadventure.combat_twitch.html b/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_twitch.html
index 439688cc0f..2d9f9a7a5d 100644
--- a/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_twitch.html
+++ b/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_twitch.html
@@ -395,7 +395,7 @@ look *<account&g
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -415,7 +415,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 '}
@@ -491,7 +491,7 @@ boost INT Wizard Goblin
-
-
aliases = ['foil', 'boost']
+aliases = ['boost', 'foil']
@@ -525,7 +525,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'foil boost', 'category': 'combat', 'key': 'stunt', 'no_prefix': ' foil boost', 'tags': '', 'text': '\n Perform a combat stunt, that boosts an ally against a target, or\n foils an enemy, giving them disadvantage against an ally.\n\n Usage:\n boost [ability] <recipient> <target>\n foil [ability] <recipient> <target>\n boost [ability] <target> (same as boost me <target>)\n foil [ability] <target> (same as foil <target> me)\n\n Example:\n boost STR me Goblin\n boost DEX Goblin\n foil STR Goblin me\n foil INT Goblin\n boost INT Wizard Goblin\n\n '}
+search_index_entry = {'aliases': 'boost foil', 'category': 'combat', 'key': 'stunt', 'no_prefix': ' boost foil', 'tags': '', 'text': '\n Perform a combat stunt, that boosts an ally against a target, or\n foils an enemy, giving them disadvantage against an ally.\n\n Usage:\n boost [ability] <recipient> <target>\n foil [ability] <recipient> <target>\n boost [ability] <target> (same as boost me <target>)\n foil [ability] <target> (same as foil <target> me)\n\n Example:\n boost STR me Goblin\n boost DEX Goblin\n foil STR Goblin me\n foil INT Goblin\n boost INT Wizard Goblin\n\n '}
diff --git a/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html b/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html
index 6e54a30a6b..98c34b6087 100644
--- a/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html
+++ b/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html
@@ -307,7 +307,7 @@ unwear <item>
-
-
aliases = ['unwield', 'unwear']
+aliases = ['unwear', 'unwield']
@@ -331,7 +331,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'unwield unwear', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwield unwear', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove <item>\n unwield <item>\n unwear <item>\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}
+search_index_entry = {'aliases': 'unwear unwield', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwear unwield', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove <item>\n unwield <item>\n unwear <item>\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}
diff --git a/docs/latest/api/evennia.contrib.tutorials.red_button.red_button.html b/docs/latest/api/evennia.contrib.tutorials.red_button.red_button.html
index 576d79a687..39bab5f910 100644
--- a/docs/latest/api/evennia.contrib.tutorials.red_button.red_button.html
+++ b/docs/latest/api/evennia.contrib.tutorials.red_button.red_button.html
@@ -266,7 +266,7 @@ check if the lid is open or closed.
-
-
aliases = ['smash lid', 'break lid', 'smash']
+aliases = ['smash', 'break lid', 'smash lid']
@@ -293,7 +293,7 @@ break.
-
-
search_index_entry = {'aliases': 'smash lid break lid smash', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash lid break lid smash', '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 break lid smash lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash break lid smash 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 '}
@@ -520,7 +520,7 @@ be mutually exclusive.
-
-
aliases = ['feel', 'examine', 'l', 'listen', 'ex', 'get']
+aliases = ['feel', 'l', 'listen', 'ex', 'examine', 'get']
@@ -546,7 +546,7 @@ be mutually exclusive.
-
-
search_index_entry = {'aliases': 'feel examine l listen ex get', 'category': 'general', 'key': 'look', 'no_prefix': ' feel examine l listen ex get', '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': 'feel l listen ex examine get', 'category': 'general', 'key': 'look', 'no_prefix': ' feel l listen ex examine get', '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/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html b/docs/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html
index 650cc4844b..46ec162789 100644
--- a/docs/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html
+++ b/docs/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html
@@ -439,7 +439,7 @@ of the object. We overload it with our own version.
-
-
aliases = ['light', 'burn']
+aliases = ['burn', 'light']
@@ -466,7 +466,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 '}
@@ -570,7 +570,7 @@ shift green root up/down
-
-
aliases = ['move', 'push', 'shiftroot', 'pull']
+aliases = ['pull', 'push', 'shiftroot', 'move']
@@ -606,7 +606,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': 'pull push shiftroot move', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' pull push shiftroot move', '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 '}
@@ -623,7 +623,7 @@ yellow/green - horizontal roots
-
-
aliases = ['press button', 'button', 'push button']
+aliases = ['press button', 'push button', 'button']
@@ -649,7 +649,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'press button button push button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button button push button', 'tags': '', 'text': '\n Presses a button.\n '}
+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 '}
@@ -793,7 +793,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
aliases = ['fight', 'defend', 'slash', 'thrust', 'parry', 'stab', 'hit', 'kill', 'bash', 'chop', 'pierce']
+aliases = ['thrust', 'kill', 'stab', 'pierce', 'fight', 'parry', 'hit', 'slash', 'chop', 'defend', 'bash']
@@ -819,7 +819,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
search_index_entry = {'aliases': 'fight defend slash thrust parry stab hit kill bash chop pierce', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' fight defend slash thrust parry stab hit kill bash chop pierce', '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 stab pierce fight parry hit slash chop defend bash', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' thrust kill stab pierce fight parry hit slash chop defend bash', '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/latest/api/evennia.contrib.tutorials.tutorial_world.rooms.html b/docs/latest/api/evennia.contrib.tutorials.tutorial_world.rooms.html
index a4badaee53..02b456314b 100644
--- a/docs/latest/api/evennia.contrib.tutorials.tutorial_world.rooms.html
+++ b/docs/latest/api/evennia.contrib.tutorials.tutorial_world.rooms.html
@@ -262,7 +262,7 @@ code except for adding in the details.
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -277,7 +277,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 '}
@@ -830,7 +830,7 @@ if they fall off the bridge.
-
-
aliases = ['h', '?']
+aliases = ['?', 'h']
@@ -856,7 +856,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 '}
@@ -982,7 +982,7 @@ to find something.
-
-
aliases = ['fiddle', 'feel around', 'feel', 'l', 'search']
+aliases = ['feel', 'l', 'search', 'fiddle', 'feel around']
@@ -1010,7 +1010,7 @@ random chance of eventually finding a light source.
-
-
search_index_entry = {'aliases': 'fiddle feel around feel l search', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' fiddle feel around feel l 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 l search fiddle feel around', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel l search 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 '}
diff --git a/docs/latest/api/evennia.contrib.utils.git_integration.git_integration.html b/docs/latest/api/evennia.contrib.utils.git_integration.git_integration.html
index dd4ce845b4..48ad97ddde 100644
--- a/docs/latest/api/evennia.contrib.utils.git_integration.git_integration.html
+++ b/docs/latest/api/evennia.contrib.utils.git_integration.git_integration.html
@@ -222,7 +222,7 @@ git evennia pull - Pull the latest evennia code.
-
-
directory = '/tmp/tmpcbzv8qix/22067c32dc76cef8a423c261d77ea9c1752cc309/evennia'
+directory = '/tmp/tmpcqt2j3bj/cf5123ad568c9df832980d48bcaa1a9e4b65bb75/evennia'
@@ -283,7 +283,7 @@ git pull - Pull the latest code from your current branch.
-
-
directory = '/tmp/tmpcbzv8qix/22067c32dc76cef8a423c261d77ea9c1752cc309/evennia/game_template'
+directory = '/tmp/tmpcqt2j3bj/cf5123ad568c9df832980d48bcaa1a9e4b65bb75/evennia/game_template'
diff --git a/docs/latest/api/evennia.objects.objects.html b/docs/latest/api/evennia.objects.objects.html
index 242993ca82..2b10bb6a25 100644
--- a/docs/latest/api/evennia.objects.objects.html
+++ b/docs/latest/api/evennia.objects.objects.html
@@ -974,6 +974,28 @@ lock check for superuser (be careful with this one).
+
+-
+
filter_visible(obj_list, looker, **kwargs)[source]
+Filter a list of objects to only include those that are visible to the looker.
+
+- Parameters
+
+obj_list (list) – List of objects to filter.
+looker (Object) – Object doing the looking.
+**kwargs – Arbitrary data for use when overriding.
+
+
+- Returns
+list – The filtered list of visible objects.
+
+
+Notes
+By default this simply checks the ‘view’ and ‘search’ locks on each object in the list.
+Override this
+method to implement custom visibility mechanics.
+
+
-
get_display_name(looker=None, **kwargs)[source]
@@ -1035,6 +1057,7 @@ from this method.
method is used.
return_string (bool) – If True, return only the singular form if count is 0,1 or
the plural form otherwise. If False (default), return both forms as a tuple.
+
no_article (bool) – If True, do not return an article if count is 1.
Returns
@@ -1046,11 +1069,14 @@ the plural form otherwise. If
False (default), return both form
-
Examples
-
-- ::
obj.get_numbered_name(3, looker, key=”foo”) -> (“a foo”, “three foos”)
-
-
+
Examples:
+
- obj.get_numbered_name(3, looker, key="foo") -> ("a foo", "three foos")
+- obj.get_numbered_name(1, looker, key="Foobert", return_string=True)
+ -> "a Foobert"
+- obj.get_numbered_name(1, looker, key="Foobert", return_string=True, no_article=True)
+ -> "Foobert"
+
+
@@ -1803,8 +1829,10 @@ get called.
-
get_visible_contents(looker, **kwargs)[source]
-Get all contents of this object that a looker can see (whatever that means, by default it
-checks the ‘view’ and ‘search’ locks), grouped by type. Helper method to return_appearance.
+DEPRECATED
+Get all contents of this object that a looker can see (whatever that means, by default it
+checks the ‘view’ and ‘search’ locks and excludes the looker themselves), grouped by type.
+Helper method to return_appearance.
- Parameters
@@ -1827,7 +1855,8 @@ lists are the actual objects.
-
get_content_names(looker, **kwargs)[source]
-Get the proper names for all contents of this object. Helper method
+
DEPRECATED
+Get the proper names for all contents of this object. Helper method
for return_appearance.
- Parameters
diff --git a/docs/latest/api/evennia.utils.eveditor.html b/docs/latest/api/evennia.utils.eveditor.html
index bac047fd06..d79b8aba82 100644
--- a/docs/latest/api/evennia.utils.eveditor.html
+++ b/docs/latest/api/evennia.utils.eveditor.html
@@ -350,7 +350,7 @@ indentation.
-
-
aliases = [':I', ':u', ':>', ':s', ':::', '::', ':!', ':fi', ':q', ':r', ':fd', ':f', ':uu', ':<', ':h', ':A', ':w', ':i', ':p', ':S', ':', ':DD', ':j', ':y', ':dw', ':UU', ':=', ':wq', ':echo', ':q!', ':dd', ':x']
+aliases = [':u', ':h', ':A', '::', ':uu', ':I', ':j', ':DD', ':r', ':>', ':fd', ':S', ':dd', ':echo', ':!', ':::', ':=', ':s', ':UU', ':x', ':q', ':wq', ':w', ':i', ':f', ':<', ':', ':y', ':q!', ':p', ':fi', ':dw']
@@ -378,7 +378,7 @@ efficient presentation.
-
-
search_index_entry = {'aliases': ':I :u :> :s ::: :: :! :fi :q :r :fd :f :uu :< :h :A :w :i :p :S : :DD :j :y :dw :UU := :wq :echo :q! :dd :x', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :I :u :> :s ::: :: :! :fi :q :r :fd :f :uu :< :h :A :w :i :p :S : :DD :j :y :dw :UU := :wq :echo :q! :dd :x', 'tags': '', 'text': '\n Commands for the editor\n '}
+search_index_entry = {'aliases': ':u :h :A :: :uu :I :j :DD :r :> :fd :S :dd :echo :! ::: := :s :UU :x :q :wq :w :i :f :< : :y :q! :p :fi :dw', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :u :h :A :: :uu :I :j :DD :r :> :fd :S :dd :echo :! ::: := :s :UU :x :q :wq :w :i :f :< : :y :q! :p :fi :dw', 'tags': '', 'text': '\n Commands for the editor\n '}
diff --git a/docs/latest/api/evennia.utils.evmenu.html b/docs/latest/api/evennia.utils.evmenu.html
index c3f8a98dce..2a51692445 100644
--- a/docs/latest/api/evennia.utils.evmenu.html
+++ b/docs/latest/api/evennia.utils.evmenu.html
@@ -953,7 +953,7 @@ single question.
+aliases = ['no', 'y', 'yes', '__nomatch_command', 'a', 'abort', 'n']
@@ -979,7 +979,7 @@ single question.
+search_index_entry = {'aliases': 'no y yes __nomatch_command a abort n', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' no y yes __nomatch_command a abort n', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}
diff --git a/docs/latest/api/evennia.utils.evmore.html b/docs/latest/api/evennia.utils.evmore.html
index 4d3e19fef2..2e89464c7d 100644
--- a/docs/latest/api/evennia.utils.evmore.html
+++ b/docs/latest/api/evennia.utils.evmore.html
@@ -151,7 +151,7 @@ the caller.msg() construct every time the page is updated.
-
-
aliases = ['n', 'top', 'end', 'e', 'p', 'next', 'q', 'a', 't', 'quit', 'previous', 'abort']
+aliases = ['top', 'previous', 'end', 'p', 'a', 'quit', 'e', 'next', 'abort', 'n', 't', 'q']
@@ -177,7 +177,7 @@ the caller.msg() construct every time the page is updated.
-
-
search_index_entry = {'aliases': 'n top end e p next q a t quit previous abort', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' n top end e p next q a t quit previous abort', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}
+search_index_entry = {'aliases': 'top previous end p a quit e next abort n t q', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' top previous end p a quit e next abort n t q', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}
diff --git a/docs/latest/genindex.html b/docs/latest/genindex.html
index ba82cdebc8..c9a45bc8a1 100644
--- a/docs/latest/genindex.html
+++ b/docs/latest/genindex.html
@@ -9516,6 +9516,8 @@
filter_backends (evennia.web.api.views.TypeclassViewSetMixin attribute)
filter_name() (evennia.web.api.filters.BaseTypeclassFilterSet static method)
+
+
filter_visible() (evennia.objects.objects.DefaultObject method)
filter_xyz() (evennia.contrib.grid.xyzgrid.xyzroom.XYZManager method)
diff --git a/docs/latest/objects.inv b/docs/latest/objects.inv
index e2bcf9b8beecf79376d60cbaf8d25a8c9a8f9378..e4b5068e8a3b343b102bea377f409db22760236e 100644
GIT binary patch
delta 139851
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 |