From 02398e64166234ba600339f8bd0c5a3e7a7d928d Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action
Fix: Help topic categories with different case would appear as duplicates (chiizujin)
Fix: Traceback in crafting contrib’s recipe.msg
+(InspectorCaracal)
Doc: Added Beginner Tutorial lessons for AI, Quests and Procedural dungeon (Griatch)
Doc fixes (Griatch, InspectorCaracal)
There are equivalent search functions for all the main resources. You can find a listing of them in the Search functions section of the API front page.
+It’s important to understand how objects relate to one another when searching.
+Let’s consider a chest with a coin inside it. The chest stands in a dungeon room. In the dungeon is also a door (an exit leading outside).
┌───────────────────────┐
+│dungeon │
+│ ┌─────────┐ │
+│ │chest │ ┌────┐ │
+│ │ ┌────┐ │ │door│ │
+│ │ │coin│ │ └────┘ │
+│ │ └────┘ │ │
+│ │ │ │
+│ └─────────┘ │
+│ │
+└───────────────────────┘
+If you have access to any in-game Object, you can find related objects by use if its .location and .contents properties.
coin.location is chest.
chest.location is dungeon.
door.location is dungeon.
room.location is None since it’s not inside something else.
One can use this to find what is inside what. For example, coin.location.location is the dungeon.
room.contents is [chest, door]
chest.contents is [coin]
coin.contents is [], the empty list since there’s nothing ‘inside’ the coin.
door.contents is [] too.
A convenient helper is .contents_get - this allows to restrict what is returned:
room.contents_get(exclude=chest) - this returns everything in the room except the chest (maybe it’s hidden?)
There is a special property for finding exits:
+room.exits is [door]
coin.exits is [] since it has no exits (same for all the other objects)
There is a property .destination which is only used by exits:
door.destination is outside (or wherever the door leads)
room.destination is None (same for all the other non-exit objects)
These are the main database entities one can search for:
Most of the time you’ll likely spend your time searching for Objects and the occasional Accounts.
So to find an entity, what can be searched for?
The key is the name of the entity. Searching for this is always case-insensitive.
Objects and Accounts can have any number of aliases. When searching for key these will searched too, you can’t easily search only for aliases. Let’s add an alias to our rose with the default alias command:
> alias rose = flower
Only Objects (things inheriting from evennia.DefaultObject) has a .location property.
The Object.search method will automatically limit its search by the object’s location, so assuming you are in the same room as the rose, this will work:
> py self.search("rose")
@@ -317,15 +363,15 @@ Could not find "rose"
<QuerySet [Rose]>
However, if you demand that the room is in the current room, it won’t be found:
-> py evennia.search_object("rose", location=here)
+The evennia.search_object method doesn’t have a location argument. What you do instead is to limit the search by setting its candidates keyword to the .contents of the current location. This is the same as a location search, since it will only accept matches among those in the room. In this example we’ll (correctly) find the rose is not in the room.
+> py evennia.search_object("rose", candidate=here.contents)
<QuerySet []>
In general, the Object.search is a shortcut for doing the very common searches of things in the same location, whereas the search_object finds objects anywhere.
-11.3.4. Search by Tags¶
+11.4.4. Search by Tags¶
Think of a Tag as the label the airport puts on your luggage when flying. Everyone going on the same plane gets a tag, grouping them together so the airport can know what should go to which plane. Entities in Evennia can be grouped in the same way. Any number of tags can be attached to each object.
Go back to the location of your rose and let’s create a few more plants:
> create/drop Daffodil
@@ -367,7 +413,7 @@ all_fantasy_books = evennia.search_tag("fantasy", category="books
This gets all three books.
-11.3.5. Search by Attribute¶
+11.4.5. Search by Attribute¶
We can also search by the Attributes associated with entities.
For example, let’s say our plants have a ‘growth state’ that updates as it grows:
> py self.search("rose").db.growth_state = "blooming"
@@ -384,7 +430,7 @@ all_fantasy_books = evennia.search_tag("fantasy", category="books
-11.3.6. Search by Typeclass¶
+11.4.6. Search by Typeclass¶
Sometimes it’s useful to limit your search by which Typeclass they have.
Let’s say you for example have two types of flower, CursedFlower and BlessedFlower defined under mygame/typeclasses.flowers.py. Each class contains custom code that grants curses and blessings respectively. You may have two rose objects, and the player doesn’t know which one is the bad or the good one. To separate them in your search, you can make sure to get the right one like this (in Python code)
cursed_roses = evennia.search_object("rose", typeclass="typeclasses.flowers.CursedFlower")
@@ -403,7 +449,7 @@ all_fantasy_books = evennia.search_tag("fantasy", category="books
This last way of searching is a simple form of a Django query. This is a way to express SQL queries using Python. See the next lesson, where we’ll explore this way to searching in more detail.
-11.3.7. Search by dbref¶
+11.4.7. Search by dbref¶
-
-11.4. Finding objects relative each other¶
-It’s important to understand how objects relate to one another when searching.
-Let’s consider a chest with a coin inside it. The chest stands in a room dungeon. In the dungeon is also a door. This is an exit leading outside.
-┌───────────────────────┐
-│dungeon │
-│ ┌─────────┐ │
-│ │chest │ ┌────┐ │
-│ │ ┌────┐ │ │door│ │
-│ │ │coin│ │ └────┘ │
-│ │ └────┘ │ │
-│ │ │ │
-│ └─────────┘ │
-│ │
-└───────────────────────┘
-
-
-
-coin.location is chest.
-chest.location is dungeon.
-door.location is dungeon.
-room.location is None since it’s not inside something else.
-
-One can use this to find what is inside what. For example, coin.location.location is the dungeon.
-We can also find what is inside each object. This is a list of things.
-
-room.contents is [chest, door]
-chest.contents is [coin]
-coin.contents is [], the empty list since there’s nothing ‘inside’ the coin.
-door.contents is [] too.
-
-A convenient helper is .contents_get - this allows to restrict what is returned:
-
-room.contents_get(exclude=chest) - this returns everything in the room except the chest (maybe it’s hidden?)
-
-There is a special property for finding exits:
-
-room.exits is [door]
-coin.exits is [] (same for all the other objects)
-
-There is a property .destination which is only used by exits:
-
-door.destination is outside (or wherever the door leads)
-room.destination is None (same for all the other non-exit objects)
-
-You can also include this information in searches:
+
+11.5. Summary¶
+Knowing how to find things is important and the tools from this section will serve you well. These tools will cover most of your regular needs.
+Not always though. If we go back to the example of a coin in a chest from before, you could use the following to dynamically figure out if there are any chests in the room with coins inside:
from evennia import search_object
# we assume only one match of each
dungeons = search_object("dungeon", typeclass="typeclasses.rooms.Room")
chests = search_object("chest", location=dungeons[0])
# find if there are any skulls in the chest
-skulls = search_object("Skull", candidates=chests[0].contents)
+coins = search_object("coin", candidates=chests[0].contents)
-More advanced, nested queries like this can however often be made more efficient by using the hints in the next lesson.
-
-
-11.5. Summary¶
-Knowing how to find things is important and the tools from this section will serve you well. These tools will cover most of your needs …
-… but not always. In the next lesson we will dive further into more complex searching when we look at Django queries and querysets in earnest.
+This would work but is both quite inefficient, fragile and a lot to type. This kind of thing is better done by directly querying the database.
+In the next lesson we will dive further into more complex searching when we look at Django queries and querysets in earnest.
diff --git a/docs/latest/_sources/Coding/Changelog.md.txt b/docs/latest/_sources/Coding/Changelog.md.txt
index a671619315..3349e8a9d9 100644
--- a/docs/latest/_sources/Coding/Changelog.md.txt
+++ b/docs/latest/_sources/Coding/Changelog.md.txt
@@ -17,6 +17,8 @@
to disappear for wider client widths (chiizujin)
- [Fix][pull3457]: Help topic categories with different case would appear as
duplicates (chiizujin)
+- [Fix][pull3454]: Traceback in crafting contrib's `recipe.msg`
+ (InspectorCaracal)
- Doc: Added Beginner Tutorial lessons for AI, Quests and Procedural dungeon (Griatch)
- Doc fixes (Griatch, InspectorCaracal)
@@ -27,6 +29,7 @@
[pull3456]: https://github.com/evennia/evennia/pull/3456
[pull3457]: https://github.com/evennia/evennia/pull/3457
[pull3458]: https://github.com/evennia/evennia/pull/3458
+[pull3454]: https://github.com/evennia/evennia/pull/3454
## Evennia 4.0.0
diff --git a/docs/latest/_sources/Howtos/Beginner-Tutorial/Part1/Beginner-Tutorial-Searching-Things.md.txt b/docs/latest/_sources/Howtos/Beginner-Tutorial/Part1/Beginner-Tutorial-Searching-Things.md.txt
index e0b5dce20f..14e1ac6db7 100644
--- a/docs/latest/_sources/Howtos/Beginner-Tutorial/Part1/Beginner-Tutorial-Searching-Things.md.txt
+++ b/docs/latest/_sources/Howtos/Beginner-Tutorial/Part1/Beginner-Tutorial-Searching-Things.md.txt
@@ -149,6 +149,54 @@ If you you really want all matches to the search parameters you specify. In othe
There are equivalent search functions for all the main resources. You can find a listing of them [in the Search functions section](../../../Evennia-API.md) of the API front page.
+## Understanding object relationships
+
+It's important to understand how objects relate to one another when searching.
+
+Let's consider a `chest` with a `coin` inside it. The chest stands in a `dungeon` room. In the dungeon is also a `door` (an exit leading outside).
+
+```
+┌───────────────────────┐
+│dungeon │
+│ ┌─────────┐ │
+│ │chest │ ┌────┐ │
+│ │ ┌────┐ │ │door│ │
+│ │ │coin│ │ └────┘ │
+│ │ └────┘ │ │
+│ │ │ │
+│ └─────────┘ │
+│ │
+└───────────────────────┘
+```
+
+If you have access to any in-game Object, you can find related objects by use if its `.location` and `.contents` properties.
+
+- `coin.location` is `chest`.
+- `chest.location` is `dungeon`.
+- `door.location` is `dungeon`.
+- `room.location` is `None` since it's not inside something else.
+
+One can use this to find what is inside what. For example, `coin.location.location` is the `dungeon`.
+
+- `room.contents` is `[chest, door]`
+- `chest.contents` is `[coin]`
+- `coin.contents` is `[]`, the empty list since there's nothing 'inside' the coin.
+- `door.contents` is `[]` too.
+
+A convenient helper is `.contents_get` - this allows to restrict what is returned:
+
+- `room.contents_get(exclude=chest)` - this returns everything in the room except the chest (maybe it's hidden?)
+
+There is a special property for finding exits:
+
+- `room.exits` is `[door]`
+- `coin.exits` is `[]` since it has no exits (same for all the other objects)
+
+There is a property `.destination` which is only used by exits:
+
+- `door.destination` is `outside` (or wherever the door leads)
+- `room.destination` is `None` (same for all the other non-exit objects)
+
## What can be searched for
These are the main database entities one can search for:
@@ -206,9 +254,9 @@ However, using `search_object` will find the rose wherever it's located:
> py evennia.search_object("rose")
-However, if you demand that the room is in the current room, it won't be found:
+The `evennia.search_object` method doesn't have a `location` argument. What you do instead is to limit the search by setting its `candidates` keyword to the `.contents` of the current location. This is the same as a location search, since it will only accept matches among those in the room. In this example we'll (correctly) find the rose is not in the room.
- > py evennia.search_object("rose", location=here)
+ > py evennia.search_object("rose", candidate=here.contents)
In general, the `Object.search` is a shortcut for doing the very common searches of things in the same location, whereas the `search_object` finds objects anywhere.
@@ -317,53 +365,11 @@ In legacy code bases you may be used to relying a lot on #dbrefs to find and tra
```
-## Finding objects relative each other
+## Summary
-It's important to understand how objects relate to one another when searching.
-Let's consider a `chest` with a `coin` inside it. The chest stands in a room `dungeon`. In the dungeon is also a `door`. This is an exit leading outside.
+Knowing how to find things is important and the tools from this section will serve you well. These tools will cover most of your regular needs.
-```
-┌───────────────────────┐
-│dungeon │
-│ ┌─────────┐ │
-│ │chest │ ┌────┐ │
-│ │ ┌────┐ │ │door│ │
-│ │ │coin│ │ └────┘ │
-│ │ └────┘ │ │
-│ │ │ │
-│ └─────────┘ │
-│ │
-└───────────────────────┘
-```
-
-- `coin.location` is `chest`.
-- `chest.location` is `dungeon`.
-- `door.location` is `dungeon`.
-- `room.location` is `None` since it's not inside something else.
-
-One can use this to find what is inside what. For example, `coin.location.location` is the `dungeon`.
-We can also find what is inside each object. This is a list of things.
-
-- `room.contents` is `[chest, door]`
-- `chest.contents` is `[coin]`
-- `coin.contents` is `[]`, the empty list since there's nothing 'inside' the coin.
-- `door.contents` is `[]` too.
-
-A convenient helper is `.contents_get` - this allows to restrict what is returned:
-
-- `room.contents_get(exclude=chest)` - this returns everything in the room except the chest (maybe it's hidden?)
-
-There is a special property for finding exits:
-
-- `room.exits` is `[door]`
-- `coin.exits` is `[]` (same for all the other objects)
-
-There is a property `.destination` which is only used by exits:
-
-- `door.destination` is `outside` (or wherever the door leads)
-- `room.destination` is `None` (same for all the other non-exit objects)
-
-You can also include this information in searches:
+Not always though. If we go back to the example of a coin in a chest from before, you _could_ use the following to dynamically figure out if there are any chests in the room with coins inside:
```python
from evennia import search_object
@@ -372,13 +378,9 @@ from evennia import search_object
dungeons = search_object("dungeon", typeclass="typeclasses.rooms.Room")
chests = search_object("chest", location=dungeons[0])
# find if there are any skulls in the chest
-skulls = search_object("Skull", candidates=chests[0].contents)
+coins = search_object("coin", candidates=chests[0].contents)
```
-More advanced, nested queries like this can however often be made more efficient by using the hints in the next lesson.
+This would work but is both quite inefficient, fragile and a lot to type. This kind of thing is better done by directly querying the database.
-## Summary
-
-Knowing how to find things is important and the tools from this section will serve you well. These tools will cover most of your needs ...
-
-... but not always. In the next lesson we will dive further into more complex searching when we look at Django queries and querysets in earnest.
\ No newline at end of file
+In the next lesson we will dive further into more complex searching when we look at Django queries and querysets in earnest.
\ No newline at end of file
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.
@@ -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 72726d4e03..a23264cc7d 100644
--- a/docs/latest/api/evennia.commands.default.building.html
+++ b/docs/latest/api/evennia.commands.default.building.html
@@ -643,7 +643,7 @@ You can specify the /force switch to bypass this confirmation.
@@ -684,7 +684,7 @@ You can specify the /force switch to bypass this confirmation.
-
-
search_index_entry = {'aliases': '@delete @del', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy delete del', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}¶
+search_index_entry = {'aliases': '@del @delete', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy del delete', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}¶
@@ -1411,7 +1411,7 @@ server settings.
-
-
aliases = ['@type', '@swap', '@typeclasses', '@update', '@parent']¶
+aliases = ['@swap', '@parent', '@type', '@typeclasses', '@update']¶
@@ -1442,7 +1442,7 @@ server settings.
-
-
search_index_entry = {'aliases': '@type @swap @typeclasses @update @parent', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass type swap typeclasses update 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': '@swap @parent @type @typeclasses @update', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass swap parent type typeclasses update', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶
@@ -1597,7 +1597,7 @@ If object is not specified, the current location is examined.
@@ -1870,7 +1870,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 '}¶
@@ -1904,7 +1904,7 @@ one is given.
@@ -1935,7 +1935,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 ed6523c145..7528d12f76 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
@@ -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 '}¶
@@ -337,7 +337,7 @@ inv
@@ -368,7 +368,7 @@ inv
-
-
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
+search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
diff --git a/docs/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
@@ -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 146002fdff..04876f86a5 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/tmp9dh7e32o/88a1412512fd4c06d4f4526f0337f0b20f23c20d/evennia/contrib/tutorials/red_button/red_button.py'>¶
+red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmp0lcvzpo2/818ab25b278d07785ac6de565ffc0739829f855a/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 a19e1d63bf..33f3d782e6 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”
@@ -171,7 +171,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'conn con co', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn con co', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
+search_index_entry = {'aliases': 'co 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 '}¶
@@ -256,7 +256,7 @@ version is a bit more complicated.
@@ -282,7 +282,7 @@ version is a bit more complicated.
-
-
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
+search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
@@ -306,7 +306,7 @@ All it does is display the connect screen.
@@ -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 '}¶
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 c522a7da3d..403dd376f9 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.
@@ -183,7 +183,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'conn con co', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn con co', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶
+search_index_entry = {'aliases': 'co 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 '}¶
@@ -266,7 +266,7 @@ version is a bit more complicated.
@@ -292,7 +292,7 @@ version is a bit more complicated.
-
-
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
+search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
@@ -311,7 +311,7 @@ All it does is display the connect screen.
@@ -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 '}¶
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..7af3c85a5d 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 @@
@@ -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': '@callback @callbacks @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callback callbacks 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 6f78c0d57a..ca9f71eb11 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.
@@ -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.
@@ -262,7 +262,7 @@ for that channel.
-
-
search_index_entry = {'aliases': 'delaliaschan delchanalias', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delaliaschan delchanalias', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶
+search_index_entry = {'aliases': 'delchanalias delaliaschan', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delchanalias delaliaschan', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶
diff --git a/docs/latest/api/evennia.contrib.full_systems.evscaperoom.commands.html b/docs/latest/api/evennia.contrib.full_systems.evscaperoom.commands.html
index aabe97e942..ac0d72231e 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.
@@ -249,7 +249,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'q chicken out abort quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' q chicken out abort 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': 'abort q chicken out quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' abort q chicken out 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 '}¶
@@ -270,7 +270,7 @@ set in self.parse())
@@ -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
@@ -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.
@@ -533,7 +533,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'ex e examine unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex e examine unfocus', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶
+search_index_entry = {'aliases': 'e examine ex unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' e examine ex unfocus', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶
@@ -595,7 +595,7 @@ set in self.parse())
@@ -619,7 +619,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'inv i inventory give', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inv i inventory give', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
+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 '}¶
@@ -640,7 +640,7 @@ set in self.parse())
@@ -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.barter.barter.html b/docs/latest/api/evennia.contrib.game_systems.barter.barter.html
index 180d50f58c..995664a60e 100644
--- a/docs/latest/api/evennia.contrib.game_systems.barter.barter.html
+++ b/docs/latest/api/evennia.contrib.game_systems.barter.barter.html
@@ -759,7 +759,7 @@ try to influence the other part in the deal.
@@ -785,7 +785,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/latest/api/evennia.contrib.game_systems.clothing.clothing.html b/docs/latest/api/evennia.contrib.game_systems.clothing.clothing.html
index 158896c484..8c8be515bb 100644
--- a/docs/latest/api/evennia.contrib.game_systems.clothing.clothing.html
+++ b/docs/latest/api/evennia.contrib.game_systems.clothing.clothing.html
@@ -636,7 +636,7 @@ inv
@@ -667,7 +667,7 @@ inv
-
-
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
+search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
diff --git a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_basic.html b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_basic.html
index c662d4ed02..9dd6a535f0 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.
@@ -712,7 +712,7 @@ if there are still any actions you can take.
-
-
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 '}¶
+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 '}¶
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 b43d0f5a48..0bed424fda 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.
@@ -601,7 +601,7 @@ if there are still any actions you can take.
-
-
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 '}¶
+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 '}¶
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 1e2a340556..9b7607f915 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.
@@ -724,7 +724,7 @@ if there are still any actions you can take.
-
-
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 '}¶
+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 '}¶
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 62ecd7c88e..0f29530eac 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.
@@ -503,7 +503,7 @@ if there are still any actions you can take.
-
-
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 '}¶
+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 '}¶
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 66eedd87ae..d06a19f299 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.
@@ -963,7 +963,7 @@ if there are still any actions you can take.
-
-
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 '}¶
+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 '}¶
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
@@ -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.tutorials.evadventure.combat_twitch.html b/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_twitch.html
index fceb11ef73..83b1ca5a7f 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
@@ -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
@@ -525,7 +525,7 @@ set in self.parse())
-
-
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 '}¶
+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 '}¶
diff --git a/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html b/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html
index 18e51861b5..98c34b6087 100644
--- a/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html
+++ b/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html
@@ -206,7 +206,7 @@ self.args).
@@ -230,7 +230,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}¶
+search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}¶
@@ -307,7 +307,7 @@ unwear <item>
@@ -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 0202c5b605..4fe1896b58 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
@@ -520,7 +520,7 @@ be mutually exclusive.
-
-
aliases = ['get', 'feel', 'l', 'listen', 'ex', 'examine']¶
+aliases = ['feel', 'l', 'listen', 'ex', 'get', 'examine']¶
@@ -546,7 +546,7 @@ be mutually exclusive.
-
-
search_index_entry = {'aliases': 'get feel l listen ex examine', 'category': 'general', 'key': 'look', 'no_prefix': ' get feel l listen ex examine', '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 get examine', 'category': 'general', 'key': 'look', 'no_prefix': ' feel l listen ex get examine', '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 898e76fd49..4986ccefc7 100644
--- a/docs/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html
+++ b/docs/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html
@@ -570,7 +570,7 @@ shift green root up/down
@@ -606,7 +606,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'pull shiftroot move push', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' pull shiftroot move push', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶
+search_index_entry = {'aliases': 'pull move shiftroot push', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' pull move shiftroot push', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶
@@ -623,7 +623,7 @@ yellow/green - horizontal roots
-
-
aliases = ['press button', 'button', 'push button']¶
+aliases = ['button', 'press button', 'push 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': 'button press button push button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' button press button push 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 = ['slash', 'chop', 'kill', 'parry', 'defend', 'hit', 'fight', 'pierce', 'stab', 'thrust', 'bash']¶
+aliases = ['stab', 'defend', 'bash', 'fight', 'kill', 'pierce', 'hit', 'slash', 'chop', 'thrust', 'parry']¶
@@ -819,7 +819,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
search_index_entry = {'aliases': 'slash chop kill parry defend hit fight pierce stab thrust bash', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' slash chop kill parry defend hit fight pierce stab thrust 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 '}¶
+search_index_entry = {'aliases': 'stab defend bash fight kill pierce hit slash chop thrust parry', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' stab defend bash fight kill pierce hit slash chop thrust parry', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶
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 dce281ab60..d711f395b2 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.
@@ -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 '}¶
@@ -982,7 +982,7 @@ to find something.
-
-
aliases = ['feel', 'l', 'feel around', 'search', 'fiddle']¶
+aliases = ['feel', 'fiddle', 'l', 'feel around', 'search']¶
@@ -1010,7 +1010,7 @@ random chance of eventually finding a light source.
-
-
search_index_entry = {'aliases': 'feel l feel around search fiddle', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel l feel around search fiddle', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶
+search_index_entry = {'aliases': 'feel fiddle l feel around search', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel fiddle l feel around search', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶
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 8d37c8e9a2..2cab5d7502 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/tmp9dh7e32o/88a1412512fd4c06d4f4526f0337f0b20f23c20d/evennia'¶
+directory = '/tmp/tmp0lcvzpo2/818ab25b278d07785ac6de565ffc0739829f855a/evennia'¶
@@ -283,7 +283,7 @@ git pull - Pull the latest code from your current branch.
-
-
directory = '/tmp/tmp9dh7e32o/88a1412512fd4c06d4f4526f0337f0b20f23c20d/evennia/game_template'¶
+directory = '/tmp/tmp0lcvzpo2/818ab25b278d07785ac6de565ffc0739829f855a/evennia/game_template'¶
diff --git a/docs/latest/api/evennia.utils.eveditor.html b/docs/latest/api/evennia.utils.eveditor.html
index f663035c7c..1e2a024628 100644
--- a/docs/latest/api/evennia.utils.eveditor.html
+++ b/docs/latest/api/evennia.utils.eveditor.html
@@ -350,7 +350,7 @@ indentation.
-
-
aliases = [':UU', ':j', ':x', ':f', ':s', ':::', ':=', ':>', ':q!', ':', ':wq', ':uu', ':!', '::', ':dd', ':fd', ':r', ':dw', ':A', ':y', ':S', ':echo', ':p', ':i', ':u', ':q', ':h', ':fi', ':DD', ':w', ':<', ':I']¶
+aliases = [':echo', ':q', ':i', ':::', ':u', ':h', ':s', ':I', ':p', ':DD', ':r', ':j', ':', ':y', ':f', ':!', ':x', ':uu', ':<', ':fd', ':dw', ':q!', ':UU', ':dd', ':w', ':=', ':A', ':wq', ':>', '::', ':S', ':fi']¶
@@ -378,7 +378,7 @@ efficient presentation.
-
-
search_index_entry = {'aliases': ':UU :j :x :f :s ::: := :> :q! : :wq :uu :! :: :dd :fd :r :dw :A :y :S :echo :p :i :u :q :h :fi :DD :w :< :I', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :UU :j :x :f :s ::: := :> :q! : :wq :uu :! :: :dd :fd :r :dw :A :y :S :echo :p :i :u :q :h :fi :DD :w :< :I', 'tags': '', 'text': '\n Commands for the editor\n '}¶
+search_index_entry = {'aliases': ':echo :q :i ::: :u :h :s :I :p :DD :r :j : :y :f :! :x :uu :< :fd :dw :q! :UU :dd :w := :A :wq :> :: :S :fi', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :echo :q :i ::: :u :h :s :I :p :DD :r :j : :y :f :! :x :uu :< :fd :dw :q! :UU :dd :w := :A :wq :> :: :S :fi', '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 5e8d7a7075..8177138afe 100644
--- a/docs/latest/api/evennia.utils.evmenu.html
+++ b/docs/latest/api/evennia.utils.evmenu.html
@@ -953,7 +953,7 @@ single question.
-
-
aliases = ['a', 'no', 'y', 'abort', 'n', 'yes', '__nomatch_command']¶
+aliases = ['n', 'y', 'abort', '__nomatch_command', 'yes', 'no', 'a']¶
@@ -979,7 +979,7 @@ single question.
-
-
search_index_entry = {'aliases': 'a no y abort n yes __nomatch_command', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' a no y abort n yes __nomatch_command', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}¶
+search_index_entry = {'aliases': 'n y abort __nomatch_command yes no a', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' n y abort __nomatch_command yes no a', '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 116b96adac..f68f99481f 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 = ['a', 'e', 'abort', 'q', 'previous', 'top', 'n', 'end', 'p', 'next', 't', 'quit']¶
+aliases = ['n', 'abort', 'q', 'previous', 'p', 'top', 'end', 'next', 'e', 'a', 't', 'quit']¶
@@ -177,7 +177,7 @@ the caller.msg() construct every time the page is updated.
-
-
search_index_entry = {'aliases': 'a e abort q previous top n end p next t quit', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' a e abort q previous top n end p next t quit', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
+search_index_entry = {'aliases': 'n abort q previous p top end next e a t quit', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' n abort q previous p top end next e a t quit', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
diff --git a/docs/latest/objects.inv b/docs/latest/objects.inv
index 5bfa86ddfc0bcba29924aa3e278048eaaa887efd..2b4625478394c5b15736928a8adc30461ea427a1 100644
GIT binary patch
delta 78518
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 )Y3%daXudRekVjba
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