From a3202300639832193a496983cc67db93e63ee0ea Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action
cdestroy (cmdset: AccountCmdSet, help-category: Comms)
cemit [cmsg] (cmdset: AccountCmdSet, help-category: Comms)
channels [channellist, clist, comlist, all channels, chanlist] (cmdset: AccountCmdSet, help-category: Comms)
channels [comlist, all channels, chanlist, channellist, clist] (cmdset: AccountCmdSet, help-category: Comms)
charcreate (cmdset: AccountCmdSet, help-category: General)
chardelete (cmdset: AccountCmdSet, help-category: General)
clock (cmdset: AccountCmdSet, help-category: Comms)
cmdsets [listcmsets] (cmdset: CharacterCmdSet, help-category: Building)
color (cmdset: AccountCmdSet, help-category: General)
connect [con, conn, co] (cmdset: UnloggedinCmdSet, help-category: General)
connect [co, conn, con] (cmdset: UnloggedinCmdSet, help-category: General)
copy (cmdset: CharacterCmdSet, help-category: Building)
cpattr (cmdset: CharacterCmdSet, help-category: Building)
create (cmdset: CharacterCmdSet, help-category: Building)
drop (cmdset: CharacterCmdSet, help-category: General)
encoding [encode] (cmdset: UnloggedinCmdSet, help-category: General)
examine [exam, ex] (cmdset: AccountCmdSet, help-category: Building)
examine [ex, exam] (cmdset: AccountCmdSet, help-category: Building)
find [locate, search] (cmdset: CharacterCmdSet, help-category: Building)
get [grab] (cmdset: CharacterCmdSet, help-category: General)
give (cmdset: CharacterCmdSet, help-category: General)
link (cmdset: CharacterCmdSet, help-category: Building)
lock [locks] (cmdset: CharacterCmdSet, help-category: Building)
look [ls, l] (cmdset: AccountCmdSet, help-category: General)
look [ls, l] (cmdset: CharacterCmdSet, help-category: General)
look [l, ls] (cmdset: AccountCmdSet, help-category: General)
look [l, ls] (cmdset: CharacterCmdSet, help-category: General)
mvattr (cmdset: CharacterCmdSet, help-category: Building)
name [rename] (cmdset: CharacterCmdSet, help-category: Building)
nick [nickname, nicks] (cmdset: AccountCmdSet, help-category: General)
objects [db, listobjs, listobjects, stats] (cmdset: CharacterCmdSet, help-category: System)
nick [nicks, nickname] (cmdset: AccountCmdSet, help-category: General)
objects [stats, listobjects, db, listobjs] (cmdset: CharacterCmdSet, help-category: System)
ooc [unpuppet] (cmdset: AccountCmdSet, help-category: General)
open (cmdset: CharacterCmdSet, help-category: Building)
option [options] (cmdset: AccountCmdSet, help-category: General)
reset [reboot] (cmdset: AccountCmdSet, help-category: System)
rss2chan (cmdset: AccountCmdSet, help-category: Comms)
say [”, ‘] (cmdset: CharacterCmdSet, help-category: General)
say [’, “] (cmdset: CharacterCmdSet, help-category: General)
screenreader (cmdset: UnloggedinCmdSet, help-category: General)
script [addscript] (cmdset: CharacterCmdSet, help-category: Building)
scripts [globalscript, listscripts] (cmdset: CharacterCmdSet, help-category: System)
time [uptime] (cmdset: CharacterCmdSet, help-category: System)
tunnel [tun] (cmdset: CharacterCmdSet, help-category: Building)
typeclass [update, parent, swap, type] (cmdset: CharacterCmdSet, help-category: Building)
typeclass [type, update, parent, swap] (cmdset: CharacterCmdSet, help-category: Building)
unlink (cmdset: CharacterCmdSet, help-category: Building)
whisper (cmdset: CharacterCmdSet, help-category: General)
who [doing] (cmdset: AccountCmdSet, help-category: General)
aliases = ['ls', 'l']¶aliases = ['l', 'ls']¶
aliases = ['pemit', 'remit']¶aliases = ['remit', 'pemit']¶
aliases = ['update', 'parent', 'swap', 'type']¶aliases = ['type', 'update', 'parent', 'swap']¶
aliases = ['exam', 'ex']¶aliases = ['ex', 'exam']¶
aliases = ['channellist', 'clist', 'comlist', 'all channels', 'chanlist']¶aliases = ['comlist', 'all channels', 'chanlist', 'channellist', 'clist']¶
aliases = ['ls', 'l']¶aliases = ['l', 'ls']¶
aliases = ['nickname', 'nicks']¶aliases = ['nicks', 'nickname']¶
aliases = ['"', "'"]¶aliases = ["'", '"']¶
aliases = ['db', 'listobjs', 'listobjects', 'stats']¶aliases = ['stats', 'listobjects', 'db', 'listobjs']¶
aliases = ['con', 'conn', 'co']¶aliases = ['co', 'conn', 'con']¶
aliases = ['offers', 'deal']¶aliases = ['deal', 'offers']¶
aliases = ['ls', 'l']¶aliases = ['l', 'ls']¶
aliases = ['con', 'conn', 'co']¶aliases = ['co', 'conn', 'con']¶
aliases = ['@callback', '@callbacks', '@calls']¶aliases = ['@callbacks', '@callback', '@calls']¶
aliases = ['"', "'"]¶aliases = ["'", '"']¶
aliases = ['press', 'push', 'press button']¶
aliases = ['smash', 'break lid', 'smash lid']¶
aliases = ['open button', 'open']¶
aliases = ['get', 'listen', 'examine', 'ex', 'feel', 'l']¶
aliases = ['push', 'move', 'pull', 'shiftroot']¶aliases = ['shiftroot', 'move', 'pull', 'push']¶
aliases = ['parry', 'hit', 'thrust', 'fight', 'pierce', 'chop', 'kill', 'slash', 'stab', 'defend', 'bash']¶aliases = ['hit', 'pierce', 'parry', 'kill', 'thrust', 'fight', 'stab', 'slash', 'chop', 'defend', 'bash']¶
aliases = ['feel', 'fiddle', 'feel around', 'l', 'search']¶aliases = ['feel', 'l', 'feel around', 'fiddle', 'search']¶
aliases = [':y', ':u', ':fd', ':j', ':::', ':A', ':dd', ':s', '::', ':p', ':>', ':=', ':x', ':w', ':<', ':q!', ':', ':uu', ':q', ':wq', ':DD', ':echo', ':!', ':i', ':r', ':fi', ':UU', ':h', ':dw', ':I', ':S', ':f']¶aliases = [':fd', ':dd', ':DD', ':f', ':p', ':q', ':dw', ':x', ':S', ':y', ':!', ':=', ':>', ':wq', ':s', ':fi', '::', ':echo', ':j', ':h', ':<', ':I', ':UU', ':r', ':q!', ':i', ':', ':w', ':A', ':uu', ':u', ':::']¶
aliases = ['a', 'b', 'top', 'next', 'n', 'abort', 'end', 't', 'e', 'back', 'quit', 'q']¶aliases = ['end', 'a', 'abort', 'e', 'quit', 'top', 'back', 't', 'next', 'q', 'b', 'n']¶
WEBSERVER_PORTS = [(4001, 4005)]
AMP_PORT = 4006
+# This needs to be set to your website address for django or you'll receive a
+# CSRF error when trying to log on to the web portal
+CSRF_TRUSTED_ORIGINS = ['https://mymudgame.com']
+
# Optional - security measures limiting interface access
# (don't set these before you know things work without them)
TELNET_INTERFACES = ['203.0.113.0']
diff --git a/docs/1.0-dev/_modules/evennia/web/api/views.html b/docs/1.0-dev/_modules/evennia/web/api/views.html
index 2928da4af2..3e9a4b3c91 100644
--- a/docs/1.0-dev/_modules/evennia/web/api/views.html
+++ b/docs/1.0-dev/_modules/evennia/web/api/views.html
@@ -154,10 +154,7 @@
"""
- queryset = DefaultCharacter.objects.typeclass_search(
- DefaultCharacter.path, include_children=True
- )
- list_serializer_class = serializers.ObjectListSerializer
+ queryset = DefaultCharacter.objects.all_family()
[docs]class RoomViewSet(ObjectDBViewSet):
@@ -166,8 +163,7 @@
"""
- queryset = DefaultRoom.objects.typeclass_search(DefaultRoom.path, include_children=True)
- list_serializer_class = serializers.ObjectListSerializer
+ queryset = DefaultRoom.objects.all_family()
[docs]class ExitViewSet(ObjectDBViewSet):
@@ -177,8 +173,7 @@
"""
- queryset = DefaultExit.objects.typeclass_search(DefaultExit.path, include_children=True)
- list_serializer_class = serializers.ObjectListSerializer
+ queryset = DefaultExit.objects.all_family()
[docs]class AccountDBViewSet(TypeclassViewSetMixin, ModelViewSet):
diff --git a/docs/1.0-dev/_sources/Setup/Online-Setup.md.txt b/docs/1.0-dev/_sources/Setup/Online-Setup.md.txt
index cc2f9c304e..f8a6033b35 100644
--- a/docs/1.0-dev/_sources/Setup/Online-Setup.md.txt
+++ b/docs/1.0-dev/_sources/Setup/Online-Setup.md.txt
@@ -85,6 +85,10 @@ WEBSOCKET_CLIENT_PORT = 4002
WEBSERVER_PORTS = [(4001, 4005)]
AMP_PORT = 4006
+# This needs to be set to your website address for django or you'll receive a
+# CSRF error when trying to log on to the web portal
+CSRF_TRUSTED_ORIGINS = ['https://mymudgame.com']
+
# Optional - security measures limiting interface access
# (don't set these before you know things work without them)
TELNET_INTERFACES = ['203.0.113.0']
diff --git a/docs/1.0-dev/api/evennia.commands.default.account.html b/docs/1.0-dev/api/evennia.commands.default.account.html
index 4b41f8be9e..f1fc66fbaa 100644
--- a/docs/1.0-dev/api/evennia.commands.default.account.html
+++ b/docs/1.0-dev/api/evennia.commands.default.account.html
@@ -84,7 +84,7 @@ method. Otherwise all text will be returned to all connected sessions.
@@ -115,7 +115,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/1.0-dev/api/evennia.commands.default.admin.html b/docs/1.0-dev/api/evennia.commands.default.admin.html
index 5211c4b794..858f39bd5f 100644
--- a/docs/1.0-dev/api/evennia.commands.default.admin.html
+++ b/docs/1.0-dev/api/evennia.commands.default.admin.html
@@ -268,7 +268,7 @@ to accounts respectively.
@@ -299,7 +299,7 @@ to accounts respectively.
-
-
search_index_entry = {'aliases': 'pemit remit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' pemit remit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}¶
+search_index_entry = {'aliases': 'remit pemit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' remit pemit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.commands.default.batchprocess.html b/docs/1.0-dev/api/evennia.commands.default.batchprocess.html
index 63c99c3dbb..66715808ac 100644
--- a/docs/1.0-dev/api/evennia.commands.default.batchprocess.html
+++ b/docs/1.0-dev/api/evennia.commands.default.batchprocess.html
@@ -89,7 +89,7 @@ skipping, reloading etc.
@@ -120,7 +120,7 @@ skipping, reloading etc.
-
-
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 '}¶
+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 '}¶
diff --git a/docs/1.0-dev/api/evennia.commands.default.building.html b/docs/1.0-dev/api/evennia.commands.default.building.html
index e3c57950bd..c3c73afb2e 100644
--- a/docs/1.0-dev/api/evennia.commands.default.building.html
+++ b/docs/1.0-dev/api/evennia.commands.default.building.html
@@ -1296,7 +1296,7 @@ server settings.
-
-
aliases = ['@type', '@parent', '@typeclasses', '@swap', '@update']¶
+aliases = ['@typeclasses', '@type', '@update', '@parent', '@swap']¶
@@ -1327,7 +1327,7 @@ server settings.
-
-
search_index_entry = {'aliases': '@type @parent @typeclasses @swap @update', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass type parent typeclasses swap update', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶
+search_index_entry = {'aliases': '@typeclasses @type @update @parent @swap', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass typeclasses type update parent 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 "}¶
@@ -1482,7 +1482,7 @@ If object is not specified, the current location is examined.
@@ -1750,7 +1750,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 '}¶
@@ -1784,7 +1784,7 @@ one is given.
@@ -1815,7 +1815,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/1.0-dev/api/evennia.commands.default.general.html b/docs/1.0-dev/api/evennia.commands.default.general.html
index 20bcc6c7fc..87e25a7376 100644
--- a/docs/1.0-dev/api/evennia.commands.default.general.html
+++ b/docs/1.0-dev/api/evennia.commands.default.general.html
@@ -126,7 +126,7 @@ look *<account&g
@@ -157,7 +157,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 '}¶
@@ -219,7 +219,7 @@ for everyone to use, you need build privileges and the alias command.
@@ -251,7 +251,7 @@ for everyone to use, you need build privileges and the alias command.
-
-
search_index_entry = {'aliases': 'nicks nickname', 'category': 'general', 'key': 'nick', 'no_prefix': ' nicks nickname', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}¶
+search_index_entry = {'aliases': 'nickname nicks', 'category': 'general', 'key': 'nick', 'no_prefix': ' nickname nicks', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}¶
@@ -549,7 +549,7 @@ placing it in their inventory.
@@ -580,7 +580,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 '}¶
@@ -660,7 +660,7 @@ automatically begin with your name.
@@ -701,7 +701,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 "}¶
@@ -724,7 +724,7 @@ which permission groups you are a member of.
@@ -755,7 +755,7 @@ which permission groups you are a member of.
-
-
search_index_entry = {'aliases': 'groups hierarchy', 'category': 'general', 'key': 'access', 'no_prefix': ' groups hierarchy', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶
+search_index_entry = {'aliases': 'hierarchy groups', 'category': 'general', 'key': 'access', 'no_prefix': ' hierarchy groups', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.commands.default.tests.html b/docs/1.0-dev/api/evennia.commands.default.tests.html
index 5ede5d6075..12dcbdcb7c 100644
--- a/docs/1.0-dev/api/evennia.commands.default.tests.html
+++ b/docs/1.0-dev/api/evennia.commands.default.tests.html
@@ -853,7 +853,7 @@ main test suite started with
Test the batch processor.
+red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmp23ufpxab/a4402ebf383b0f57089924a3b62b34d6c1e58b46/evennia/contrib/tutorials/red_button/red_button.py'>¶
diff --git a/docs/1.0-dev/api/evennia.commands.default.unloggedin.html b/docs/1.0-dev/api/evennia.commands.default.unloggedin.html
index 0c26c35471..ca32f03491 100644
--- a/docs/1.0-dev/api/evennia.commands.default.unloggedin.html
+++ b/docs/1.0-dev/api/evennia.commands.default.unloggedin.html
@@ -73,7 +73,7 @@ connect “account name” “pass word”
@@ -108,7 +108,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con conn', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
+search_index_entry = {'aliases': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co conn', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.base_systems.email_login.email_login.html b/docs/1.0-dev/api/evennia.contrib.base_systems.email_login.email_login.html
index c68e9a68f8..1cd92e247d 100644
--- a/docs/1.0-dev/api/evennia.contrib.base_systems.email_login.email_login.html
+++ b/docs/1.0-dev/api/evennia.contrib.base_systems.email_login.email_login.html
@@ -90,7 +90,7 @@ the module given by settings.CONNECTION_SCREEN_MODULE.
@@ -120,7 +120,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con conn', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶
+search_index_entry = {'aliases': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co conn', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.base_systems.ingame_python.commands.html b/docs/1.0-dev/api/evennia.contrib.base_systems.ingame_python.commands.html
index f3d7571665..9a3c68aeb8 100644
--- a/docs/1.0-dev/api/evennia.contrib.base_systems.ingame_python.commands.html
+++ b/docs/1.0-dev/api/evennia.contrib.base_systems.ingame_python.commands.html
@@ -67,7 +67,7 @@
@@ -148,7 +148,7 @@ on user permission.
-
-
search_index_entry = {'aliases': '@callbacks @callback @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callbacks callback calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶
+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/1.0-dev/api/evennia.contrib.full_systems.evscaperoom.commands.html b/docs/1.0-dev/api/evennia.contrib.full_systems.evscaperoom.commands.html
index 4f0394d477..50063a0858 100644
--- a/docs/1.0-dev/api/evennia.contrib.full_systems.evscaperoom.commands.html
+++ b/docs/1.0-dev/api/evennia.contrib.full_systems.evscaperoom.commands.html
@@ -162,7 +162,7 @@ the operation will be general or on the room.
@@ -186,7 +186,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'chicken out q abort quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' chicken out q 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': 'q abort quit chicken out', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' q abort quit chicken out', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶
@@ -207,7 +207,7 @@ set in self.parse())
@@ -241,7 +241,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 '}¶
@@ -322,7 +322,7 @@ shout
@@ -351,7 +351,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 '}¶
@@ -379,7 +379,7 @@ emote /me points to /box and /lever.
@@ -418,7 +418,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 '}¶
@@ -441,7 +441,7 @@ looks and what actions is available.
@@ -470,7 +470,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'unfocus ex e examine', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' unfocus ex e examine', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶
+search_index_entry = {'aliases': 'unfocus examine ex e', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' unfocus examine ex 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 '}¶
@@ -532,7 +532,7 @@ set in self.parse())
@@ -556,7 +556,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'inventory give i inv', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inventory give i inv', '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 '}¶
@@ -577,7 +577,7 @@ set in self.parse())
@@ -600,7 +600,7 @@ to all the variables defined therein.
-
-
search_index_entry = {'aliases': '@dig @open', 'category': 'general', 'key': 'open', 'no_prefix': ' dig open', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}¶
+search_index_entry = {'aliases': '@open @dig', 'category': 'general', 'key': 'open', 'no_prefix': ' open dig', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_basic.html b/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_basic.html
index 8556688b9e..a0cfe3814c 100644
--- a/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_basic.html
+++ b/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_basic.html
@@ -623,7 +623,7 @@ if there are still any actions you can take.
@@ -649,7 +649,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/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_equip.html b/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_equip.html
index ea6c9eab80..4917940612 100644
--- a/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_equip.html
+++ b/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_equip.html
@@ -518,7 +518,7 @@ if there are still any actions you can take.
@@ -538,7 +538,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/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_items.html b/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_items.html
index d352f4e704..7f0b2673e0 100644
--- a/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_items.html
+++ b/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_items.html
@@ -641,7 +641,7 @@ if there are still any actions you can take.
@@ -661,7 +661,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/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_magic.html b/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_magic.html
index 069c94c28f..1fbdf077da 100644
--- a/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_magic.html
+++ b/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_magic.html
@@ -420,7 +420,7 @@ if there are still any actions you can take.
@@ -440,7 +440,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/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_range.html b/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_range.html
index 47fe6be620..66421ba3be 100644
--- a/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_range.html
+++ b/docs/1.0-dev/api/evennia.contrib.game_systems.turnbattle.tb_range.html
@@ -880,7 +880,7 @@ if there are still any actions you can take.
@@ -900,7 +900,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/1.0-dev/api/evennia.contrib.grid.extended_room.extended_room.html b/docs/1.0-dev/api/evennia.contrib.grid.extended_room.extended_room.html
index e97c9c1631..d284ddea0f 100644
--- a/docs/1.0-dev/api/evennia.contrib.grid.extended_room.extended_room.html
+++ b/docs/1.0-dev/api/evennia.contrib.grid.extended_room.extended_room.html
@@ -291,7 +291,7 @@ look *<account&g
@@ -311,7 +311,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/1.0-dev/api/evennia.contrib.rpg.rpsystem.rpsystem.html b/docs/1.0-dev/api/evennia.contrib.rpg.rpsystem.rpsystem.html
index a6a31e227c..c233c74027 100644
--- a/docs/1.0-dev/api/evennia.contrib.rpg.rpsystem.rpsystem.html
+++ b/docs/1.0-dev/api/evennia.contrib.rpg.rpsystem.rpsystem.html
@@ -643,7 +643,7 @@ a different language.
@@ -674,7 +674,7 @@ a different language.
-
-
search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
+search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
@@ -813,7 +813,7 @@ Using the command without arguments will list all current recogs.
@@ -840,7 +840,7 @@ Using the command without arguments will list all current recogs.
-
-
search_index_entry = {'aliases': 'forget recognize', 'category': 'general', 'key': 'recog', 'no_prefix': ' forget recognize', 'tags': '', 'text': '\n Recognize another person in the same room.\n\n Usage:\n recog\n recog sdesc as alias\n forget alias\n\n Example:\n recog tall man as Griatch\n forget griatch\n\n This will assign a personal alias for a person, or forget said alias.\n Using the command without arguments will list all current recogs.\n\n '}¶
+search_index_entry = {'aliases': 'recognize forget', 'category': 'general', 'key': 'recog', 'no_prefix': ' recognize forget', 'tags': '', 'text': '\n Recognize another person in the same room.\n\n Usage:\n recog\n recog sdesc as alias\n forget alias\n\n Example:\n recog tall man as Griatch\n forget griatch\n\n This will assign a personal alias for a person, or forget said alias.\n Using the command without arguments will list all current recogs.\n\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.tutorials.evadventure.commands.html b/docs/1.0-dev/api/evennia.contrib.tutorials.evadventure.commands.html
index 74a75f4d78..710fc51f46 100644
--- a/docs/1.0-dev/api/evennia.contrib.tutorials.evadventure.commands.html
+++ b/docs/1.0-dev/api/evennia.contrib.tutorials.evadventure.commands.html
@@ -308,7 +308,7 @@ unwear <item>
@@ -332,7 +332,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/1.0-dev/api/evennia.contrib.tutorials.red_button.red_button.html b/docs/1.0-dev/api/evennia.contrib.tutorials.red_button.red_button.html
index 486a32485d..12017b6856 100644
--- a/docs/1.0-dev/api/evennia.contrib.tutorials.red_button.red_button.html
+++ b/docs/1.0-dev/api/evennia.contrib.tutorials.red_button.red_button.html
@@ -96,7 +96,7 @@ such as when closing the lid and un-blinding a character.
+aliases = ['press button', 'press', 'push']¶
@@ -125,7 +125,7 @@ check if the lid is open or closed.
+search_index_entry = {'aliases': 'press button press push', 'category': 'general', 'key': 'push button', 'no_prefix': ' press button press push', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}¶
@@ -195,7 +195,7 @@ check if the lid is open or closed.
+aliases = ['break lid', 'smash lid', 'smash']¶
@@ -222,7 +222,7 @@ break.
+search_index_entry = {'aliases': 'break lid smash lid smash', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' break lid smash lid smash', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}¶
@@ -322,7 +322,7 @@ be mutually exclusive.
+aliases = ['press button', 'press', 'push']¶
@@ -351,7 +351,7 @@ set in self.parse())
+search_index_entry = {'aliases': 'press button press push', 'category': 'general', 'key': 'push button', 'no_prefix': ' press button press push', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}¶
@@ -449,7 +449,7 @@ be mutually exclusive.
+aliases = ['feel', 'get', 'ex', 'l', 'listen', 'examine']¶
@@ -475,7 +475,7 @@ be mutually exclusive.
+search_index_entry = {'aliases': 'feel get ex l listen examine', 'category': 'general', 'key': 'look', 'no_prefix': ' feel get ex l listen 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/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.objects.html b/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.objects.html
index 29570e25f9..aa7d0bbe12 100644
--- a/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.objects.html
+++ b/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.objects.html
@@ -560,7 +560,7 @@ yellow/green - horizontal roots
-
-
aliases = ['press button', 'button', 'push button']¶
+aliases = ['press button', 'push button', 'button']¶
@@ -586,7 +586,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'press button button push button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button button push button', 'tags': '', 'text': '\n Presses a button.\n '}¶
+search_index_entry = {'aliases': 'press button push button button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button push button button', 'tags': '', 'text': '\n Presses a button.\n '}¶
@@ -730,7 +730,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
aliases = ['kill', 'thrust', 'defend', 'fight', 'stab', 'slash', 'parry', 'hit', 'pierce', 'chop', 'bash']¶
+aliases = ['hit', 'kill', 'chop', 'stab', 'pierce', 'bash', 'defend', 'thrust', 'parry', 'slash', 'fight']¶
@@ -756,7 +756,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
search_index_entry = {'aliases': 'kill thrust defend fight stab slash parry hit pierce chop bash', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' kill thrust defend fight stab slash parry hit pierce chop 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': 'hit kill chop stab pierce bash defend thrust parry slash fight', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' hit kill chop stab pierce bash defend thrust parry slash fight', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.rooms.html b/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.rooms.html
index bfdcb8d322..52c5d6044e 100644
--- a/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.rooms.html
+++ b/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.rooms.html
@@ -199,7 +199,7 @@ code except for adding in the details.
@@ -214,7 +214,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 '}¶
@@ -919,7 +919,7 @@ to find something.
-
-
aliases = ['feel', 'fiddle', 'feel around', 'l', 'search']¶
+aliases = ['search', 'feel', 'l', 'feel around', 'fiddle']¶
@@ -947,7 +947,7 @@ random chance of eventually finding a light source.
-
-
search_index_entry = {'aliases': 'feel fiddle feel around l search', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel fiddle feel around l search', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶
+search_index_entry = {'aliases': 'search feel l feel around fiddle', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' search feel l feel around fiddle', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.utils.eveditor.html b/docs/1.0-dev/api/evennia.utils.eveditor.html
index f9604729b3..1005c2da10 100644
--- a/docs/1.0-dev/api/evennia.utils.eveditor.html
+++ b/docs/1.0-dev/api/evennia.utils.eveditor.html
@@ -287,7 +287,7 @@ indentation.
-
-
aliases = [':', ':q!', ':I', ':A', ':UU', ':uu', ':f', ':>', ':DD', ':S', ':u', ':p', ':dw', ':::', ':s', ':w', ':q', ':echo', '::', ':!', ':dd', ':<', ':i', ':=', ':fi', ':fd', ':h', ':j', ':x', ':wq', ':r', ':y']¶
+aliases = [':dw', ':f', ':uu', ':A', ':j', ':>', ':s', ':q!', ':dd', ':y', ':echo', ':p', ':::', ':=', ':DD', ':w', ':fi', ':wq', ':', '::', ':r', ':I', ':<', ':q', ':fd', ':UU', ':S', ':!', ':i', ':x', ':u', ':h']¶
@@ -315,7 +315,7 @@ efficient presentation.
-
-
search_index_entry = {'aliases': ': :q! :I :A :UU :uu :f :> :DD :S :u :p :dw ::: :s :w :q :echo :: :! :dd :< :i := :fi :fd :h :j :x :wq :r :y', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' : :q! :I :A :UU :uu :f :> :DD :S :u :p :dw ::: :s :w :q :echo :: :! :dd :< :i := :fi :fd :h :j :x :wq :r :y', 'tags': '', 'text': '\n Commands for the editor\n '}¶
+search_index_entry = {'aliases': ':dw :f :uu :A :j :> :s :q! :dd :y :echo :p ::: := :DD :w :fi :wq : :: :r :I :< :q :fd :UU :S :! :i :x :u :h', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :dw :f :uu :A :j :> :s :q! :dd :y :echo :p ::: := :DD :w :fi :wq : :: :r :I :< :q :fd :UU :S :! :i :x :u :h', 'tags': '', 'text': '\n Commands for the editor\n '}¶
diff --git a/docs/1.0-dev/api/evennia.utils.evmenu.html b/docs/1.0-dev/api/evennia.utils.evmenu.html
index 3d087a3d2e..0ddc5370d8 100644
--- a/docs/1.0-dev/api/evennia.utils.evmenu.html
+++ b/docs/1.0-dev/api/evennia.utils.evmenu.html
@@ -954,7 +954,7 @@ single question.
+aliases = ['y', '__nomatch_command', 'yes', 'n', 'no', 'abort', 'a']¶
@@ -980,7 +980,7 @@ single question.
+search_index_entry = {'aliases': 'y __nomatch_command yes n no abort a', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' y __nomatch_command yes n no abort a', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}¶
diff --git a/docs/1.0-dev/api/evennia.utils.evmore.html b/docs/1.0-dev/api/evennia.utils.evmore.html
index df80a9c6e8..789e20e61d 100644
--- a/docs/1.0-dev/api/evennia.utils.evmore.html
+++ b/docs/1.0-dev/api/evennia.utils.evmore.html
@@ -88,7 +88,7 @@ the caller.msg() construct every time the page is updated.
-
-
aliases = ['end', 'a', 't', 'e', 'abort', 'p', 'top', 'previous', 'n', 'q', 'quit', 'next']¶
+aliases = ['e', 'previous', 'top', 'p', 'next', 'q', 'n', 'quit', 't', 'abort', 'end', 'a']¶
@@ -114,7 +114,7 @@ the caller.msg() construct every time the page is updated.
-
-
search_index_entry = {'aliases': 'end a t e abort p top previous n q quit next', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' end a t e abort p top previous n q quit next', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
+search_index_entry = {'aliases': 'e previous top p next q n quit t abort end a', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' e previous top p next q n quit t abort end a', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.web.api.views.html b/docs/1.0-dev/api/evennia.web.api.views.html
index 1e1f46a803..404e191d63 100644
--- a/docs/1.0-dev/api/evennia.web.api.views.html
+++ b/docs/1.0-dev/api/evennia.web.api.views.html
@@ -167,12 +167,6 @@ it if no db_value is provided.
queryset¶
-
--
-
list_serializer_class¶
--
-
-
-
--
-
list_serializer_class¶
--
-
-
-
--
-
list_serializer_class¶
--
-
-
-
basename = None¶
diff --git a/docs/1.0-dev/genindex.html b/docs/1.0-dev/genindex.html
index cf65c51f9f..0c14843227 100644
--- a/docs/1.0-dev/genindex.html
+++ b/docs/1.0-dev/genindex.html
@@ -12468,15 +12468,9 @@
- list_serializer_class (evennia.web.api.views.AccountDBViewSet attribute)
- - (evennia.web.api.views.CharacterViewSet attribute)
-
- - (evennia.web.api.views.ExitViewSet attribute)
-
- (evennia.web.api.views.HelpViewSet attribute)
- (evennia.web.api.views.ObjectDBViewSet attribute)
-
- - (evennia.web.api.views.RoomViewSet attribute)
- (evennia.web.api.views.ScriptDBViewSet attribute)
diff --git a/docs/1.0-dev/objects.inv b/docs/1.0-dev/objects.inv
index 08d9e616e65c82441615bf5b5fce6ad5145faf46..01a5719fbf5617da0369b82039a0da5df357320a 100644
GIT binary patch
delta 97443
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[oC;uh6R`fr$$dHfj1zXL3WeBiy%c*Ggg
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