From cb6e776605da1df546aabd20b2f0e13b3ec0d853 Mon Sep 17 00:00:00 2001
From: Griatch
aliases = ['batchcmd', 'batchcommand']¶aliases = ['batchcommand', 'batchcmd']¶
search_index_entry = {'aliases': 'batchcmd batchcommand', 'category': 'building', 'key': 'batchcommands', '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', '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 '}¶
aliases = ['delete', 'del']¶aliases = ['del', 'delete']¶
search_index_entry = {'aliases': 'delete del', 'category': 'building', 'key': 'destroy', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}¶search_index_entry = {'aliases': 'del delete', 'category': 'building', 'key': 'destroy', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}¶
aliases = ['swap', 'parent', 'update', 'type']¶aliases = ['update', 'type', 'swap', 'parent']¶
search_index_entry = {'aliases': 'swap parent update type', 'category': 'building', 'key': 'typeclass', '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 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.\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': 'update type swap parent', 'category': 'building', 'key': 'typeclass', '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 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.\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 "}¶
aliases = ['search', 'locate']¶aliases = ['locate', 'search']¶
search_index_entry = {'aliases': 'search locate', 'category': 'building', 'key': 'find', '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', '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 '}¶
aliases = ['chan', 'channels']¶aliases = ['channels', 'chan']¶
search_index_entry = {'aliases': 'chan channels', 'category': 'comms', 'key': 'channel', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶search_index_entry = {'aliases': 'channels chan', 'category': 'comms', 'key': 'channel', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶
aliases = ['aliaschan', 'chanalias']¶aliases = ['chanalias', 'aliaschan']¶
search_index_entry = {'aliases': 'aliaschan chanalias', 'category': 'comms', 'key': 'addcom', 'tags': '', 'text': '\n Add a channel alias and/or subscribe to a channel\n\n Usage:\n addcom [alias=] <channel>\n\n Joins a given channel. If alias is given, this will allow you to\n refer to the channel by this alias rather than the full channel\n name. Subsequent calls of this command can be used to add multiple\n aliases to an already joined channel.\n '}¶search_index_entry = {'aliases': 'chanalias aliaschan', 'category': 'comms', 'key': 'addcom', '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 '}¶
aliases = ['nicks', 'nickname']¶aliases = ['nickname', 'nicks']¶
search_index_entry = {'aliases': 'nicks nickname', 'category': 'general', 'key': 'nick', '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', '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 '}¶
aliases = ['inv', 'i']¶aliases = ['i', 'inv']¶
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', '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', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
aliases = ['emote', ':']¶aliases = [':', 'emote']¶
search_index_entry = {'aliases': 'emote :', 'category': 'general', 'key': 'pose', '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', '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 "}¶
aliases = ['hierarchy', 'groups']¶aliases = ['groups', 'hierarchy']¶
search_index_entry = {'aliases': 'hierarchy groups', 'category': 'general', 'key': 'access', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶search_index_entry = {'aliases': 'groups hierarchy', 'category': 'general', 'key': 'access', '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 '}¶
aliases = ['stats', 'listobjects', 'listobjs', 'db']¶aliases = ['db', 'listobjects', 'stats', 'listobjs']¶
search_index_entry = {'aliases': 'stats listobjects listobjs db', 'category': 'system', 'key': 'objects', 'tags': '', 'text': '\n statistics on objects in the database\n\n Usage:\n objects [<nr>]\n\n Gives statictics on objects in database as well as\n a list of <nr> latest objects in database. If not\n given, <nr> defaults to 10.\n '}¶search_index_entry = {'aliases': 'db listobjects stats listobjs', 'category': 'system', 'key': 'objects', 'tags': '', 'text': '\n statistics on objects in the database\n\n Usage:\n objects [<nr>]\n\n Gives statictics on objects in database as well as\n a list of <nr> latest objects in database. If not\n given, <nr> defaults to 10.\n '}¶
aliases = ['serverload', 'serverprocess']¶aliases = ['serverprocess', 'serverload']¶
search_index_entry = {'aliases': 'serverload serverprocess', 'category': 'system', 'key': 'server', 'tags': '', 'text': "\n show server load and memory statistics\n\n Usage:\n server[/mem]\n\n Switches:\n mem - return only a string of the current memory usage\n flushmem - flush the idmapper cache\n\n This command shows server load statistics and dynamic memory\n usage. It also allows to flush the cache of accessed database\n objects.\n\n Some Important statistics in the table:\n\n |wServer load|n is an average of processor usage. It's usually\n between 0 (no usage) and 1 (100% usage), but may also be\n temporarily higher if your computer has multiple CPU cores.\n\n The |wResident/Virtual memory|n displays the total memory used by\n the server process.\n\n Evennia |wcaches|n all retrieved database entities when they are\n loaded by use of the idmapper functionality. This allows Evennia\n to maintain the same instances of an entity and allowing\n non-persistent storage schemes. The total amount of cached objects\n are displayed plus a breakdown of database object types.\n\n The |wflushmem|n switch allows to flush the object cache. Please\n note that due to how Python's memory management works, releasing\n caches may not show you a lower Residual/Virtual memory footprint,\n the released memory will instead be re-used by the program.\n\n "}¶search_index_entry = {'aliases': 'serverprocess serverload', 'category': 'system', 'key': 'server', 'tags': '', 'text': "\n show server load and memory statistics\n\n Usage:\n server[/mem]\n\n Switches:\n mem - return only a string of the current memory usage\n flushmem - flush the idmapper cache\n\n This command shows server load statistics and dynamic memory\n usage. It also allows to flush the cache of accessed database\n objects.\n\n Some Important statistics in the table:\n\n |wServer load|n is an average of processor usage. It's usually\n between 0 (no usage) and 1 (100% usage), but may also be\n temporarily higher if your computer has multiple CPU cores.\n\n The |wResident/Virtual memory|n displays the total memory used by\n the server process.\n\n Evennia |wcaches|n all retrieved database entities when they are\n loaded by use of the idmapper functionality. This allows Evennia\n to maintain the same instances of an entity and allowing\n non-persistent storage schemes. The total amount of cached objects\n are displayed plus a breakdown of database object types.\n\n The |wflushmem|n switch allows to flush the object cache. Please\n note that due to how Python's memory management works, releasing\n caches may not show you a lower Residual/Virtual memory footprint,\n the released memory will instead be re-used by the program.\n\n "}¶
aliases = ['cr', 'cre']¶aliases = ['cre', 'cr']¶
search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', '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': 'cre cr', 'category': 'general', 'key': 'create', '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 '}¶
aliases = ['q', 'qu']¶aliases = ['qu', 'q']¶
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', '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 '}¶
aliases = ['look', 'l']¶aliases = ['l', 'look']¶
search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
aliases = ['h', '?']¶aliases = ['?', 'h']¶
search_index_entry = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶
aliases = ['inv', 'i']¶aliases = ['i', 'inv']¶
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', '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', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
aliases = ['cr', 'cre']¶aliases = ['cre', 'cr']¶
search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', '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': 'cre cr', 'category': 'general', 'key': 'create', '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 '}¶
aliases = ['q', 'qu']¶aliases = ['qu', 'q']¶
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', '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 '}¶
aliases = ['look', 'l']¶aliases = ['l', 'look']¶
search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
aliases = ['h', '?']¶aliases = ['?', 'h']¶
search_index_entry = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶
aliases = ['forget', 'recognize']¶aliases = ['recognize', 'forget']¶
search_index_entry = {'aliases': 'forget recognize', 'category': 'general', 'key': 'recog', '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', '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 '}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', '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', '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 '}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', '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', '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 '}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', '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', '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 '}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', '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', '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 '}¶
aliases = ['wait', 'hold']¶aliases = ['hold', 'wait']¶
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', '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', '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 '}¶
aliases = ['feel', 'examine', 'get', 'l', 'ex', 'listen']¶
search_index_entry = {'aliases': 'feel examine get l ex listen', 'category': 'general', 'key': 'look', '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 "}¶
aliases = ['move', 'shiftroot', 'push', 'pull']¶aliases = ['push', 'pull', 'move', 'shiftroot']¶
search_index_entry = {'aliases': 'move shiftroot push pull', 'category': 'tutorialworld', 'key': 'shift', '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 pull move shiftroot', 'category': 'tutorialworld', 'key': 'shift', '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 '}¶
aliases = ['button', 'press button', 'push button']¶aliases = ['press button', 'push button', 'button']¶
search_index_entry = {'aliases': 'button press button push button', 'category': 'tutorialworld', 'key': 'press', 'tags': '', 'text': '\n Presses a button.\n '}¶search_index_entry = {'aliases': 'press button push button button', 'category': 'tutorialworld', 'key': 'press', 'tags': '', 'text': '\n Presses a button.\n '}¶
aliases = ['defend', 'hit', 'pierce', 'parry', 'fight', 'thrust', 'bash', 'stab', 'kill', 'slash', 'chop']¶aliases = ['fight', 'parry', 'defend', 'hit', 'stab', 'thrust', 'bash', 'kill', 'pierce', 'slash', 'chop']¶
search_index_entry = {'aliases': 'defend hit pierce parry fight thrust bash stab kill slash chop', 'category': 'tutorialworld', 'key': 'attack', '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': 'fight parry defend hit stab thrust bash kill pierce slash chop', 'category': 'tutorialworld', 'key': 'attack', '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 '}¶
aliases = ['h', '?']¶aliases = ['?', 'h']¶
search_index_entry = {'aliases': 'h ?', 'category': 'tutorial world', 'key': 'help', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}¶search_index_entry = {'aliases': '? h', 'category': 'tutorial world', 'key': 'help', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}¶
aliases = ['search', 'feel', 'l', 'fiddle', 'feel around']¶aliases = ['feel', 'feel around', 'l', 'fiddle', 'search']¶
search_index_entry = {'aliases': 'search feel l fiddle feel around', 'category': 'tutorialworld', 'key': 'look', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶search_index_entry = {'aliases': 'feel feel around l fiddle search', 'category': 'tutorialworld', 'key': 'look', '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 '}¶
aliases = [':DD', ':!', ':u', ':w', ':h', ':q!', ':fi', ':f', ':UU', ':p', ':i', ':I', ':y', ':echo', ':=', ':fd', ':dw', ':', ':wq', ':::', ':dd', ':uu', '::', ':r', ':s', ':>', ':q', ':<', ':A', ':x', ':j', ':S']¶aliases = [':w', ':x', ':r', ':UU', '::', ':dd', ':uu', ':s', ':q!', ':y', ':fi', ':=', ':<', ':p', ':A', ':::', ':q', ':dw', ':h', ':i', ':', ':!', ':f', ':wq', ':I', ':u', ':S', ':fd', ':j', ':>', ':echo', ':DD']¶
search_index_entry = {'aliases': ':DD :! :u :w :h :q! :fi :f :UU :p :i :I :y :echo := :fd :dw : :wq ::: :dd :uu :: :r :s :> :q :< :A :x :j :S', 'category': 'general', 'key': ':editor_command_group', 'tags': '', 'text': '\n Commands for the editor\n '}¶search_index_entry = {'aliases': ':w :x :r :UU :: :dd :uu :s :q! :y :fi := :< :p :A ::: :q :dw :h :i : :! :f :wq :I :u :S :fd :j :> :echo :DD', 'category': 'general', 'key': ':editor_command_group', 'tags': '', 'text': '\n Commands for the editor\n '}¶
aliases = ['no', 'n', 'yes', 'a', 'abort', '__nomatch_command', 'y']¶
search_index_entry = {'aliases': 'no n yes a abort __nomatch_command y', 'category': 'general', 'key': '__noinput_command', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}¶
aliases = ['quit', 'e', 'back', 'abort', 'q', 'next', 'top', 'b', 'end', 't', 'n', 'a']¶aliases = ['b', 'next', 'e', 'end', 'q', 'n', 'a', 'abort', 'top', 'quit', 't', 'back']¶
search_index_entry = {'aliases': 'quit e back abort q next top b end t n a', 'category': 'general', 'key': '__noinput_command', 'tags': '', 'text': '\n Manipulate the text paging\n '}¶search_index_entry = {'aliases': 'b next e end q n a abort top quit t back', 'category': 'general', 'key': '__noinput_command', 'tags': '', 'text': '\n Manipulate the text paging\n '}¶
help theatre
+> help theatre
------------------------------------------------------------------------------
@@ -60,7 +60,7 @@ finding mentions of the search term in help entries.
------------------------------------------------------------------------------
-help evennia
+> help evennia
------------------------------------------------------------------------------
@@ -93,8 +93,8 @@ finding mentions of the search term in help entries.
(but note that devs can also create help entries outside the game using their
regular code editor, see below).
-You can also create help entries as Python modules, outside of the game. These
-can not be modified from in-game.
+You can also create help entries as Python modules, outside of the game. See
+FileHelp entries below.
@@ -386,6 +386,23 @@ to keep your strings a reasonable width (it will look better). Just reload the
server and the file-based help entries will be available to view.
+
+Entry priority¶
+Should you have clashing help-entries between the three types of available
+entries, the priority is
+Command-auto-help > Db-help > File-help
+
+
+So if you create a db-help entry ‘foo’, it will replace any file-based help
+entry ‘foo’. But if there is a Command ‘foo’, that’s the help you’ll get when
+you enter help foo.
+The reasoning for this is that commands must always be understood in order to
+play the game. Meanwhile db-based help can be kept up-to-date from in-game
+builders and may be less ‘static’ than the file-based ones.
+The sethelp command (which only deals with creating db-based help entries)
+will warn you if a new help entry might shadow/be shadowed by a
+same/similar-named command or file-based help entry.
+
Locking help entries¶
The default help command gather all available commands and help entries
@@ -433,6 +450,10 @@ lock is not used. A file-help example:
}
+
+Changed in version 1.0: Changed the old ‘view’ lock to control the help-index inclusion and added
+the new ‘read’ lock-type to control access to the entry itself.
+
Customizing the look of the help system¶
@@ -443,9 +464,9 @@ responsible for collating the three sources of help-entries (commands/db/file)
together and search through them on the fly. It also does all the formatting of
the output.
To make it easier to tweak the look, the parts of the code that changes the
-visual presentation has been broken out into separate methods
-format_help_entry and format_help_index - override these in your version of
-help to change the display as you please. See the api link above for details.
+visual presentation and entity searching has been broken out into separate
+methods on the command class. Override these in your version of help to change
+the display or tweak as you please. See the api link above for details.
Technical notes¶
@@ -458,7 +479,7 @@ web-pages and produces much more sensible results than previous solutions.
simple ==, startswith and in matching (there are so relatively few of them
at that point).
-Changed in version 1.0: Replaced the bag-of-words algorithm with lunr.
+Changed in version 1.0: Replaced the old bag-of-words algorithm with lunr package.
@@ -497,6 +518,7 @@ at that point).
File-help entries
+Entry priority
Locking help entries
Customizing the look of the help system
Technical notes
diff --git a/docs/1.0-dev/_sources/Components/Help-System.md.txt b/docs/1.0-dev/_sources/Components/Help-System.md.txt
index b04ce6335a..efe583058a 100644
--- a/docs/1.0-dev/_sources/Components/Help-System.md.txt
+++ b/docs/1.0-dev/_sources/Components/Help-System.md.txt
@@ -6,7 +6,7 @@ match it will provide suggestsions, first from alternative topics and then by
finding mentions of the search term in help entries.
- help theatre
+ > help theatre
```
------------------------------------------------------------------------------
@@ -22,7 +22,7 @@ Subtopics:
------------------------------------------------------------------------------
```
- help evennia
+ > help evennia
```
------------------------------------------------------------------------------
@@ -56,8 +56,8 @@ Use the `/edit` switch to open the EvEditor for more convenient in-game writing
(but note that devs can also create help entries outside the game using their
regular code editor, see below).
-> You can also create help entries as Python modules, outside of the game. These
-> can not be modified from in-game.
+> You can also create help entries as Python modules, outside of the game. See
+> _FileHelp_ entries below.
## Sources of help entries
@@ -308,6 +308,25 @@ The help entry text will be dedented and will retain paragraphs. You should try
to keep your strings a reasonable width (it will look better). Just reload the
server and the file-based help entries will be available to view.
+## Entry priority
+
+Should you have clashing help-entries between the three types of available
+entries, the priority is
+
+ Command-auto-help > Db-help > File-help
+
+So if you create a db-help entry 'foo', it will replace any file-based help
+entry 'foo'. But if there is a Command 'foo', that's the help you'll get when
+you enter `help foo`.
+
+The reasoning for this is that commands must always be understood in order to
+play the game. Meanwhile db-based help can be kept up-to-date from in-game
+builders and may be less 'static' than the file-based ones.
+
+The `sethelp` command (which only deals with creating db-based help entries)
+will warn you if a new help entry might shadow/be shadowed by a
+same/similar-named command or file-based help entry.
+
## Locking help entries
The default `help` command gather all available commands and help entries
@@ -350,6 +369,11 @@ help_entry = {
```
+```versionchanged:: 1.0
+ Changed the old 'view' lock to control the help-index inclusion and added
+ the new 'read' lock-type to control access to the entry itself.
+```
+
## Customizing the look of the help system
This is done almost exclusively by overriding the `help` command
@@ -361,9 +385,9 @@ together and search through them on the fly. It also does all the formatting of
the output.
To make it easier to tweak the look, the parts of the code that changes the
-visual presentation has been broken out into separate methods
-`format_help_entry` and `format_help_index` - override these in your version of
-`help` to change the display as you please. See the api link above for details.
+visual presentation and entity searching has been broken out into separate
+methods on the command class. Override these in your version of `help` to change
+the display or tweak as you please. See the api link above for details.
## Technical notes
@@ -378,6 +402,6 @@ simple `==`, `startswith` and `in` matching (there are so relatively few of them
at that point).
```versionchanged:: 1.0
- Replaced the bag-of-words algorithm with lunr.
+ Replaced the old bag-of-words algorithm with lunr package.
```
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 f167793b40..75251220fa 100644
--- a/docs/1.0-dev/api/evennia.commands.default.batchprocess.html
+++ b/docs/1.0-dev/api/evennia.commands.default.batchprocess.html
@@ -76,7 +76,7 @@ skipping, reloading etc.
@@ -107,7 +107,7 @@ skipping, reloading etc.
-
-
search_index_entry = {'aliases': 'batchcommand batchcmd', 'category': 'building', 'key': 'batchcommands', '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', '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 20e92a7747..43e975d9ac 100644
--- a/docs/1.0-dev/api/evennia.commands.default.building.html
+++ b/docs/1.0-dev/api/evennia.commands.default.building.html
@@ -1453,7 +1453,7 @@ If object is not specified, the current location is examined.
@@ -1550,7 +1550,7 @@ non-persistent data stored on object
-
-
search_index_entry = {'aliases': 'exam ex', 'category': 'building', 'key': 'examine', '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\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', '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\n The examine command shows detailed game info about an\n object and optionally a specific attribute on it.\n If object is not specified, the current location is examined.\n\n Append a * before the search string to examine an account.\n\n '}¶
diff --git a/docs/1.0-dev/api/evennia.commands.default.comms.html b/docs/1.0-dev/api/evennia.commands.default.comms.html
index e13caf0859..4efb57379b 100644
--- a/docs/1.0-dev/api/evennia.commands.default.comms.html
+++ b/docs/1.0-dev/api/evennia.commands.default.comms.html
@@ -802,7 +802,7 @@ for that channel.
@@ -833,7 +833,7 @@ for that channel.
-
-
search_index_entry = {'aliases': 'delaliaschan delchanalias', 'category': 'comms', 'key': 'delcom', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶
+search_index_entry = {'aliases': 'delchanalias delaliaschan', 'category': 'comms', 'key': 'delcom', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶
diff --git a/docs/1.0-dev/api/evennia.commands.default.general.html b/docs/1.0-dev/api/evennia.commands.default.general.html
index 043fbbdf9c..f05b74c9a2 100644
--- a/docs/1.0-dev/api/evennia.commands.default.general.html
+++ b/docs/1.0-dev/api/evennia.commands.default.general.html
@@ -261,7 +261,7 @@ inv
@@ -292,7 +292,7 @@ inv
-
-
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', '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', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
@@ -536,7 +536,7 @@ placing it in their inventory.
@@ -562,7 +562,7 @@ placing it in their inventory.
-
-
search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', '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', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
@@ -642,7 +642,7 @@ automatically begin with your name.
@@ -678,7 +678,7 @@ space.
-
-
search_index_entry = {'aliases': ': emote', 'category': 'general', 'key': 'pose', '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', '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 "}¶
@@ -701,7 +701,7 @@ which permission groups you are a member of.
@@ -732,7 +732,7 @@ which permission groups you are a member of.
-
-
search_index_entry = {'aliases': 'hierarchy groups', 'category': 'general', 'key': 'access', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶
+search_index_entry = {'aliases': 'groups hierarchy', 'category': 'general', 'key': 'access', '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.system.html b/docs/1.0-dev/api/evennia.commands.default.system.html
index 7fb013c3eb..10c541df63 100644
--- a/docs/1.0-dev/api/evennia.commands.default.system.html
+++ b/docs/1.0-dev/api/evennia.commands.default.system.html
@@ -386,7 +386,7 @@ given, <nr> defaults to 10.
-
-
aliases = ['listobjects', 'stats', 'listobjs', 'db']¶
+aliases = ['db', 'listobjs', 'listobjects', 'stats']¶
@@ -412,7 +412,7 @@ given, <nr> defaults to 10.
-
-
search_index_entry = {'aliases': 'listobjects stats listobjs db', 'category': 'system', 'key': 'objects', 'tags': '', 'text': '\n statistics on objects in the database\n\n Usage:\n objects [<nr>]\n\n Gives statictics on objects in database as well as\n a list of <nr> latest objects in database. If not\n given, <nr> defaults to 10.\n '}¶
+search_index_entry = {'aliases': 'db listobjs listobjects stats', 'category': 'system', 'key': 'objects', 'tags': '', 'text': '\n statistics on objects in the database\n\n Usage:\n objects [<nr>]\n\n Gives statictics on objects in database as well as\n a list of <nr> latest objects in database. If not\n given, <nr> defaults to 10.\n '}¶
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 dbbe5818d2..e1cdfa2aa0 100644
--- a/docs/1.0-dev/api/evennia.commands.default.unloggedin.html
+++ b/docs/1.0-dev/api/evennia.commands.default.unloggedin.html
@@ -60,7 +60,7 @@ connect “account name” “pass word”
@@ -95,7 +95,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
+search_index_entry = {'aliases': 'conn co con', 'category': 'general', 'key': 'connect', '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 '}¶
@@ -174,7 +174,7 @@ version is a bit more complicated.
@@ -200,7 +200,7 @@ version is a bit more complicated.
-
-
search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', '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', '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 '}¶
@@ -273,7 +273,7 @@ for simplicity. It shows a pane of info.
@@ -299,7 +299,7 @@ for simplicity. It shows a pane of info.
-
-
search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶
+search_index_entry = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.barter.html b/docs/1.0-dev/api/evennia.contrib.barter.html
index 6667b194bc..2963a17385 100644
--- a/docs/1.0-dev/api/evennia.contrib.barter.html
+++ b/docs/1.0-dev/api/evennia.contrib.barter.html
@@ -682,7 +682,7 @@ try to influence the other part in the deal.
@@ -708,7 +708,7 @@ try to influence the other part in the deal.
-
-
search_index_entry = {'aliases': 'offers deal', 'category': 'trading', 'key': 'status', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶
+search_index_entry = {'aliases': 'deal offers', 'category': 'trading', 'key': 'status', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.clothing.html b/docs/1.0-dev/api/evennia.contrib.clothing.html
index 5763394915..999fa9d1cb 100644
--- a/docs/1.0-dev/api/evennia.contrib.clothing.html
+++ b/docs/1.0-dev/api/evennia.contrib.clothing.html
@@ -629,7 +629,7 @@ inv
@@ -660,7 +660,7 @@ inv
-
-
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', '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', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.email_login.html b/docs/1.0-dev/api/evennia.contrib.email_login.html
index 65681f34c7..73c570bda1 100644
--- a/docs/1.0-dev/api/evennia.contrib.email_login.html
+++ b/docs/1.0-dev/api/evennia.contrib.email_login.html
@@ -75,7 +75,7 @@ the module given by settings.CONNECTION_SCREEN_MODULE.
@@ -105,7 +105,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'co con conn', 'category': 'general', 'key': 'connect', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶
+search_index_entry = {'aliases': 'conn co con', 'category': 'general', 'key': 'connect', '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 '}¶
@@ -182,7 +182,7 @@ version is a bit more complicated.
@@ -208,7 +208,7 @@ version is a bit more complicated.
-
-
search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', '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', '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 '}¶
@@ -271,7 +271,7 @@ for simplicity. It shows a pane of info.
@@ -297,7 +297,7 @@ for simplicity. It shows a pane of info.
-
-
search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶
+search_index_entry = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.evscaperoom.commands.html b/docs/1.0-dev/api/evennia.contrib.evscaperoom.commands.html
index 9a5fbb4414..18d105f033 100644
--- a/docs/1.0-dev/api/evennia.contrib.evscaperoom.commands.html
+++ b/docs/1.0-dev/api/evennia.contrib.evscaperoom.commands.html
@@ -148,7 +148,7 @@ the operation will be general or on the room.
@@ -172,7 +172,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'chicken out abort quit q', 'category': 'evscaperoom', 'key': 'give up', '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 chicken out abort quit', 'category': 'evscaperoom', 'key': 'give up', '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 '}¶
@@ -308,7 +308,7 @@ shout
@@ -337,7 +337,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': '; whisper shout', 'category': 'general', 'key': 'say', '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', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶
@@ -365,7 +365,7 @@ emote /me points to /box and /lever.
@@ -404,7 +404,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'pose :', 'category': 'general', 'key': 'emote', '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', '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 '}¶
@@ -427,7 +427,7 @@ looks and what actions is available.
@@ -456,7 +456,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'e unfocus examine ex', 'category': 'evscaperoom', 'key': 'focus', '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 unfocus e examine', 'category': 'evscaperoom', 'key': 'focus', '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 '}¶
@@ -518,7 +518,7 @@ set in self.parse())
@@ -542,7 +542,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'give inventory inv i', 'category': 'evscaperoom', 'key': 'get', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
+search_index_entry = {'aliases': 'i inventory give inv', 'category': 'evscaperoom', 'key': 'get', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.ingame_python.commands.html b/docs/1.0-dev/api/evennia.contrib.ingame_python.commands.html
index 5de242e41b..45775a0973 100644
--- a/docs/1.0-dev/api/evennia.contrib.ingame_python.commands.html
+++ b/docs/1.0-dev/api/evennia.contrib.ingame_python.commands.html
@@ -53,7 +53,7 @@
@@ -134,7 +134,7 @@ on user permission.
-
-
search_index_entry = {'aliases': '@callback @callbacks @calls', 'category': 'building', 'key': '@call', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶
+search_index_entry = {'aliases': '@callbacks @callback @calls', 'category': 'building', 'key': '@call', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.rpsystem.html b/docs/1.0-dev/api/evennia.contrib.rpsystem.html
index 14ed4cbd10..7f70e7a2f9 100644
--- a/docs/1.0-dev/api/evennia.contrib.rpsystem.html
+++ b/docs/1.0-dev/api/evennia.contrib.rpsystem.html
@@ -637,7 +637,7 @@ a different language.
@@ -663,7 +663,7 @@ a different language.
-
-
search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', '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', '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/1.0-dev/api/evennia.contrib.turnbattle.tb_basic.html b/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_basic.html
index b37b990c26..788f04dd26 100644
--- a/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_basic.html
+++ b/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_basic.html
@@ -571,7 +571,7 @@ if there are still any actions you can take.
@@ -592,7 +592,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', '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', '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.turnbattle.tb_equip.html b/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_equip.html
index b00775ca23..9abbdd1f21 100644
--- a/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_equip.html
+++ b/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_equip.html
@@ -688,7 +688,7 @@ if there are still any actions you can take.
@@ -709,7 +709,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', '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', '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.turnbattle.tb_items.html b/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_items.html
index af23ac3668..2bec1039fa 100644
--- a/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_items.html
+++ b/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_items.html
@@ -722,7 +722,7 @@ if there are still any actions you can take.
@@ -743,7 +743,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', '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', '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.turnbattle.tb_magic.html b/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_magic.html
index 44670b1f3d..bf3a43e0a0 100644
--- a/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_magic.html
+++ b/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_magic.html
@@ -594,7 +594,7 @@ if there are still any actions you can take.
@@ -615,7 +615,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', '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', '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.turnbattle.tb_range.html b/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_range.html
index 05ecd96fb4..32d40b88d9 100644
--- a/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_range.html
+++ b/docs/1.0-dev/api/evennia.contrib.turnbattle.tb_range.html
@@ -1021,7 +1021,7 @@ if there are still any actions you can take.
@@ -1042,7 +1042,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', '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', '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.tutorial_examples.red_button.html b/docs/1.0-dev/api/evennia.contrib.tutorial_examples.red_button.html
index 550e2cb142..5a8185a0dc 100644
--- a/docs/1.0-dev/api/evennia.contrib.tutorial_examples.red_button.html
+++ b/docs/1.0-dev/api/evennia.contrib.tutorial_examples.red_button.html
@@ -80,7 +80,7 @@ such as when closing the lid and un-blinding a character.
+aliases = ['press button', 'push', 'press']¶
@@ -109,7 +109,7 @@ check if the lid is open or closed.
+search_index_entry = {'aliases': 'press button push press', 'category': 'general', 'key': 'push button', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}¶
@@ -179,7 +179,7 @@ check if the lid is open or closed.
+aliases = ['break lid', 'smash lid', 'smash']¶
@@ -206,7 +206,7 @@ break.
+search_index_entry = {'aliases': 'break lid smash lid smash', 'category': 'general', 'key': 'smash glass', '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 '}¶
@@ -306,7 +306,7 @@ be mutually exclusive.
+aliases = ['press button', 'push', 'press']¶
@@ -335,7 +335,7 @@ set in self.parse())
+search_index_entry = {'aliases': 'press button push press', 'category': 'general', 'key': 'push button', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}¶
@@ -433,7 +433,7 @@ be mutually exclusive.
+aliases = ['examine', 'ex', 'listen', 'l', 'feel', 'get']¶
@@ -459,7 +459,7 @@ be mutually exclusive.
+search_index_entry = {'aliases': 'examine ex listen l feel get', 'category': 'general', 'key': 'look', '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.tutorial_world.objects.html b/docs/1.0-dev/api/evennia.contrib.tutorial_world.objects.html
index 1289364c7e..ed5893ac5d 100644
--- a/docs/1.0-dev/api/evennia.contrib.tutorial_world.objects.html
+++ b/docs/1.0-dev/api/evennia.contrib.tutorial_world.objects.html
@@ -362,7 +362,7 @@ of the object. We overload it with our own version.
@@ -389,7 +389,7 @@ to sit on a “lightable” object, we operate only on self.obj.
-
-
search_index_entry = {'aliases': 'light burn', 'category': 'tutorialworld', 'key': 'on', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}¶
+search_index_entry = {'aliases': 'burn light', 'category': 'tutorialworld', 'key': 'on', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}¶
@@ -493,7 +493,7 @@ shift green root up/down
@@ -529,7 +529,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'move push pull shiftroot', 'category': 'tutorialworld', 'key': 'shift', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶
+search_index_entry = {'aliases': 'shiftroot move push pull', 'category': 'tutorialworld', 'key': 'shift', '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 '}¶
@@ -546,7 +546,7 @@ yellow/green - horizontal roots
-
-
aliases = ['button', 'press button', 'push button']¶
+aliases = ['press button', 'button', 'push button']¶
@@ -572,7 +572,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'button press button push button', 'category': 'tutorialworld', 'key': 'press', 'tags': '', 'text': '\n Presses a button.\n '}¶
+search_index_entry = {'aliases': 'press button button push button', 'category': 'tutorialworld', 'key': 'press', 'tags': '', 'text': '\n Presses a button.\n '}¶
@@ -716,7 +716,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
aliases = ['chop', 'defend', 'slash', 'pierce', 'kill', 'fight', 'hit', 'stab', 'parry', 'thrust', 'bash']¶
+aliases = ['stab', 'thrust', 'kill', 'pierce', 'parry', 'defend', 'chop', 'hit', 'bash', 'fight', 'slash']¶
@@ -742,7 +742,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
search_index_entry = {'aliases': 'chop defend slash pierce kill fight hit stab parry thrust bash', 'category': 'tutorialworld', 'key': 'attack', '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 thrust kill pierce parry defend chop hit bash fight slash', 'category': 'tutorialworld', 'key': 'attack', '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.tutorial_world.rooms.html b/docs/1.0-dev/api/evennia.contrib.tutorial_world.rooms.html
index ac60e1a4a3..6fe257dc6c 100644
--- a/docs/1.0-dev/api/evennia.contrib.tutorial_world.rooms.html
+++ b/docs/1.0-dev/api/evennia.contrib.tutorial_world.rooms.html
@@ -714,7 +714,7 @@ if they fall off the bridge.
@@ -740,7 +740,7 @@ if they fall off the bridge.
-
-
search_index_entry = {'aliases': '? h', 'category': 'tutorial world', 'key': 'help', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}¶
+search_index_entry = {'aliases': 'h ?', 'category': 'tutorial world', 'key': 'help', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}¶
@@ -866,7 +866,7 @@ to find something.
-
-
aliases = ['fiddle', 'feel around', 'search', 'l', 'feel']¶
+aliases = ['search', 'fiddle', 'feel around', 'l', 'feel']¶
@@ -894,7 +894,7 @@ random chance of eventually finding a light source.
-
-
search_index_entry = {'aliases': 'fiddle feel around search l feel', 'category': 'tutorialworld', 'key': 'look', '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 fiddle feel around l feel', 'category': 'tutorialworld', 'key': 'look', '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 59bba20290..87d944c824 100644
--- a/docs/1.0-dev/api/evennia.utils.eveditor.html
+++ b/docs/1.0-dev/api/evennia.utils.eveditor.html
@@ -275,7 +275,7 @@ indentation.
-
-
aliases = [':fd', ':dw', ':w', ':wq', ':q!', ':p', ':!', ':echo', ':f', ':fi', ':u', ':DD', ':', ':q', ':h', ':r', '::', ':UU', ':x', ':j', ':I', ':S', ':<', ':A', ':dd', ':>', ':uu', ':::', ':=', ':s', ':y', ':i']¶
+aliases = [':A', ':f', ':S', ':p', ':UU', '::', ':fd', ':q!', ':fi', ':q', ':uu', ':<', ':w', ':::', ':I', ':i', ':x', ':s', ':wq', ':h', ':>', ':', ':r', ':DD', ':y', ':!', ':dw', ':dd', ':j', ':=', ':u', ':echo']¶
@@ -303,7 +303,7 @@ efficient presentation.
-
-
search_index_entry = {'aliases': ':fd :dw :w :wq :q! :p :! :echo :f :fi :u :DD : :q :h :r :: :UU :x :j :I :S :< :A :dd :> :uu ::: := :s :y :i', 'category': 'general', 'key': ':editor_command_group', 'tags': '', 'text': '\n Commands for the editor\n '}¶
+search_index_entry = {'aliases': ':A :f :S :p :UU :: :fd :q! :fi :q :uu :< :w ::: :I :i :x :s :wq :h :> : :r :DD :y :! :dw :dd :j := :u :echo', 'category': 'general', 'key': ':editor_command_group', '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 14cc091c2d..cf93aa27a3 100644
--- a/docs/1.0-dev/api/evennia.utils.evmenu.html
+++ b/docs/1.0-dev/api/evennia.utils.evmenu.html
@@ -941,7 +941,7 @@ single question.
+aliases = ['n', 'yes', 'y', 'no', '__nomatch_command', 'abort', 'a']¶
@@ -967,7 +967,7 @@ single question.
+search_index_entry = {'aliases': 'n yes y no __nomatch_command abort a', 'category': 'general', 'key': '__noinput_command', '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 76ad4caf2d..461dc2380f 100644
--- a/docs/1.0-dev/api/evennia.utils.evmore.html
+++ b/docs/1.0-dev/api/evennia.utils.evmore.html
@@ -76,7 +76,7 @@ the caller.msg() construct every time the page is updated.
-
-
aliases = ['quit', 'back', 'b', 'next', 'abort', 'e', 'q', 'end', 't', 'a', 'top', 'n']¶
+aliases = ['q', 'n', 'end', 'back', 'b', 'top', 't', 'e', 'abort', 'a', 'quit', 'next']¶
@@ -102,7 +102,7 @@ the caller.msg() construct every time the page is updated.
-
-
search_index_entry = {'aliases': 'quit back b next abort e q end t a top n', 'category': 'general', 'key': '__noinput_command', 'tags': '', 'text': '\n Manipulate the text paging\n '}¶
+search_index_entry = {'aliases': 'q n end back b top t e abort a quit next', 'category': 'general', 'key': '__noinput_command', 'tags': '', 'text': '\n Manipulate the text paging\n '}¶
diff --git a/docs/1.0-dev/objects.inv b/docs/1.0-dev/objects.inv
index 46878ce1a78640026b1852b40979e2bc42cd8964..f31665e68b317f58ece2d0b2e9481c95e296a3c9 100644
GIT binary patch
delta 27878
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