From 061973bd4f79686e1ee233fa19205c395bc8bfc9 Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action Oct 1, 2024 Fix: Reverting change of default Sqlite3 PRAGMA settings, changing them for
+existing database caused corruption of db. For empty db, can still change in
+ Sep 29, 2024 Feat: New Fix: Update/clean some Evennia dependencies (0xDEADFED5) Fix: Update/clean some Evennia dependencies (0xDEADFED5) Fix: Better error if trying to treat ObjectDB as a typeclass (Griatch) Fix: Make Table of Contents
+
Changelog¶
+Evennia 4.4.1¶
+
+
+SQLITE3_PRAGMAS settings. (Griatch)Evennia 4.4.0¶
DefaultObject hooks: at_object_post_creation, called once after
first creation but after any prototypes have been applied, and
at_object_post_spawn(prototype), called only after creation/update with a prototype (InspectorCaracal)examine command properly show strattr type
Attribute values (Griatch)
myga
}
}
# PRAGMA (directives) for the default Sqlite3 database operations. This can be used to tweak
-# performance for your setup. Don't change this unless you know what # you are doing.
+# performance for your setup. Don't change this unless you know what you are doing. Also
+# be careful to change for an already populated database.
SQLITE3_PRAGMAS = (
"PRAGMA cache_size=10000",
- "PRAGMA synchronous=1",
+ "PRAGMA synchronous=OFF",
"PRAGMA count_changes=OFF",
"PRAGMA temp_store=2",
- "PRAGMA journal_mode=WAL",
)
# How long the django-database connection should be kept open, in seconds.
diff --git a/docs/latest/_sources/Coding/Changelog.md.txt b/docs/latest/_sources/Coding/Changelog.md.txt
index 7fa943f9a9..7ed3c09e34 100644
--- a/docs/latest/_sources/Coding/Changelog.md.txt
+++ b/docs/latest/_sources/Coding/Changelog.md.txt
@@ -1,5 +1,16 @@
# Changelog
+## Evennia 4.4.1
+
+Oct 1, 2024
+
+- [Fix][issue3629]: Reverting change of default Sqlite3 PRAGMA settings, changing them for
+ existing database caused corruption of db. For empty db, can still change in
+ `SQLITE3_PRAGMAS` settings. (Griatch)
+
+[issue3629]: https://github.com/evennia/evennia/issues/3629
+
+
## Evennia 4.4.0
Sep 29, 2024
@@ -15,7 +26,7 @@ with dynamic keys (rather than just relying on typeclass' key) (Griatch)
- [Feat][pull3588]: New `DefaultObject` hooks: `at_object_post_creation`, called once after
first creation but after any prototypes have been applied, and
`at_object_post_spawn(prototype)`, called only after creation/update with a prototype (InspectorCaracal)
-- [Fix][pull3494]: Update/clean some Evennia dependencies (0xDEADFED5)
+- [Fix][pull3594]: Update/clean some Evennia dependencies (0xDEADFED5)
- [Fix][issue3556]: Better error if trying to treat ObjectDB as a typeclass (Griatch)
- [Fix][issue3590]: Make `examine` command properly show `strattr` type
Attribute values (Griatch)
@@ -55,6 +66,7 @@ did not add it to the handler's object (Griatch)
[issue3620]: https://github.com/evennia/evennia/issues/3620
[issue3616]: https://github.com/evennia/evennia/issues/3616
[pull3595]: https://github.com/evennia/evennia/pull/3595
+[pull3595]: https://github.com/evennia/evennia/pull/3595
[pull3533]: https://github.com/evennia/evennia/pull/3533
[pull3594]: https://github.com/evennia/evennia/pull/3594
[pull3592]: https://github.com/evennia/evennia/pull/3592
diff --git a/docs/latest/_sources/Setup/Settings-Default.md.txt b/docs/latest/_sources/Setup/Settings-Default.md.txt
index 494bbd614e..f7f0dc29c1 100644
--- a/docs/latest/_sources/Setup/Settings-Default.md.txt
+++ b/docs/latest/_sources/Setup/Settings-Default.md.txt
@@ -320,13 +320,13 @@ DATABASES = {
}
}
# PRAGMA (directives) for the default Sqlite3 database operations. This can be used to tweak
-# performance for your setup. Don't change this unless you know what # you are doing.
+# performance for your setup. Don't change this unless you know what you are doing. Also
+# be careful to change for an already populated database.
SQLITE3_PRAGMAS = (
"PRAGMA cache_size=10000",
- "PRAGMA synchronous=1",
+ "PRAGMA synchronous=OFF",
"PRAGMA count_changes=OFF",
"PRAGMA temp_store=2",
- "PRAGMA journal_mode=WAL",
)
# How long the django-database connection should be kept open, in seconds.
diff --git a/docs/latest/_sources/index.md.txt b/docs/latest/_sources/index.md.txt
index aa80204128..0a55d908c0 100644
--- a/docs/latest/_sources/index.md.txt
+++ b/docs/latest/_sources/index.md.txt
@@ -1,6 +1,6 @@
# Evennia Documentation
-This is the manual of [Evennia](https://www.evennia.com), the open source Python `MU*` creation system. Use the Search bar on the left to find or discover interesting articles. This manual was last updated September 29, 2024, see the [Evennia Changelog](Coding/Changelog.md). Latest released Evennia version is 4.4.0.
+This is the manual of [Evennia](https://www.evennia.com), the open source Python `MU*` creation system. Use the Search bar on the left to find or discover interesting articles. This manual was last updated October 01, 2024, see the [Evennia Changelog](Coding/Changelog.md). Latest released Evennia version is 4.4.1.
- [Introduction](./Evennia-Introduction.md) - what is this Evennia thing?
- [Evennia in Pictures](./Evennia-In-Pictures.md) - a visual overview of Evennia
diff --git a/docs/latest/api/evennia.commands.default.account.html b/docs/latest/api/evennia.commands.default.account.html
index d67c2d984f..5a1ec180e3 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.batchprocess.html b/docs/latest/api/evennia.commands.default.batchprocess.html
index 9b80e97757..5a7b88c2de 100644
--- a/docs/latest/api/evennia.commands.default.batchprocess.html
+++ b/docs/latest/api/evennia.commands.default.batchprocess.html
@@ -152,7 +152,7 @@ skipping, reloading etc.
@@ -183,7 +183,7 @@ skipping, reloading etc.
-
-
search_index_entry = {'aliases': 'batchcommand batchcmd', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcommand batchcmd', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}¶
+search_index_entry = {'aliases': 'batchcmd batchcommand', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcmd batchcommand', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}¶
diff --git a/docs/latest/api/evennia.commands.default.building.html b/docs/latest/api/evennia.commands.default.building.html
index 226816aba2..397a6ecab6 100644
--- a/docs/latest/api/evennia.commands.default.building.html
+++ b/docs/latest/api/evennia.commands.default.building.html
@@ -1415,7 +1415,7 @@ server settings.
-
-
aliases = ['@type', '@parent', '@update', '@typeclasses', '@swap']¶
+aliases = ['@parent', '@typeclasses', '@update', '@swap', '@type']¶
@@ -1446,7 +1446,7 @@ server settings.
-
-
search_index_entry = {'aliases': '@type @parent @update @typeclasses @swap', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass type parent update typeclasses 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 "}¶
+search_index_entry = {'aliases': '@parent @typeclasses @update @swap @type', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass parent typeclasses update swap type', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶
@@ -1601,7 +1601,7 @@ If object is not specified, the current location is examined.
@@ -1874,7 +1874,7 @@ the cases, see the module doc.
-
-
search_index_entry = {'aliases': '@exam @ex', 'category': 'building', 'key': '@examine', 'no_prefix': 'examine exam ex', 'tags': '', 'text': '\n get detailed information about an object\n\n Usage:\n examine [<object>[/attrname]]\n examine [*<account>[/attrname]]\n\n Switch:\n account - examine an Account (same as adding *)\n object - examine an Object (useful when OOC)\n script - examine a Script\n channel - examine a Channel\n\n The examine command shows detailed game info about an\n object and optionally a specific attribute on it.\n If object is not specified, the current location is examined.\n\n Append a * before the search string to examine an account.\n\n '}¶
+search_index_entry = {'aliases': '@ex @exam', 'category': 'building', 'key': '@examine', 'no_prefix': 'examine ex exam', 'tags': '', 'text': '\n get detailed information about an object\n\n Usage:\n examine [<object>[/attrname]]\n examine [*<account>[/attrname]]\n\n Switch:\n account - examine an Account (same as adding *)\n object - examine an Object (useful when OOC)\n script - examine a Script\n channel - examine a Channel\n\n The examine command shows detailed game info about an\n object and optionally a specific attribute on it.\n If object is not specified, the current location is examined.\n\n Append a * before the search string to examine an account.\n\n '}¶
@@ -1908,7 +1908,7 @@ one is given.
@@ -1939,7 +1939,7 @@ one is given.
-
-
search_index_entry = {'aliases': '@search @locate', 'category': 'building', 'key': '@find', 'no_prefix': 'find search locate', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}¶
+search_index_entry = {'aliases': '@locate @search', 'category': 'building', 'key': '@find', 'no_prefix': 'find locate search', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}¶
diff --git a/docs/latest/api/evennia.commands.default.general.html b/docs/latest/api/evennia.commands.default.general.html
index 5fbb54dd5e..3e9c6fd6df 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 '}¶
@@ -282,7 +282,7 @@ for everyone to use, you need build privileges and the alias command.
@@ -314,7 +314,7 @@ for everyone to use, you need build privileges and the alias command.
-
-
search_index_entry = {'aliases': 'nickname nicks', 'category': 'general', 'key': 'nick', 'no_prefix': ' nickname nicks', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}¶
+search_index_entry = {'aliases': 'nicks nickname', 'category': 'general', 'key': 'nick', 'no_prefix': ' nicks nickname', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}¶
@@ -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 '}¶
@@ -611,7 +611,7 @@ placing it in their inventory.
@@ -642,7 +642,7 @@ placing it in their inventory.
-
-
search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
+search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
@@ -722,7 +722,7 @@ automatically begin with your name.
@@ -763,7 +763,7 @@ space.
-
-
search_index_entry = {'aliases': ': emote', 'category': 'general', 'key': 'pose', 'no_prefix': ' : emote', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}¶
+search_index_entry = {'aliases': 'emote :', 'category': 'general', 'key': 'pose', 'no_prefix': ' emote :', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}¶
diff --git a/docs/latest/api/evennia.commands.default.system.html b/docs/latest/api/evennia.commands.default.system.html
index d02b7cfcc2..196b1c1736 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': '@task @delays', 'category': 'system', 'key': '@tasks', 'no_prefix': 'tasks task delays', 'tags': '', 'text': "\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n "}¶
+search_index_entry = {'aliases': '@delays @task', 'category': 'system', 'key': '@tasks', 'no_prefix': 'tasks delays task', 'tags': '', 'text': "\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n "}¶
diff --git a/docs/latest/api/evennia.commands.default.tests.html b/docs/latest/api/evennia.commands.default.tests.html
index 7d52c60d3d..aac1badd41 100644
--- a/docs/latest/api/evennia.commands.default.tests.html
+++ b/docs/latest/api/evennia.commands.default.tests.html
@@ -980,7 +980,7 @@ main test suite started with
Test the batch processor.
+red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpgzp20edl/25ddad219e9ce16b4057a37a7c8f15acf172f504/evennia/contrib/tutorials/red_button/red_button.py'>¶
diff --git a/docs/latest/api/evennia.commands.default.unloggedin.html b/docs/latest/api/evennia.commands.default.unloggedin.html
index afbfebc15b..113ce1af6b 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': 'co conn con', 'category': 'general', 'key': 'connect', 'no_prefix': ' co conn con', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
+search_index_entry = {'aliases': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
@@ -195,7 +195,7 @@ create “account name” “pass word”
@@ -232,7 +232,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 '}¶
@@ -256,7 +256,7 @@ version is a bit more complicated.
@@ -282,7 +282,7 @@ version is a bit more complicated.
-
-
search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
+search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
diff --git a/docs/latest/api/evennia.contrib.base_systems.email_login.email_login.html b/docs/latest/api/evennia.contrib.base_systems.email_login.email_login.html
index e414007d4b..796333e514 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': 'co conn con', 'category': 'general', 'key': 'connect', 'no_prefix': ' co conn con', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶
+search_index_entry = {'aliases': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶
@@ -205,7 +205,7 @@ there is no object yet before the account has logged in)
@@ -247,7 +247,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 '}¶
@@ -266,7 +266,7 @@ version is a bit more complicated.
@@ -292,7 +292,7 @@ version is a bit more complicated.
-
-
search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
+search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
diff --git a/docs/latest/api/evennia.contrib.base_systems.ingame_reports.reports.html b/docs/latest/api/evennia.contrib.base_systems.ingame_reports.reports.html
index 609783cc86..97862bc173 100644
--- a/docs/latest/api/evennia.contrib.base_systems.ingame_reports.reports.html
+++ b/docs/latest/api/evennia.contrib.base_systems.ingame_reports.reports.html
@@ -174,7 +174,7 @@ players
-
-
aliases = ['manage bugs', 'manage ideas', 'manage players']¶
+aliases = ['manage players', 'manage bugs', 'manage ideas']¶
@@ -208,7 +208,7 @@ to all the variables defined therein.
-
-
search_index_entry = {'aliases': 'manage bugs manage ideas manage players', 'category': 'general', 'key': 'manage reports', 'no_prefix': ' manage bugs manage ideas manage players', 'tags': '', 'text': '\n manage the various reports\n\n Usage:\n manage [report type]\n\n Available report types:\n bugs\n ideas\n players\n\n Initializes a menu for reviewing and changing the status of current reports.\n '}¶
+search_index_entry = {'aliases': 'manage players manage bugs manage ideas', 'category': 'general', 'key': 'manage reports', 'no_prefix': ' manage players manage bugs manage ideas', 'tags': '', 'text': '\n manage the various reports\n\n Usage:\n manage [report type]\n\n Available report types:\n bugs\n ideas\n players\n\n Initializes a menu for reviewing and changing the status of current reports.\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 0b54e83fe8..6f78c0d57a 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': '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 '}¶
+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 '}¶
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 e2c5ee6d7a..6583e0b1d4 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': 'quit chicken out abort q', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' quit chicken out abort 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': 'chicken out abort q quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' chicken out abort q quit', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶
@@ -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': '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': '; 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 '}¶
@@ -442,7 +442,7 @@ emote /me points to /box and /lever.
@@ -481,7 +481,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': ': pose', 'category': 'general', 'key': 'emote', 'no_prefix': ' : pose', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use "..." to enact speech.\n\n Usage:\n emote <emote>\n :<emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\n\n '}¶
+search_index_entry = {'aliases': 'pose :', 'category': 'general', 'key': 'emote', 'no_prefix': ' pose :', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use "..." to enact speech.\n\n Usage:\n emote <emote>\n :<emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\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 unfocus examine e', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex unfocus examine e', '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 examine unfocus e', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex examine unfocus e', '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 inventory i give', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inv inventory i give', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
+search_index_entry = {'aliases': 'give i inventory inv', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' give i inventory inv', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
@@ -640,7 +640,7 @@ set in self.parse())
@@ -663,7 +663,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/latest/api/evennia.contrib.game_systems.achievements.achievements.html b/docs/latest/api/evennia.contrib.game_systems.achievements.achievements.html
index 2e8ab78baa..3ddd51ff94 100644
--- a/docs/latest/api/evennia.contrib.game_systems.achievements.achievements.html
+++ b/docs/latest/api/evennia.contrib.game_systems.achievements.achievements.html
@@ -289,7 +289,7 @@ achievements/progress rats
-
-
aliases = ['achievement', 'achieves', 'achieve']¶
+aliases = ['achieve', 'achievement', 'achieves']¶
@@ -337,7 +337,7 @@ to all the variables defined therein.
-
-
search_index_entry = {'aliases': 'achievement achieves achieve', 'category': 'general', 'key': 'achievements', 'no_prefix': ' achievement achieves achieve', 'tags': '', 'text': '\n view achievements\n\n Usage:\n achievements[/switches] [args]\n\n Switches:\n all View all achievements, including locked ones.\n completed View achievements you\'ve completed.\n progress View achievements you have partially completed\n\n Check your achievement statuses or browse the list. Providing a command argument\n will search all your currently unlocked achievements for matches, and the switches\n will filter the list to something other than "all unlocked". Combining a command\n argument with a switch will search only in that list.\n\n Examples:\n achievements apples\n achievements/all\n achievements/progress rats\n '}¶
+search_index_entry = {'aliases': 'achieve achievement achieves', 'category': 'general', 'key': 'achievements', 'no_prefix': ' achieve achievement achieves', 'tags': '', 'text': '\n view achievements\n\n Usage:\n achievements[/switches] [args]\n\n Switches:\n all View all achievements, including locked ones.\n completed View achievements you\'ve completed.\n progress View achievements you have partially completed\n\n Check your achievement statuses or browse the list. Providing a command argument\n will search all your currently unlocked achievements for matches, and the switches\n will filter the list to something other than "all unlocked". Combining a command\n argument with a switch will search only in that list.\n\n Examples:\n achievements apples\n achievements/all\n achievements/progress rats\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.grid.extended_room.extended_room.html b/docs/latest/api/evennia.contrib.grid.extended_room.extended_room.html
index 712938071f..3f01341f75 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.rpg.dice.dice.html b/docs/latest/api/evennia.contrib.rpg.dice.dice.html
index 3d7ee8d157..fad4cb5e02 100644
--- a/docs/latest/api/evennia.contrib.rpg.dice.dice.html
+++ b/docs/latest/api/evennia.contrib.rpg.dice.dice.html
@@ -340,7 +340,7 @@ everyone but the person rolling.
@@ -366,7 +366,7 @@ everyone but the person rolling.
-
-
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 "}¶
+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 "}¶
diff --git a/docs/latest/api/evennia.contrib.rpg.rpsystem.rpsystem.html b/docs/latest/api/evennia.contrib.rpg.rpsystem.rpsystem.html
index e7d57657fb..97a20164de 100644
--- a/docs/latest/api/evennia.contrib.rpg.rpsystem.rpsystem.html
+++ b/docs/latest/api/evennia.contrib.rpg.rpsystem.rpsystem.html
@@ -736,7 +736,7 @@ commands the caller can use.
@@ -767,7 +767,7 @@ commands the caller can use.
-
-
search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
+search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
diff --git a/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html b/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html
index 269a797481..5749a8d5e1 100644
--- a/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html
+++ b/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html
@@ -480,7 +480,7 @@ turn of combat, performing everyone’s actions in random order.
@@ -526,7 +526,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'hit turnbased combat', 'category': 'general', 'key': 'attack', 'no_prefix': ' hit turnbased combat', 'tags': '', 'text': '\n Start or join combat.\n\n Usage:\n attack [<target>]\n\n '}¶
+search_index_entry = {'aliases': 'turnbased combat hit', 'category': 'general', 'key': 'attack', 'no_prefix': ' turnbased combat hit', 'tags': '', 'text': '\n Start or join combat.\n\n Usage:\n attack [<target>]\n\n '}¶
diff --git a/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_twitch.html b/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_twitch.html
index 439688cc0f..b4a3e80767 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 '}¶
diff --git a/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html b/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html
index 18e51861b5..6e54a30a6b 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 '}¶
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 d3a76c0d0c..82f3296458 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
@@ -167,7 +167,7 @@ such as when closing the lid and un-blinding a character.
+aliases = ['press', 'press button', 'push']¶
@@ -196,7 +196,7 @@ check if the lid is open or closed.
+search_index_entry = {'aliases': 'press press button push', 'category': 'general', 'key': 'push button', 'no_prefix': ' press press button push', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}¶
@@ -266,7 +266,7 @@ check if the lid is open or closed.
+aliases = ['smash', 'smash lid', 'break lid']¶
@@ -293,7 +293,7 @@ break.
+search_index_entry = {'aliases': 'smash smash lid break lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash smash lid break lid', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}¶
@@ -393,7 +393,7 @@ be mutually exclusive.
+aliases = ['press', 'press button', 'push']¶
@@ -422,7 +422,7 @@ set in self.parse())
+search_index_entry = {'aliases': 'press press button push', 'category': 'general', 'key': 'push button', 'no_prefix': ' press press button push', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}¶
@@ -520,7 +520,7 @@ be mutually exclusive.
+aliases = ['l', 'feel', 'examine', 'ex', 'listen', 'get']¶
@@ -546,7 +546,7 @@ be mutually exclusive.
+search_index_entry = {'aliases': 'l feel examine ex listen get', 'category': 'general', 'key': 'look', 'no_prefix': ' l feel examine ex 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/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html b/docs/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html
index 3f11d33698..664647976b 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': 'push shiftroot move pull', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' push shiftroot move pull', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶
+search_index_entry = {'aliases': 'push move shiftroot pull', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' push move shiftroot pull', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶
@@ -623,7 +623,7 @@ yellow/green - horizontal roots
-
-
aliases = ['press button', 'push button', 'button']¶
+aliases = ['push button', 'press button', 'button']¶
@@ -649,7 +649,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'press button push button button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button push button button', 'tags': '', 'text': '\n Presses a button.\n '}¶
+search_index_entry = {'aliases': 'push button press button button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' push button press button button', 'tags': '', 'text': '\n Presses a button.\n '}¶
@@ -793,7 +793,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
aliases = ['stab', 'slash', 'hit', 'chop', 'defend', 'pierce', 'parry', 'kill', 'fight', 'bash', 'thrust']¶
+aliases = ['stab', 'parry', 'defend', 'hit', 'fight', 'pierce', 'slash', 'kill', 'bash', 'thrust', 'chop']¶
@@ -819,7 +819,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
search_index_entry = {'aliases': 'stab slash hit chop defend pierce parry kill fight bash thrust', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' stab slash hit chop defend pierce parry kill fight bash thrust', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶
+search_index_entry = {'aliases': 'stab parry defend hit fight pierce slash kill bash thrust chop', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' stab parry defend hit fight pierce slash kill bash thrust chop', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶
diff --git a/docs/latest/api/evennia.contrib.tutorials.tutorial_world.rooms.html b/docs/latest/api/evennia.contrib.tutorials.tutorial_world.rooms.html
index d0cf30d656..7a08d34a6f 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 around', 'fiddle', 'search', 'l', 'feel']¶
+aliases = ['l', 'feel', 'search', 'fiddle', 'feel around']¶
@@ -1010,7 +1010,7 @@ random chance of eventually finding a light source.
-
-
search_index_entry = {'aliases': 'feel around fiddle search l feel', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel around fiddle search l 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': 'l feel search fiddle feel around', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l feel search fiddle feel around', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶
diff --git a/docs/latest/api/evennia.contrib.utils.git_integration.git_integration.html b/docs/latest/api/evennia.contrib.utils.git_integration.git_integration.html
index 90ff691c22..4f15743b78 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/tmpskb3uu1b/d76bc1a62b28238d4e3a81255037feec8b8fed3c/evennia'¶
+directory = '/tmp/tmpgzp20edl/25ddad219e9ce16b4057a37a7c8f15acf172f504/evennia'¶
@@ -283,7 +283,7 @@ git pull - Pull the latest code from your current branch.
-
-
directory = '/tmp/tmpskb3uu1b/d76bc1a62b28238d4e3a81255037feec8b8fed3c/evennia/game_template'¶
+directory = '/tmp/tmpgzp20edl/25ddad219e9ce16b4057a37a7c8f15acf172f504/evennia/game_template'¶
diff --git a/docs/latest/api/evennia.utils.eveditor.html b/docs/latest/api/evennia.utils.eveditor.html
index 40d30b51d0..6076dd9d32 100644
--- a/docs/latest/api/evennia.utils.eveditor.html
+++ b/docs/latest/api/evennia.utils.eveditor.html
@@ -356,7 +356,7 @@ indentation.
-
-
aliases = [':fi', ':', ':r', ':fd', ':A', ':j', ':q!', ':w', ':uu', ':UU', ':y', ':x', ':::', ':S', ':s', ':!', ':wq', ':dd', ':dw', ':=', ':h', ':DD', ':<', ':echo', '::', ':i', ':>', ':u', ':p', ':f', ':I', ':q']¶
+aliases = [':<', ':>', ':dw', ':!', ':S', ':I', '::', ':', ':h', ':q', ':s', ':f', ':fd', ':w', ':UU', ':r', ':dd', ':::', ':=', ':p', ':j', ':i', ':DD', ':fi', ':uu', ':y', ':x', ':echo', ':wq', ':A', ':q!', ':u']¶
@@ -384,7 +384,7 @@ efficient presentation.
-
-
search_index_entry = {'aliases': ':fi : :r :fd :A :j :q! :w :uu :UU :y :x ::: :S :s :! :wq :dd :dw := :h :DD :< :echo :: :i :> :u :p :f :I :q', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :fi : :r :fd :A :j :q! :w :uu :UU :y :x ::: :S :s :! :wq :dd :dw := :h :DD :< :echo :: :i :> :u :p :f :I :q', 'tags': '', 'text': '\n Commands for the editor\n '}¶
+search_index_entry = {'aliases': ':< :> :dw :! :S :I :: : :h :q :s :f :fd :w :UU :r :dd ::: := :p :j :i :DD :fi :uu :y :x :echo :wq :A :q! :u', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :< :> :dw :! :S :I :: : :h :q :s :f :fd :w :UU :r :dd ::: := :p :j :i :DD :fi :uu :y :x :echo :wq :A :q! :u', '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 7ced11830b..44004a1271 100644
--- a/docs/latest/api/evennia.utils.evmenu.html
+++ b/docs/latest/api/evennia.utils.evmenu.html
@@ -955,7 +955,7 @@ single question.
+aliases = ['yes', '__nomatch_command', 'n', 'a', 'abort', 'y', 'no']¶
@@ -981,7 +981,7 @@ single question.
+search_index_entry = {'aliases': 'yes __nomatch_command n a abort y no', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' yes __nomatch_command n a abort y no', '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 f0ae20fc3f..5266f889e8 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 = ['abort', 'next', 'quit', 'end', 'e', 'n', 'previous', 'q', 'p', 'top', 't', 'a']¶
+aliases = ['previous', 'n', 'end', 'e', 'a', 'abort', 'q', 'top', 't', 'quit', 'p', 'next']¶
@@ -177,7 +177,7 @@ the caller.msg() construct every time the page is updated.
-
-
search_index_entry = {'aliases': 'abort next quit end e n previous q p top t a', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' abort next quit end e n previous q p top t a', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
+search_index_entry = {'aliases': 'previous n end e a abort q top t quit p next', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' previous n end e a abort q top t quit p next', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
diff --git a/docs/latest/index.html b/docs/latest/index.html
index e9721f082b..5dc5c234cb 100644
--- a/docs/latest/index.html
+++ b/docs/latest/index.html
@@ -118,7 +118,7 @@
Evennia Documentation¶
-This is the manual of Evennia, the open source Python MU* creation system. Use the Search bar on the left to find or discover interesting articles. This manual was last updated September 29, 2024, see the Evennia Changelog. Latest released Evennia version is 4.4.0.
+This is the manual of Evennia, the open source Python MU* creation system. Use the Search bar on the left to find or discover interesting articles. This manual was last updated October 01, 2024, see the Evennia Changelog. Latest released Evennia version is 4.4.1.
Introduction - what is this Evennia thing?
Evennia in Pictures - a visual overview of Evennia
diff --git a/docs/latest/objects.inv b/docs/latest/objects.inv
index 91d6da097e5db4579fc7f5d8115fb393b6f8b718..5987183f1be8b16b3b1b9d41b8c0ec8f4ade6e8d 100644
GIT binary patch
delta 99890
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