# In server/conf/settings.py
# ...
diff --git a/docs/1.0/_sources/Coding/Changelog.md.txt b/docs/1.0/_sources/Coding/Changelog.md.txt
index 54ce44675f..b0c5fc4d04 100644
--- a/docs/1.0/_sources/Coding/Changelog.md.txt
+++ b/docs/1.0/_sources/Coding/Changelog.md.txt
@@ -1,7 +1,8 @@
# Changelog
-## Main
+## Main branch (git)
+- Doc: Add warning about `Django-wiki` (in wiki tutorial) only supporting Django <4.0.
- Doc: Expanded `XYZGrid` docstring to clarify `MapLink` class will not itself
spawn anything, children must define their prototypes explicitly.
- Doc: Explained why `AttributeProperty.at_get/set` will not be called if
@@ -13,6 +14,8 @@
## Evennia 1.2.0
+Feb 25, 2023
+
- Bug fix: `TagHandler.get` did not consistently cast to string (aMiss-aWry)
- Bug fix: Channels hard to manage if given in different case (aMiss-aWry)
- Feature: `logger.delete_log` function for deleting custom logs from inside the
@@ -29,6 +32,8 @@
## Evennia 1.1.1
+Jan 15, 2023
+
- Bug fix: Better handler malformed alias-regex given to nickhandler. A
regex-relevant character in a channel alias could cause server to not restart.
- Feature: Add `attr` keyword to `create_channel`. This allows setting
diff --git a/docs/1.0/_sources/Howtos/Web-Add-a-wiki.md.txt b/docs/1.0/_sources/Howtos/Web-Add-a-wiki.md.txt
index b547f3d73c..ddffbca1b3 100644
--- a/docs/1.0/_sources/Howtos/Web-Add-a-wiki.md.txt
+++ b/docs/1.0/_sources/Howtos/Web-Add-a-wiki.md.txt
@@ -1,22 +1,22 @@
# Add a wiki on your website
-**Before doing this tutorial you will probably want to read the intro in
-[Basic Web tutorial](./Web-Changing-Webpage.md).** Reading the three first parts of the
-[Django tutorial](https://docs.djangoproject.com/en/1.9/intro/tutorial01/) might help as well.
+```{warning}
+As of 2023, The [django wiki](https://django-wiki.readthedocs.io/en/main/) only supports Django 4.0. Evennia requires Django 4.1+. While the django-wiki is still active and will hopefully be updated eventually, for now there is likely to be issues or trouble to install. This tutorial will probably not work out of the gate.
+```
+```{note}
+Before doing this tutorial you will probably want to read the intro in [Basic Web tutorial](./Web-Changing-Webpage.md). Reading the three first parts of the [Django tutorial](https://docs.djangoproject.com/en/1.9/intro/tutorial01/) might help as well.
+
+```
This tutorial will provide a step-by-step process to installing a wiki on your website.
-Fortunately, you don't have to create the features manually, since it has been done by others, and
-we can integrate their work quite easily with Django. I have decided to focus on
+Fortunately, you don't have to create the features manually, since it has been done by others, and we can integrate their work quite easily with Django. I have decided to focus on
the [Django-wiki](https://django-wiki.readthedocs.io/).
-The [Django-wiki](https://django-wiki.readthedocs.io/) offers a lot of features associated with wikis, is actively maintained (at this time, anyway), and isn't too difficult to install in Evennia. You can
-see a [demonstration of Django-wiki here](https://demo.django-wiki.org).
+The [Django-wiki](https://django-wiki.readthedocs.io/) offers a lot of features associated with wikis, is actively maintained (at this time, anyway), and isn't too difficult to install in Evennia. You can see a [demonstration of Django-wiki here](https://demo.django-wiki.org).
## Basic installation
-You should begin by shutting down the Evennia server if it is running. We will run migrations and
-alter the virtual environment just a bit. Open a terminal and activate your Python environment, the
-one you use to run the `evennia` command.
+You should begin by shutting down the Evennia server if it is running. We will run migrations and alter the virtual environment just a bit. Open a terminal and activate your Python environment, the one you use to run the `evennia` command.
If you used the default location from the Evennia installation instructions, it should be one of the following:
@@ -39,9 +39,7 @@ It might take some time, the Django-wiki having some dependencies.
### Adding the wiki in the settings
-You will need to add a few settings to have the wiki app on your website. Open your
-`server/conf/settings.py` file and add the following at the bottom (but before importing
-`secret_settings`). Here's an example of a settings file with the Django-wiki added:
+You will need to add a few settings to have the wiki app on your website. Open your `server/conf/settings.py` file and add the following at the bottom (but before importing `secret_settings`). Here's an example of a settings file with the Django-wiki added:
```python
# Use the defaults from Evennia unless explicitly overridden
@@ -119,31 +117,22 @@ Last step! Go ahead and start up your server again.
evennia start
-Once that's finished booting, go to your evennia website (e.g. http://localhost:4001 ) and log in
-with your superuser account, if you aren't already. Then, go to your new wiki (e.g.
-http://localhost:4001/wiki ). It'll prompt you to create a starting page - put whatever you want,
-you can change it later.
+Once that's finished booting, go to your evennia website (e.g. http://localhost:4001 ) and log in with your superuser account, if you aren't already. Then, go to your new wiki (e.g. http://localhost:4001/wiki ). It'll prompt you to create a starting page - put whatever you want, you can change it later.
Congratulations! You're all done!
## Defining wiki permissions
-A wiki is usually intended as a collaborative effort - but you probably still want to set
-some rules about who is allowed to do what. Who can create new articles? Edit them? Delete
-them? Etc.
+A wiki is usually intended as a collaborative effort - but you probably still want to set some rules about who is allowed to do what. Who can create new articles? Edit them? Delete them? Etc.
The two simplest ways to do this are to use Django-wiki's group-based permissions
-system - or, since this is an Evennia site, to define your own custom permission rules
-tied to Evennia's permissions system in your settings file.
+system - or, since this is an Evennia site, to define your own custom permission rules tied to Evennia's permissions system in your settings file.
### Group permissions
-The wiki itself controls reading/editing permissions per article. The creator of an article will
-always have read/write permissions on that article. Additionally, the article will have Group-based
-permissions and general permissions.
+The wiki itself controls reading/editing permissions per article. The creator of an article will always have read/write permissions on that article. Additionally, the article will have Group-based permissions and general permissions.
-By default, Evennia's permission groups *won't* be recognized by the wiki, so you'll have to create your own.
-Go to the Groups page of your game's Django admin panel and add whichever permission groups you want for your wiki here.
+By default, Evennia's permission groups *won't* be recognized by the wiki, so you'll have to create your own. Go to the Groups page of your game's Django admin panel and add whichever permission groups you want for your wiki here.
***Note:*** *If you want to connect those groups to your game's permission levels, you'll need to modify the game to apply both to accounts.*
@@ -151,9 +140,7 @@ Once you've added those groups, they'll be usable in your wiki right away!
### Settings permissions
-Django-wiki also allows you to bypass its article-based permissions with custom site-wide permissions
-rules in your settings file. If you don't want to use the Group system, or if you want a simple
-solution for connecting the Evennia permission levels to wiki access, this is the way to go.
+Django-wiki also allows you to bypass its article-based permissions with custom site-wide permissions rules in your settings file. If you don't want to use the Group system, or if you want a simple solution for connecting the Evennia permission levels to wiki access, this is the way to go.
Here's an example of a basic set-up that would go in your `settings.py` file:
diff --git a/docs/1.0/api/evennia.commands.default.building.html b/docs/1.0/api/evennia.commands.default.building.html
index be7a2464bd..60a7bd39ca 100644
--- a/docs/1.0/api/evennia.commands.default.building.html
+++ b/docs/1.0/api/evennia.commands.default.building.html
@@ -592,7 +592,7 @@ You can specify the /force switch to bypass this confirmation.
-
-
aliases = ['@del', '@delete']
+aliases = ['@delete', '@del']
@@ -633,7 +633,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 '}
@@ -1345,7 +1345,7 @@ server settings.
-
-
aliases = ['@parent', '@typeclasses', '@swap', '@type', '@update']
+aliases = ['@parent', '@type', '@typeclasses', '@update', '@swap']
@@ -1376,7 +1376,7 @@ server settings.
-
-
search_index_entry = {'aliases': '@parent @typeclasses @swap @type @update', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass parent typeclasses swap type update', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}
+search_index_entry = {'aliases': '@parent @type @typeclasses @update @swap', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass parent type typeclasses update swap', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}
@@ -1531,7 +1531,7 @@ If object is not specified, the current location is examined.
-
-
aliases = ['@ex', '@exam']
+aliases = ['@exam', '@ex']
@@ -1799,7 +1799,7 @@ the cases, see the module doc.
-
-
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 '}
+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 '}
diff --git a/docs/1.0/api/evennia.commands.default.general.html b/docs/1.0/api/evennia.commands.default.general.html
index 61080a99ca..9fd9f6d231 100644
--- a/docs/1.0/api/evennia.commands.default.general.html
+++ b/docs/1.0/api/evennia.commands.default.general.html
@@ -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 '}
@@ -709,7 +709,7 @@ automatically begin with your name.
-
-
aliases = [':', 'emote']
+aliases = ['emote', ':']
@@ -750,7 +750,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 "}
@@ -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 1fd72e3fc9..fdc40c105d 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 = ['@delays', '@task']
+aliases = ['@task', '@delays']
@@ -729,7 +729,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/1.0/api/evennia.commands.default.tests.html b/docs/1.0/api/evennia.commands.default.tests.html
index 498485700e..003ddc4165 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/tmp06ma2pnj/8f295e1f1dabba2a5a0bfecaaef615729cc7f678/evennia/contrib/tutorials/red_button/red_button.py'>
+red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmptu4r5k3_/eb4ad267e1c565ec207d408faa343a2091bfc3c7/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 abe8cbedee..dc4c342ffb 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 = ['con', 'co', 'conn']
+aliases = ['co', 'con', 'conn']
@@ -157,7 +157,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co conn', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}
+search_index_entry = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con conn', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}
@@ -181,7 +181,7 @@ create “account name” “pass word”
-
-
aliases = ['cre', 'cr']
+aliases = ['cr', 'cre']
@@ -218,7 +218,7 @@ create “account name” “pass word”
-
-
search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}
+search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}
@@ -292,7 +292,7 @@ All it does is display the connect screen.
-
-
aliases = ['l', 'look']
+aliases = ['look', 'l']
@@ -318,7 +318,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 '}
@@ -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 d3db92f8be..c0c3f92494 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 = ['con', 'co', 'conn']
+aliases = ['co', 'con', 'conn']
@@ -169,7 +169,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co conn', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}
+search_index_entry = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con conn', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}
@@ -191,7 +191,7 @@ there is no object yet before the account has logged in)
-
-
aliases = ['cre', 'cr']
+aliases = ['cr', 'cre']
@@ -227,7 +227,7 @@ name enclosed in quotes:
-
-
search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}
+search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}
@@ -291,7 +291,7 @@ All it does is display the connect screen.
-
-
aliases = ['l', 'look']
+aliases = ['look', 'l']
@@ -317,7 +317,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 '}
@@ -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 7ac64170bb..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', '@callbacks', '@calls']
+aliases = ['@calls', '@callbacks', '@callback']
@@ -197,7 +197,7 @@ on user permission.
-
-
search_index_entry = {'aliases': '@callback @callbacks @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callback callbacks calls', '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.full_systems.evscaperoom.commands.html b/docs/1.0/api/evennia.contrib.full_systems.evscaperoom.commands.html
index b2b4be44ec..3d44cccaac 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', 'q', 'abort', '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 q abort chicken out', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' quit q abort 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 '}
@@ -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', 'examine', 'e', 'unfocus']
+aliases = ['ex', 'e', 'examine', 'unfocus']
@@ -519,7 +519,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'ex examine e unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex examine e 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': '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 '}
@@ -581,7 +581,7 @@ set in self.parse())
-
-
aliases = ['i', 'give', 'inv', 'inventory']
+aliases = ['inv', 'give', 'i', 'inventory']
@@ -605,7 +605,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'i give inv inventory', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' i give inv inventory', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}
+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 '}
@@ -626,7 +626,7 @@ set in self.parse())
-
-
aliases = ['@dig', '@open']
+aliases = ['@open', '@dig']
@@ -649,7 +649,7 @@ to all the variables defined therein.
-
-
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 '}
+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 '}
diff --git a/docs/1.0/api/evennia.contrib.game_systems.barter.barter.html b/docs/1.0/api/evennia.contrib.game_systems.barter.barter.html
index 399b5a03af..440dc8cbca 100644
--- a/docs/1.0/api/evennia.contrib.game_systems.barter.barter.html
+++ b/docs/1.0/api/evennia.contrib.game_systems.barter.barter.html
@@ -745,7 +745,7 @@ try to influence the other part in the deal.
-
-
aliases = ['offers', 'deal']
+aliases = ['deal', 'offers']
@@ -771,7 +771,7 @@ try to influence the other part in the deal.
-
-
search_index_entry = {'aliases': 'offers deal', 'category': 'trading', 'key': 'status', 'no_prefix': ' offers deal', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}
+search_index_entry = {'aliases': 'deal offers', 'category': 'trading', 'key': 'status', 'no_prefix': ' deal offers', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}
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.game_systems.turnbattle.tb_basic.html b/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_basic.html
index f299f44ffd..649c83f93c 100644
--- a/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_basic.html
+++ b/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_basic.html
@@ -672,7 +672,7 @@ if there are still any actions you can take.
-
-
aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -698,7 +698,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/1.0/api/evennia.contrib.game_systems.turnbattle.tb_equip.html b/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_equip.html
index a304b541f8..93ca4d716a 100644
--- a/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_equip.html
+++ b/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_equip.html
@@ -567,7 +567,7 @@ if there are still any actions you can take.
-
-
aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -587,7 +587,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/1.0/api/evennia.contrib.game_systems.turnbattle.tb_items.html b/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_items.html
index 1fd074b40c..c81b5bb723 100644
--- a/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_items.html
+++ b/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_items.html
@@ -690,7 +690,7 @@ if there are still any actions you can take.
-
-
aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -710,7 +710,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/1.0/api/evennia.contrib.game_systems.turnbattle.tb_magic.html b/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_magic.html
index 3f7dedab0e..1ec684ed70 100644
--- a/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_magic.html
+++ b/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_magic.html
@@ -469,7 +469,7 @@ if there are still any actions you can take.
-
-
aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -489,7 +489,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/1.0/api/evennia.contrib.game_systems.turnbattle.tb_range.html b/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_range.html
index 898e554d99..628c59fe31 100644
--- a/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_range.html
+++ b/docs/1.0/api/evennia.contrib.game_systems.turnbattle.tb_range.html
@@ -929,7 +929,7 @@ if there are still any actions you can take.
-
-
aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -949,7 +949,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/1.0/api/evennia.contrib.grid.xyzgrid.commands.html b/docs/1.0/api/evennia.contrib.grid.xyzgrid.commands.html
index 3b5a7b0942..fd788e62d5 100644
--- a/docs/1.0/api/evennia.contrib.grid.xyzgrid.commands.html
+++ b/docs/1.0/api/evennia.contrib.grid.xyzgrid.commands.html
@@ -422,7 +422,7 @@ there is no room above/below you, your movement will fail.
-
-
aliases = ['dive', 'fly']
+aliases = ['fly', 'dive']
@@ -445,7 +445,7 @@ to all the variables defined therein.
-
-
search_index_entry = {'aliases': 'dive fly', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' dive fly', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}
+search_index_entry = {'aliases': 'fly dive', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' fly dive', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}
diff --git a/docs/1.0/api/evennia.contrib.rpg.dice.dice.html b/docs/1.0/api/evennia.contrib.rpg.dice.dice.html
index 23efd4d40b..00ab0d3ec2 100644
--- a/docs/1.0/api/evennia.contrib.rpg.dice.dice.html
+++ b/docs/1.0/api/evennia.contrib.rpg.dice.dice.html
@@ -305,7 +305,7 @@ everyone but the person rolling.
-
-
aliases = ['roll', '@dice']
+aliases = ['@dice', 'roll']
@@ -331,7 +331,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/1.0/api/evennia.contrib.rpg.rpsystem.rpsystem.html b/docs/1.0/api/evennia.contrib.rpg.rpsystem.rpsystem.html
index 5514fec9da..dec686a800 100644
--- a/docs/1.0/api/evennia.contrib.rpg.rpsystem.rpsystem.html
+++ b/docs/1.0/api/evennia.contrib.rpg.rpsystem.rpsystem.html
@@ -865,7 +865,7 @@ Using the command without arguments will list all current recogs.
-
-
aliases = ['forget', 'recognize']
+aliases = ['recognize', 'forget']
@@ -892,7 +892,7 @@ Using the command without arguments will list all current recogs.
-
-
search_index_entry = {'aliases': 'forget recognize', 'category': 'general', 'key': 'recog', 'no_prefix': ' forget recognize', 'tags': '', 'text': '\n Recognize another person in the same room.\n\n Usage:\n recog\n recog sdesc as alias\n forget alias\n\n Example:\n recog tall man as Griatch\n forget griatch\n\n This will assign a personal alias for a person, or forget said alias.\n Using the command without arguments will list all current recogs.\n\n '}
+search_index_entry = {'aliases': 'recognize forget', 'category': 'general', 'key': 'recog', 'no_prefix': ' recognize forget', 'tags': '', 'text': '\n Recognize another person in the same room.\n\n Usage:\n recog\n recog sdesc as alias\n forget alias\n\n Example:\n recog tall man as Griatch\n forget griatch\n\n This will assign a personal alias for a person, or forget said alias.\n Using the command without arguments will list all current recogs.\n\n '}
diff --git a/docs/1.0/api/evennia.contrib.tutorials.evadventure.commands.html b/docs/1.0/api/evennia.contrib.tutorials.evadventure.commands.html
index 084959c8bc..21173e8b15 100644
--- a/docs/1.0/api/evennia.contrib.tutorials.evadventure.commands.html
+++ b/docs/1.0/api/evennia.contrib.tutorials.evadventure.commands.html
@@ -256,7 +256,7 @@ set in self.parse())
-
-
aliases = ['i', 'inv']
+aliases = ['inv', 'i']
@@ -280,7 +280,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}
+search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}
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 644497e067..8afc1a43e7 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', 'push', 'press button']
@@ -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 push press button', 'category': 'general', 'key': 'push button', 'no_prefix': ' press push press button', '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 = ['break lid', 'smash lid', 'smash']
+aliases = ['break lid', 'smash', 'smash lid']
@@ -279,7 +279,7 @@ break.
-
-
search_index_entry = {'aliases': 'break lid smash lid smash', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' break lid smash 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': 'break lid smash smash lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' break lid smash 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 '}
@@ -379,7 +379,7 @@ be mutually exclusive.
-
-
aliases = ['push', 'press button', 'press']
+aliases = ['press', 'push', 'press button']
@@ -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 push press button', 'category': 'general', 'key': 'push button', 'no_prefix': ' press push press button', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}
@@ -506,7 +506,7 @@ be mutually exclusive.
-
-
aliases = ['get', 'l', 'ex', 'listen', 'examine', 'feel']
+aliases = ['feel', 'ex', 'l', 'examine', 'listen', 'get']
@@ -532,7 +532,7 @@ be mutually exclusive.
-
-
search_index_entry = {'aliases': 'get l ex listen examine feel', 'category': 'general', 'key': 'look', 'no_prefix': ' get l ex listen examine 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': 'feel ex l examine listen get', 'category': 'general', 'key': 'look', 'no_prefix': ' feel ex l examine listen 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/1.0/api/evennia.contrib.tutorials.tutorial_world.objects.html b/docs/1.0/api/evennia.contrib.tutorials.tutorial_world.objects.html
index 0d31a0a7c2..0a8b53fc51 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
@@ -556,7 +556,7 @@ shift green root up/down
-
-
aliases = ['push', 'pull', 'move', 'shiftroot']
+aliases = ['shiftroot', 'move', 'push', 'pull']
@@ -592,7 +592,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'push pull move shiftroot', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' push pull move shiftroot', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}
+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 '}
@@ -779,7 +779,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
aliases = ['pierce', 'defend', 'bash', 'parry', 'thrust', 'chop', 'stab', 'fight', 'hit', 'slash', 'kill']
+aliases = ['slash', 'chop', 'stab', 'pierce', 'fight', 'defend', 'bash', 'hit', 'thrust', 'parry', 'kill']
@@ -805,7 +805,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
search_index_entry = {'aliases': 'pierce defend bash parry thrust chop stab fight hit slash kill', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' pierce defend bash parry thrust chop stab fight hit slash kill', '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': 'slash chop stab pierce fight defend bash hit thrust parry kill', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' slash chop stab pierce fight defend bash hit thrust parry kill', '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 64fe44bce2..1123a8dc90 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
@@ -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 = ['l', 'search', 'fiddle', 'feel around', 'feel']
+aliases = ['feel', 'fiddle', 'feel around', 'search', 'l']
@@ -996,7 +996,7 @@ random chance of eventually finding a light source.
-
-
search_index_entry = {'aliases': 'l search fiddle feel around feel', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l search fiddle feel around feel', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}
+search_index_entry = {'aliases': 'feel fiddle feel around search l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel fiddle feel around search l', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}
diff --git a/docs/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 9310acd4ab..6df2da4275 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/tmp06ma2pnj/8f295e1f1dabba2a5a0bfecaaef615729cc7f678/evennia'
+directory = '/tmp/tmptu4r5k3_/eb4ad267e1c565ec207d408faa343a2091bfc3c7/evennia'
@@ -269,7 +269,7 @@ git pull - Pull the latest code from your current branch.
-
-
directory = '/tmp/tmp06ma2pnj/8f295e1f1dabba2a5a0bfecaaef615729cc7f678/evennia/game_template'
+directory = '/tmp/tmptu4r5k3_/eb4ad267e1c565ec207d408faa343a2091bfc3c7/evennia/game_template'
diff --git a/docs/1.0/api/evennia.utils.eveditor.html b/docs/1.0/api/evennia.utils.eveditor.html
index dce8e77722..d4ece1259e 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 = [':q', ':q!', ':dw', ':s', ':fd', ':dd', ':i', ':UU', ':j', ':h', ':p', ':w', ':echo', ':::', ':S', ':A', ':f', '::', ':fi', ':wq', ':=', ':u', ':>', ':x', ':uu', ':', ':<', ':!', ':r', ':y', ':DD', ':I']
+aliases = [':fd', ':uu', ':dw', ':h', ':x', ':<', ':DD', ':i', ':u', ':S', ':p', ':', ':dd', ':f', ':fi', ':A', ':r', ':echo', ':>', ':!', ':y', ':wq', ':::', ':s', '::', ':j', ':UU', ':w', ':q', ':q!', ':I', ':=']
@@ -364,7 +364,7 @@ efficient presentation.
-
-
search_index_entry = {'aliases': ':q :q! :dw :s :fd :dd :i :UU :j :h :p :w :echo ::: :S :A :f :: :fi :wq := :u :> :x :uu : :< :! :r :y :DD :I', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :q :q! :dw :s :fd :dd :i :UU :j :h :p :w :echo ::: :S :A :f :: :fi :wq := :u :> :x :uu : :< :! :r :y :DD :I', 'tags': '', 'text': '\n Commands for the editor\n '}
+search_index_entry = {'aliases': ':fd :uu :dw :h :x :< :DD :i :u :S :p : :dd :f :fi :A :r :echo :> :! :y :wq ::: :s :: :j :UU :w :q :q! :I :=', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :fd :uu :dw :h :x :< :DD :i :u :S :p : :dd :f :fi :A :r :echo :> :! :y :wq ::: :s :: :j :UU :w :q :q! :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 30a6cf589c..7fc3550e28 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', 'no', '__nomatch_command', 'yes', 'y', 'abort']
@@ -957,7 +957,7 @@ single question.
+search_index_entry = {'aliases': 'a n no __nomatch_command yes y abort', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' a n no __nomatch_command yes y abort', '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 9dd63c534d..675d0c34fb 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 = ['next', 'top', 'p', 'a', 'abort', 't', 'n', 'previous', 'e', 'end', 'quit', 'q']
+aliases = ['quit', 'previous', 'a', 'q', 't', 'e', 'next', 'n', 'end', 'p', 'top', 'abort']
@@ -163,7 +163,7 @@ the caller.msg() construct every time the page is updated.
-
-
search_index_entry = {'aliases': 'next top p a abort t n previous e end quit q', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' next top p a abort t n previous e end quit q', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}
+search_index_entry = {'aliases': 'quit previous a q t e next n end p top abort', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' quit previous a q t e next n end p top abort', '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 c212cd28fa96cff2b74aa3c39a287f9ae95a0746..b0b0a6297e2924c50e9ff4e0bcf79b027ed775b1 100644
GIT binary patch
delta 94590
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