From 507728d11fd907f4693f8e5a1f58580fb5f2d726 Mon Sep 17 00:00:00 2001
From: Griatch
Date: Tue, 12 Oct 2021 10:24:04 +0200
Subject: [PATCH] Updated HTML docs
---
docs/0.9.5/.buildinfo | 2 +-
docs/0.9.5/_modules/evennia/utils/evmore.html | 38 +++---
.../api/evennia.commands.default.account.html | 4 +-
...evennia.commands.default.batchprocess.html | 4 +-
.../evennia.commands.default.building.html | 8 +-
.../api/evennia.commands.default.comms.html | 8 +-
.../api/evennia.commands.default.general.html | 12 +-
.../evennia.commands.default.unloggedin.html | 16 +--
docs/0.9.5/api/evennia.contrib.chargen.html | 4 +-
.../api/evennia.contrib.email_login.html | 16 +--
.../api/evennia.contrib.extended_room.html | 4 +-
...vennia.contrib.ingame_python.commands.html | 4 +-
docs/0.9.5/api/evennia.contrib.rpsystem.html | 4 +-
....contrib.tutorial_examples.red_button.html | 16 +--
...vennia.contrib.tutorial_world.objects.html | 12 +-
.../evennia.contrib.tutorial_world.rooms.html | 12 +-
docs/0.9.5/api/evennia.utils.eveditor.html | 4 +-
docs/0.9.5/api/evennia.utils.evmenu.html | 4 +-
docs/0.9.5/api/evennia.utils.evmore.html | 54 ++++-----
docs/0.9.5/genindex.html | 18 +--
docs/0.9.5/objects.inv | Bin 71323 -> 71324 bytes
docs/0.9.5/searchindex.js | 2 +-
docs/1.0-dev/.buildinfo | 2 +-
.../1.0-dev/Howto/Evennia-for-Diku-Users.html | 22 ++--
docs/1.0-dev/Links.html | 72 +++++++-----
.../_modules/evennia/utils/evmore.html | 38 +++---
.../Howto/Evennia-for-Diku-Users.md.txt | 25 ++--
docs/1.0-dev/_sources/Links.md.txt | 110 +++++++++---------
.../api/evennia.commands.default.account.html | 4 +-
.../api/evennia.commands.default.admin.html | 4 +-
...evennia.commands.default.batchprocess.html | 4 +-
.../evennia.commands.default.building.html | 16 +--
.../api/evennia.commands.default.comms.html | 4 +-
.../api/evennia.commands.default.general.html | 12 +-
.../api/evennia.commands.default.system.html | 8 +-
.../evennia.commands.default.unloggedin.html | 16 +--
docs/1.0-dev/api/evennia.contrib.barter.html | 4 +-
docs/1.0-dev/api/evennia.contrib.chargen.html | 4 +-
.../1.0-dev/api/evennia.contrib.clothing.html | 4 +-
.../api/evennia.contrib.email_login.html | 16 +--
.../evennia.contrib.evscaperoom.commands.html | 24 ++--
.../api/evennia.contrib.extended_room.html | 4 +-
...vennia.contrib.ingame_python.commands.html | 4 +-
.../1.0-dev/api/evennia.contrib.rpsystem.html | 4 +-
.../evennia.contrib.turnbattle.tb_basic.html | 4 +-
.../evennia.contrib.turnbattle.tb_equip.html | 4 +-
.../evennia.contrib.turnbattle.tb_items.html | 4 +-
.../evennia.contrib.turnbattle.tb_magic.html | 4 +-
.../evennia.contrib.turnbattle.tb_range.html | 4 +-
....contrib.tutorial_examples.red_button.html | 4 +-
...vennia.contrib.tutorial_world.objects.html | 16 +--
.../evennia.contrib.tutorial_world.rooms.html | 12 +-
docs/1.0-dev/api/evennia.utils.eveditor.html | 4 +-
docs/1.0-dev/api/evennia.utils.evmenu.html | 4 +-
docs/1.0-dev/api/evennia.utils.evmore.html | 54 ++++-----
docs/1.0-dev/genindex.html | 18 +--
docs/1.0-dev/objects.inv | Bin 91768 -> 91770 bytes
docs/1.0-dev/searchindex.js | 2 +-
58 files changed, 393 insertions(+), 388 deletions(-)
diff --git a/docs/0.9.5/.buildinfo b/docs/0.9.5/.buildinfo
index 9fde021872..149670084b 100644
--- a/docs/0.9.5/.buildinfo
+++ b/docs/0.9.5/.buildinfo
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 247d1ca325a9615448f7b1a384ed5795
+config: 3d7497895e836f931f05f386c060eb4a
tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/0.9.5/_modules/evennia/utils/evmore.html b/docs/0.9.5/_modules/evennia/utils/evmore.html
index ae094faa3b..35325cb271 100644
--- a/docs/0.9.5/_modules/evennia/utils/evmore.html
+++ b/docs/0.9.5/_modules/evennia/utils/evmore.html
@@ -101,16 +101,16 @@
# text
_DISPLAY = """{text}
-(|wmore|n [{pageno}/{pagemax}] retur|wn|n|||wb|nack|||wt|nop|||we|nnd|||wq|nuit)"""
+(|wPage|n [{pageno}/{pagemax}] |wn|next|n || |wp|nrevious || |wt|nop || |we|nnd || |wq|nuit)"""
[docs]class CmdMore(Command):
"""
-
Manipulate the text paging
+
Manipulate the text paging. Catch no-input with aliases.
"""
key = _CMD_NOINPUT
-
aliases = ["quit", "q", "abort", "a", "next", "n", "back", "b", "top", "t", "end", "e"]
+
aliases = ["quit", "q", "abort", "a", "next", "n", "previous", "p", "top", "t", "end", "e"]
auto_help = False
[docs] def func(self):
@@ -128,7 +128,7 @@
if cmd in ("abort", "a", "q"):
more.page_quit()
-
elif cmd in ("back", "b"):
+
elif cmd in ("previous", "p"):
more.page_back()
elif cmd in ("top", "t", "look", "l"):
more.page_top()
@@ -139,26 +139,23 @@
more.page_next()
-[docs]class CmdMoreLook(Command):
+
[docs]class CmdMoreExit(Command):
"""
-
Override look to display window and prevent OOCLook from firing
+
Any non-more command will exit the pager.
+
"""
+
key = _CMD_NOMATCH
-
key = "look"
-
aliases = ["l"]
-
auto_help = False
-
-
[docs] def func(self):
+
[docs] def func(self):
"""
-
Implement the command
+
Exit pager and re-fire the failed command.
+
"""
more = self.caller.ndb._more
-
if not more and hasattr(self.caller, "account"):
-
more = self.caller.account.ndb._more
-
if not more:
-
self.caller.msg("Error in loading the pager. Contact an admin.")
-
return
-
more.display()
+
more.page_quit()
+
+
# re-fire the command (in new cmdset)
+
self.caller.execute_cmd(self.raw_string)
[docs]class CmdSetMore(CmdSet):
@@ -168,10 +165,11 @@
key = "more_commands"
priority = 110
+
mergetype = "Replace"
[docs] def at_cmdset_creation(self):
self.add(CmdMore())
-
self.add(CmdMoreLook())
+ self.add(CmdMoreExit())
# resources for handling queryset inputs
@@ -274,7 +272,7 @@
self._justify_kwargs = justify_kwargs
self.exit_on_lastpage = exit_on_lastpage
self.exit_cmd = exit_cmd
- self._exit_msg = _("Exited |wmore|n pager.")
+ self._exit_msg = _("|xExited pager.|n")
self._kwargs = kwargs
self._data = None
diff --git a/docs/0.9.5/api/evennia.commands.default.account.html b/docs/0.9.5/api/evennia.commands.default.account.html
index 1ce2343e8b..509d52926e 100644
--- a/docs/0.9.5/api/evennia.commands.default.account.html
+++ b/docs/0.9.5/api/evennia.commands.default.account.html
@@ -70,7 +70,7 @@ method. Otherwise all text will be returned to all connected sessions.
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -101,7 +101,7 @@ method. Otherwise all text will be returned to all connected sessions.
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', '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', '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/0.9.5/api/evennia.commands.default.batchprocess.html b/docs/0.9.5/api/evennia.commands.default.batchprocess.html
index b5df2d1543..865e8c6ebb 100644
--- a/docs/0.9.5/api/evennia.commands.default.batchprocess.html
+++ b/docs/0.9.5/api/evennia.commands.default.batchprocess.html
@@ -75,7 +75,7 @@ skipping, reloading etc.
-
-
aliases = ['batchcommand', 'batchcmd']
+aliases = ['batchcmd', 'batchcommand']
@@ -106,7 +106,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/0.9.5/api/evennia.commands.default.building.html b/docs/0.9.5/api/evennia.commands.default.building.html
index b6d633b5dc..8c8a5fb93d 100644
--- a/docs/0.9.5/api/evennia.commands.default.building.html
+++ b/docs/0.9.5/api/evennia.commands.default.building.html
@@ -1274,7 +1274,7 @@ server settings.
-
-
aliases = ['swap', 'typeclasses', 'type', 'parent', 'update']
+aliases = ['parent', 'update', 'typeclasses', 'type', 'swap']
@@ -1305,7 +1305,7 @@ server settings.
-
-
search_index_entry = {'aliases': 'swap typeclasses type parent update', '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 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.\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}
+search_index_entry = {'aliases': 'parent update typeclasses type swap', '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 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.\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 "}
@@ -1816,7 +1816,7 @@ given, <nr> defaults to 10.
-
-
aliases = ['listobjects', 'db', 'listobjs', 'stats']
+aliases = ['listobjects', 'db', 'stats', 'listobjs']
@@ -1842,7 +1842,7 @@ given, <nr> defaults to 10.
-
-
search_index_entry = {'aliases': 'listobjects db listobjs 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 '}
+search_index_entry = {'aliases': 'listobjects db 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 '}
diff --git a/docs/0.9.5/api/evennia.commands.default.comms.html b/docs/0.9.5/api/evennia.commands.default.comms.html
index 6b9ea64193..04986e5d13 100644
--- a/docs/0.9.5/api/evennia.commands.default.comms.html
+++ b/docs/0.9.5/api/evennia.commands.default.comms.html
@@ -193,7 +193,7 @@ ban mychannel1,mychannel2= EvilUser : Was banned for spamming.
-
-
aliases = ['channels', 'chan']
+aliases = ['chan', 'channels']
@@ -719,7 +719,7 @@ don’t actually sub to yet.
-
-
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 "}
+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 "}
@@ -744,7 +744,7 @@ aliases to an already joined channel.
-
-
aliases = ['chanalias', 'aliaschan']
+aliases = ['aliaschan', 'chanalias']
@@ -775,7 +775,7 @@ aliases to an already joined channel.
-
-
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 '}
+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 '}
diff --git a/docs/0.9.5/api/evennia.commands.default.general.html b/docs/0.9.5/api/evennia.commands.default.general.html
index 63bcf81280..133f7a90ce 100644
--- a/docs/0.9.5/api/evennia.commands.default.general.html
+++ b/docs/0.9.5/api/evennia.commands.default.general.html
@@ -112,7 +112,7 @@ look *<account&g
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -143,7 +143,7 @@ look *<account&g
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', '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', '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 '}
@@ -641,7 +641,7 @@ automatically begin with your name.
-
-
aliases = [':', 'emote']
+aliases = ['emote', ':']
@@ -677,7 +677,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 "}
@@ -700,7 +700,7 @@ which permission groups you are a member of.
-
-
aliases = ['hierarchy', 'groups']
+aliases = ['groups', 'hierarchy']
@@ -731,7 +731,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/0.9.5/api/evennia.commands.default.unloggedin.html b/docs/0.9.5/api/evennia.commands.default.unloggedin.html
index 6add3480ea..576e9cc8d2 100644
--- a/docs/0.9.5/api/evennia.commands.default.unloggedin.html
+++ b/docs/0.9.5/api/evennia.commands.default.unloggedin.html
@@ -59,7 +59,7 @@ connect “account name” “pass word”
-
-
aliases = ['co', 'con', 'conn']
+aliases = ['co', 'conn', 'con']
@@ -94,7 +94,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': 'co conn 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 '}
@@ -118,7 +118,7 @@ create “account name” “pass word”
-
-
aliases = ['cre', 'cr']
+aliases = ['cr', 'cre']
@@ -149,7 +149,7 @@ create “account name” “pass word”
-
-
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 '}
+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 '}
@@ -173,7 +173,7 @@ version is a bit more complicated.
-
-
aliases = ['qu', 'q']
+aliases = ['q', 'qu']
@@ -199,7 +199,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 '}
@@ -272,7 +272,7 @@ for simplicity. It shows a pane of info.
-
-
aliases = ['?', 'h']
+aliases = ['h', '?']
@@ -298,7 +298,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/0.9.5/api/evennia.contrib.chargen.html b/docs/0.9.5/api/evennia.contrib.chargen.html
index c21cf262b2..f331ced6de 100644
--- a/docs/0.9.5/api/evennia.contrib.chargen.html
+++ b/docs/0.9.5/api/evennia.contrib.chargen.html
@@ -77,7 +77,7 @@ at them with this command.
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -109,7 +109,7 @@ that is checked by the @ic command directly.
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'tags': '', 'text': '\n ooc look\n\n Usage:\n look\n look <character>\n\n This is an OOC version of the look command. Since an Account doesn\'t\n have an in-game existence, there is no concept of location or\n "self".\n\n If any characters are available for you to control, you may look\n at them with this command.\n '}
+search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'tags': '', 'text': '\n ooc look\n\n Usage:\n look\n look <character>\n\n This is an OOC version of the look command. Since an Account doesn\'t\n have an in-game existence, there is no concept of location or\n "self".\n\n If any characters are available for you to control, you may look\n at them with this command.\n '}
diff --git a/docs/0.9.5/api/evennia.contrib.email_login.html b/docs/0.9.5/api/evennia.contrib.email_login.html
index 47638006e5..01aa0174da 100644
--- a/docs/0.9.5/api/evennia.contrib.email_login.html
+++ b/docs/0.9.5/api/evennia.contrib.email_login.html
@@ -74,7 +74,7 @@ the module given by settings.CONNECTION_SCREEN_MODULE.
-
-
aliases = ['co', 'con', 'conn']
+aliases = ['co', 'conn', 'con']
@@ -104,7 +104,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': 'co conn 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 '}
@@ -126,7 +126,7 @@ there is no object yet before the account has logged in)
-
-
aliases = ['cre', 'cr']
+aliases = ['cr', 'cre']
@@ -162,7 +162,7 @@ name enclosed in quotes:
-
-
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 '}
+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 '}
@@ -181,7 +181,7 @@ version is a bit more complicated.
-
-
aliases = ['qu', 'q']
+aliases = ['q', 'qu']
@@ -207,7 +207,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 '}
@@ -270,7 +270,7 @@ for simplicity. It shows a pane of info.
-
-
aliases = ['?', 'h']
+aliases = ['h', '?']
@@ -296,7 +296,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/0.9.5/api/evennia.contrib.extended_room.html b/docs/0.9.5/api/evennia.contrib.extended_room.html
index 7d5a96ae54..055866f638 100644
--- a/docs/0.9.5/api/evennia.contrib.extended_room.html
+++ b/docs/0.9.5/api/evennia.contrib.extended_room.html
@@ -276,7 +276,7 @@ look *<account&g
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -296,7 +296,7 @@ look *<account&g
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', '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', '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/0.9.5/api/evennia.contrib.ingame_python.commands.html b/docs/0.9.5/api/evennia.contrib.ingame_python.commands.html
index 600768a3e3..c49e79617f 100644
--- a/docs/0.9.5/api/evennia.contrib.ingame_python.commands.html
+++ b/docs/0.9.5/api/evennia.contrib.ingame_python.commands.html
@@ -52,7 +52,7 @@
-
-
aliases = ['@callbacks', '@callback', '@calls']
+aliases = ['@calls', '@callback', '@callbacks']
@@ -133,7 +133,7 @@ on user permission.
-
-
search_index_entry = {'aliases': '@callbacks @callback @calls', 'category': 'building', 'key': '@call', 'tags': '', 'text': '\n Command to edit callbacks.\n '}
+search_index_entry = {'aliases': '@calls @callback @callbacks', 'category': 'building', 'key': '@call', 'tags': '', 'text': '\n Command to edit callbacks.\n '}
diff --git a/docs/0.9.5/api/evennia.contrib.rpsystem.html b/docs/0.9.5/api/evennia.contrib.rpsystem.html
index fe9e92d23d..4da681bb07 100644
--- a/docs/0.9.5/api/evennia.contrib.rpsystem.html
+++ b/docs/0.9.5/api/evennia.contrib.rpsystem.html
@@ -824,7 +824,7 @@ Using the command without arguments will list all current recogs.
-
-
aliases = ['recognize', 'forget']
+aliases = ['forget', 'recognize']
@@ -851,7 +851,7 @@ Using the command without arguments will list all current recogs.
-
-
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 '}
+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 '}
diff --git a/docs/0.9.5/api/evennia.contrib.tutorial_examples.red_button.html b/docs/0.9.5/api/evennia.contrib.tutorial_examples.red_button.html
index c58dcd7692..e14e3cd2ec 100644
--- a/docs/0.9.5/api/evennia.contrib.tutorial_examples.red_button.html
+++ b/docs/0.9.5/api/evennia.contrib.tutorial_examples.red_button.html
@@ -79,7 +79,7 @@ such as when closing the lid and un-blinding a character.
-
-
aliases = ['push', 'press button', 'press']
+aliases = ['press', 'press button', 'push']
@@ -108,7 +108,7 @@ check if the lid is open or closed.
-
-
search_index_entry = {'aliases': 'push press button press', 'category': 'general', 'key': 'push button', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}
+search_index_entry = {'aliases': 'press press button push', 'category': 'general', 'key': 'push button', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}
@@ -178,7 +178,7 @@ check if the lid is open or closed.
-
-
aliases = ['smash', 'break lid', 'smash lid']
+aliases = ['smash lid', 'break lid', 'smash']
@@ -205,7 +205,7 @@ break.
-
-
search_index_entry = {'aliases': 'smash break lid smash lid', '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 '}
+search_index_entry = {'aliases': 'smash lid break 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 '}
@@ -305,7 +305,7 @@ be mutually exclusive.
-
-
aliases = ['push', 'press button', 'press']
+aliases = ['press', 'press button', 'push']
@@ -334,7 +334,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'push press button press', 'category': 'general', 'key': 'push button', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}
+search_index_entry = {'aliases': 'press press button push', 'category': 'general', 'key': 'push button', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}
@@ -432,7 +432,7 @@ be mutually exclusive.
-
-
aliases = ['ex', 'listen', 'feel', 'get', 'l', 'examine']
+aliases = ['feel', 'ex', 'listen', 'examine', 'l', 'get']
@@ -458,7 +458,7 @@ be mutually exclusive.
-
-
search_index_entry = {'aliases': 'ex listen feel get l examine', '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 "}
+search_index_entry = {'aliases': 'feel ex listen examine l 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/0.9.5/api/evennia.contrib.tutorial_world.objects.html b/docs/0.9.5/api/evennia.contrib.tutorial_world.objects.html
index 58f288f4af..2ff92ed849 100644
--- a/docs/0.9.5/api/evennia.contrib.tutorial_world.objects.html
+++ b/docs/0.9.5/api/evennia.contrib.tutorial_world.objects.html
@@ -361,7 +361,7 @@ of the object. We overload it with our own version.
-
-
aliases = ['light', 'burn']
+aliases = ['burn', 'light']
@@ -388,7 +388,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 '}
@@ -492,7 +492,7 @@ shift green root up/down
-
-
aliases = ['push', 'shiftroot', 'pull', 'move']
+aliases = ['shiftroot', 'pull', 'move', 'push']
@@ -528,7 +528,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'push shiftroot pull move', '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 pull move push', '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 '}
@@ -715,7 +715,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
aliases = ['pierce', 'parry', 'bash', 'thrust', 'chop', 'fight', 'defend', 'kill', 'hit', 'stab', 'slash']
+aliases = ['pierce', 'bash', 'slash', 'parry', 'thrust', 'hit', 'defend', 'stab', 'kill', 'fight', 'chop']
@@ -741,7 +741,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
search_index_entry = {'aliases': 'pierce parry bash thrust chop fight defend kill hit stab 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 '}
+search_index_entry = {'aliases': 'pierce bash slash parry thrust hit defend stab kill fight 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 '}
diff --git a/docs/0.9.5/api/evennia.contrib.tutorial_world.rooms.html b/docs/0.9.5/api/evennia.contrib.tutorial_world.rooms.html
index 189ef0e33b..e253a4af2d 100644
--- a/docs/0.9.5/api/evennia.contrib.tutorial_world.rooms.html
+++ b/docs/0.9.5/api/evennia.contrib.tutorial_world.rooms.html
@@ -184,7 +184,7 @@ code except for adding in the details.
-
-
aliases = ['l', 'ls']
+aliases = ['ls', 'l']
@@ -199,7 +199,7 @@ code except for adding in the details.
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'tutorialworld', 'key': 'look', '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', '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 '}
@@ -713,7 +713,7 @@ if they fall off the bridge.
-
-
aliases = ['?', 'h']
+aliases = ['h', '?']
@@ -739,7 +739,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 '}
@@ -865,7 +865,7 @@ to find something.
-
-
aliases = ['feel around', 'feel', 'fiddle', 'l', 'search']
+aliases = ['feel', 'feel around', 'search', 'fiddle', 'l']
@@ -893,7 +893,7 @@ random chance of eventually finding a light source.
-
-
search_index_entry = {'aliases': 'feel around feel fiddle l 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 '}
+search_index_entry = {'aliases': 'feel feel around search fiddle l', '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/0.9.5/api/evennia.utils.eveditor.html b/docs/0.9.5/api/evennia.utils.eveditor.html
index 9b85fc9537..a14d618b7a 100644
--- a/docs/0.9.5/api/evennia.utils.eveditor.html
+++ b/docs/0.9.5/api/evennia.utils.eveditor.html
@@ -274,7 +274,7 @@ indentation.
-
-
aliases = [':dw', ':r', ':!', ':fd', ':=', ':w', ':i', ':p', ':A', ':wq', ':q', ':echo', ':', ':fi', '::', ':>', ':DD', ':S', ':q!', ':I', ':j', ':<', ':u', ':y', ':uu', ':f', ':h', ':s', ':::', ':UU', ':x', ':dd']
+aliases = [':S', ':f', ':fi', ':s', ':uu', ':u', ':q!', ':x', ':UU', ':wq', ':p', ':r', ':fd', ':!', ':dd', ':>', ':j', ':=', '::', ':w', ':h', ':', ':echo', ':<', ':i', ':A', ':I', ':::', ':dw', ':DD', ':y', ':q']
@@ -302,7 +302,7 @@ efficient presentation.
-
-
search_index_entry = {'aliases': ':dw :r :! :fd := :w :i :p :A :wq :q :echo : :fi :: :> :DD :S :q! :I :j :< :u :y :uu :f :h :s ::: :UU :x :dd', 'category': 'general', 'key': ':editor_command_group', 'tags': '', 'text': '\n Commands for the editor\n '}
+search_index_entry = {'aliases': ':S :f :fi :s :uu :u :q! :x :UU :wq :p :r :fd :! :dd :> :j := :: :w :h : :echo :< :i :A :I ::: :dw :DD :y :q', 'category': 'general', 'key': ':editor_command_group', 'tags': '', 'text': '\n Commands for the editor\n '}
diff --git a/docs/0.9.5/api/evennia.utils.evmenu.html b/docs/0.9.5/api/evennia.utils.evmenu.html
index 13229c5b56..52be005dda 100644
--- a/docs/0.9.5/api/evennia.utils.evmenu.html
+++ b/docs/0.9.5/api/evennia.utils.evmenu.html
@@ -940,7 +940,7 @@ single question.
+aliases = ['no', 'abort', 'yes', 'a', 'n', 'y', '__nomatch_command']
@@ -966,7 +966,7 @@ single question.
+search_index_entry = {'aliases': 'no abort yes a n y __nomatch_command', '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/0.9.5/api/evennia.utils.evmore.html b/docs/0.9.5/api/evennia.utils.evmore.html
index 972469d411..b28ee33574 100644
--- a/docs/0.9.5/api/evennia.utils.evmore.html
+++ b/docs/0.9.5/api/evennia.utils.evmore.html
@@ -67,7 +67,7 @@ the caller.msg() construct every time the page is updated.
class evennia.utils.evmore.CmdMore(**kwargs)[source]
Bases: evennia.commands.command.Command
-Manipulate the text paging
+Manipulate the text paging. Catch no-input with aliases.
-
key = '__noinput_command'
@@ -75,7 +75,7 @@ the caller.msg() construct every time the page is updated.
-
-
aliases = ['top', 'a', 'next', 'b', 'end', 'e', 'abort', 'n', 'back', 'q', 't', 'quit']
+aliases = ['t', 'quit', 'e', 'abort', 'end', 'top', 'next', 'a', 'q', 'p', 'n', 'previous']
@@ -101,50 +101,45 @@ the caller.msg() construct every time the page is updated.
-
-
search_index_entry = {'aliases': 'top a next b end e abort n back q t quit', 'category': 'general', 'key': '__noinput_command', 'tags': '', 'text': '\n Manipulate the text paging\n '}
+search_index_entry = {'aliases': 't quit e abort end top next a q p n previous', 'category': 'general', 'key': '__noinput_command', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}
--
-class
evennia.utils.evmore.CmdMoreLook(**kwargs)[source]
+-
+class
evennia.utils.evmore.CmdMoreExit(**kwargs)[source]
Bases: evennia.commands.command.Command
-Override look to display window and prevent OOCLook from firing
+Any non-more command will exit the pager.
--
-
key = 'look'
-
-
-
--
-
aliases = ['l']
-
-
-
--
-
auto_help = False
+-
+
key = '__nomatch_command'
--
-
func()[source]
-Implement the command
+-
+
func()[source]
+Exit pager and re-fire the failed command.
--
-
help_category = 'general'
+-
+
aliases = []
--
-
lock_storage = 'cmd:all();'
+-
+
help_category = 'general'
--
-
search_index_entry = {'aliases': 'l', 'category': 'general', 'key': 'look', 'tags': '', 'text': '\n Override look to display window and prevent OOCLook from firing\n '}
+-
+
lock_storage = 'cmd:all();'
+
+
+
+-
+
search_index_entry = {'aliases': '', 'category': 'general', 'key': '__nomatch_command', 'tags': '', 'text': '\n Any non-more command will exit the pager.\n\n '}
@@ -164,6 +159,11 @@ the caller.msg() construct every time the page is updated.
priority = 110
+
+-
+
mergetype = 'Replace'
+
+
-
at_cmdset_creation()[source]
diff --git a/docs/0.9.5/genindex.html b/docs/0.9.5/genindex.html
index 6a708e0db4..9bbde951ce 100644
--- a/docs/0.9.5/genindex.html
+++ b/docs/0.9.5/genindex.html
@@ -982,7 +982,7 @@
(evennia.utils.evmore.CmdMore attribute)
- (evennia.utils.evmore.CmdMoreLook attribute)
+ (evennia.utils.evmore.CmdMoreExit attribute)
AliasHandler (class in evennia.typeclasses.tags)
@@ -1909,8 +1909,6 @@
auto_help_display_key (evennia.utils.evmenu.CmdEvMenuNode attribute)
@@ -2639,7 +2637,7 @@
CmdMore (class in evennia.utils.evmore)
- CmdMoreLook (class in evennia.utils.evmore)
+ CmdMoreExit (class in evennia.utils.evmore)
CmdMultiDesc (class in evennia.contrib.multidescer)
@@ -6072,7 +6070,7 @@
(evennia.utils.evmore.CmdMore method)
- (evennia.utils.evmore.CmdMoreLook method)
+ (evennia.utils.evmore.CmdMoreExit method)
@@ -7102,7 +7100,7 @@
(evennia.utils.evmore.CmdMore attribute)
- (evennia.utils.evmore.CmdMoreLook attribute)
+ (evennia.utils.evmore.CmdMoreExit attribute)
@@ -8046,7 +8044,7 @@
(evennia.utils.evmore.CmdMore attribute)
- (evennia.utils.evmore.CmdMoreLook attribute)
+ (evennia.utils.evmore.CmdMoreExit attribute)
(evennia.utils.evmore.CmdSetMore attribute)
@@ -8668,7 +8666,7 @@
(evennia.utils.evmore.CmdMore attribute)
- (evennia.utils.evmore.CmdMoreLook attribute)
+ (evennia.utils.evmore.CmdMoreExit attribute)
@@ -9211,6 +9209,8 @@
(evennia.utils.evmenu.InputCmdSet attribute)
(evennia.utils.evmenu.YesNoQuestionCmdSet attribute)
+
+ (evennia.utils.evmore.CmdSetMore attribute)
message() (evennia.comms.models.Msg property)
@@ -11839,7 +11839,7 @@
(evennia.utils.evmore.CmdMore attribute)
- (evennia.utils.evmore.CmdMoreLook attribute)
+ (evennia.utils.evmore.CmdMoreExit attribute)
search_index_entry() (evennia.help.models.HelpEntry property)
diff --git a/docs/0.9.5/objects.inv b/docs/0.9.5/objects.inv
index da2675f8966a4ce3253b03239325887be7a11553..6ebad18246fdf743067079bd45c9f4b45b19a814 100644
GIT binary patch
delta 40041
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