From cef1cec0983afc01c0f08695ae061ff8e8fcdc87 Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action __unloggedin_look_command [l, look] (cmdset: UnloggedinCmdSet, help-category: General) about [version] (cmdset: CharacterCmdSet, help-category: System) access [hierarchy, groups] (cmdset: CharacterCmdSet, help-category: General) access [groups, hierarchy] (cmdset: CharacterCmdSet, help-category: General) accounts [account, listaccounts] (cmdset: CharacterCmdSet, help-category: System) addcom [aliaschan, chanalias] (cmdset: AccountCmdSet, help-category: Comms) alias [setobjalias] (cmdset: CharacterCmdSet, help-category: Building)
cdestroy (cmdset: AccountCmdSet, help-category: Comms)
cemit [cmsg] (cmdset: AccountCmdSet, help-category: Comms)
channels [clist, comlist, all channels, channellist, chanlist] (cmdset: AccountCmdSet, help-category: Comms)
channels [channellist, clist, chanlist, comlist, all channels] (cmdset: AccountCmdSet, help-category: Comms)
charcreate (cmdset: AccountCmdSet, help-category: General)
chardelete (cmdset: AccountCmdSet, help-category: General)
clock (cmdset: AccountCmdSet, help-category: Comms)
cmdsets [listcmsets] (cmdset: CharacterCmdSet, help-category: Building)
color (cmdset: AccountCmdSet, help-category: General)
connect [conn, co, con] (cmdset: UnloggedinCmdSet, help-category: General)
connect [con, conn, co] (cmdset: UnloggedinCmdSet, help-category: General)
copy (cmdset: CharacterCmdSet, help-category: Building)
cpattr (cmdset: CharacterCmdSet, help-category: Building)
create (cmdset: CharacterCmdSet, help-category: Building)
create [cre, cr] (cmdset: UnloggedinCmdSet, help-category: General)
create [cr, cre] (cmdset: UnloggedinCmdSet, help-category: General)
cwho (cmdset: AccountCmdSet, help-category: Comms)
delcom [delaliaschan, delchanalias] (cmdset: AccountCmdSet, help-category: Comms)
delcom [delchanalias, delaliaschan] (cmdset: AccountCmdSet, help-category: Comms)
desc [describe] (cmdset: CharacterCmdSet, help-category: Building)
destroy [del, delete] (cmdset: CharacterCmdSet, help-category: Building)
destroy [delete, del] (cmdset: CharacterCmdSet, help-category: Building)
dig (cmdset: CharacterCmdSet, help-category: Building)
drop (cmdset: CharacterCmdSet, help-category: General)
encoding [encode] (cmdset: UnloggedinCmdSet, help-category: General)
examine [ex, exam] (cmdset: AccountCmdSet, help-category: Building)
examine [exam, ex] (cmdset: AccountCmdSet, help-category: Building)
find [locate, search] (cmdset: CharacterCmdSet, help-category: Building)
get [grab] (cmdset: CharacterCmdSet, help-category: General)
give (cmdset: CharacterCmdSet, help-category: General)
mvattr (cmdset: CharacterCmdSet, help-category: Building)
name [rename] (cmdset: CharacterCmdSet, help-category: Building)
nick [nicks, nickname] (cmdset: AccountCmdSet, help-category: General)
nick [nickname, nicks] (cmdset: AccountCmdSet, help-category: General)
objects [stats, db, listobjects, listobjs] (cmdset: CharacterCmdSet, help-category: System)
ooc [unpuppet] (cmdset: AccountCmdSet, help-category: General)
open (cmdset: CharacterCmdSet, help-category: Building)
quell [unquell] (cmdset: AccountCmdSet, help-category: General)
quit (cmdset: AccountCmdSet, help-category: General)
quit [qu, q] (cmdset: UnloggedinCmdSet, help-category: General)
quit [q, qu] (cmdset: UnloggedinCmdSet, help-category: General)
reload [restart] (cmdset: AccountCmdSet, help-category: System)
reset [reboot] (cmdset: AccountCmdSet, help-category: System)
rss2chan (cmdset: AccountCmdSet, help-category: Comms)
aliases = ['del', 'delete']¶aliases = ['delete', 'del']¶
aliases = ['ex', 'exam']¶aliases = ['exam', 'ex']¶
aliases = ['delaliaschan', 'delchanalias']¶aliases = ['delchanalias', 'delaliaschan']¶
aliases = ['clist', 'comlist', 'all channels', 'channellist', 'chanlist']¶aliases = ['channellist', 'clist', 'chanlist', 'comlist', 'all channels']¶
aliases = ['nicks', 'nickname']¶aliases = ['nickname', 'nicks']¶
aliases = ['hierarchy', 'groups']¶aliases = ['groups', 'hierarchy']¶
aliases = ['conn', 'co', 'con']¶aliases = ['con', 'conn', 'co']¶
aliases = ['cre', 'cr']¶aliases = ['cr', 'cre']¶
aliases = ['qu', 'q']¶aliases = ['q', 'qu']¶
aliases = ['conn', 'co', 'con']¶aliases = ['con', 'conn', 'co']¶
aliases = ['cre', 'cr']¶aliases = ['cr', 'cre']¶
aliases = ['qu', 'q']¶aliases = ['q', 'qu']¶
aliases = ['@calls', '@callbacks', '@callback']¶aliases = ['@callbacks', '@callback', '@calls']¶
aliases = ['press', 'press button', 'push']¶
aliases = ['break lid', 'smash lid', 'smash']¶
aliases = ['open', 'open button']¶
aliases = ['feel', 'l', 'ex', 'examine', 'listen', 'get']¶
aliases = ['burn', 'light']¶aliases = ['light', 'burn']¶
aliases = ['push', 'move', 'shiftroot', 'pull']¶aliases = ['move', 'pull', 'push', 'shiftroot']¶
aliases = ['push button', 'press button', 'button']¶aliases = ['press button', 'button', 'push button']¶
aliases = ['pierce', 'bash', 'fight', 'chop', 'parry', 'thrust', 'stab', 'kill', 'defend', 'hit', 'slash']¶aliases = ['stab', 'chop', 'parry', 'kill', 'thrust', 'bash', 'fight', 'hit', 'slash', 'defend', 'pierce']¶
aliases = ['search', 'fiddle', 'feel around', 'l', 'feel']¶aliases = ['feel', 'search', 'l', 'feel around', 'fiddle']¶
aliases = [':dw', ':y', ':q!', ':UU', ':::', ':p', ':S', ':!', ':fd', ':<', ':=', ':uu', ':echo', ':q', ':i', '::', ':h', ':wq', ':I', ':x', ':fi', ':r', ':>', ':u', ':s', ':A', ':w', ':DD', ':', ':j', ':f', ':dd']¶aliases = [':I', ':=', ':fd', ':x', ':w', ':q', ':DD', ':<', ':', ':i', ':dd', ':A', ':uu', ':q!', ':!', ':h', ':dw', '::', ':UU', ':f', ':j', ':r', ':u', ':echo', ':p', ':>', ':::', ':y', ':S', ':fi', ':s', ':wq']¶
aliases = ['end', 'a', 'b', 'top', 'next', 'abort', 'q', 'n', 'back', 'e', 'quit', 't']¶aliases = ['abort', 'next', 'a', 'quit', 't', 'q', 'b', 'back', 'end', 'n', 'top', 'e']¶
The Cooldown contrib is a ready-made solution for +command cooldowns you can use. It implements a handler on the object to +conveniently manage and store the cooldowns in a similar manner exemplified in +this tutorial.
+This little recipe will limit how often a particular command can be run. Since @@ -122,78 +134,127 @@ instance will remember things you store on it. So just store the current time of execution! Next time the command is run, it just needs to check if it has that time stored, and compare it with the current time to see if a desired delay has passed.
-import time
+# in, say, mygame/commands/spells.py
+
+import time
from evennia import default_cmds
-
+
class CmdSpellFirestorm(default_cmds.MuxCommand):
"""
Spell - Firestorm
- Usage:
+ Usage:
cast firestorm <target>
-
- This will unleash a storm of flame. You can only release one
- firestorm every five minutes (assuming you have the mana).
+
+ This will unleash a storm of flame. You can only release one
+ firestorm every five minutes (assuming you have the mana).
"""
key = "cast firestorm"
- locks = "cmd:isFireMage()"
-
+ rate_of_fire = 60 * 2 # 2 minutes
+
def func(self):
"Implement the spell"
-
- # check cooldown (5 minute cooldown)
- now = time.time()
- if hasattr(self, "lastcast") and \
- now - self.lastcast < 5 * 60:
+
+ now = time.time()
+ last_cast = caller.ndb.firestorm_last_cast # could be None
+ if last_cast and (now - last_cast < self.rate_of_fire):
message = "You cannot cast this spell again yet."
self.caller.msg(message)
- return
-
- #[the spell effect is implemented]
-
+ return
+
+ # [the spell effect is implemented]
+
# if the spell was successfully cast, store the casting time
- self.lastcast = now
+ self.caller.ndb.firestorm_last_cast = now
-We just check the lastcast flag, and update it if everything works out.
-Simple and very effective since everything is just stored in memory. The
+
We specify rate_of_fire and then just check for a NAtrribute
+firestorm_last_cast and update it if everything works out.
+Simple and very effective since everything is just stored in memory. The
drawback of this simple scheme is that it’s non-persistent. If you do
-@reload, the cache is cleaned and all such ongoing cooldowns will be
-forgotten. It is also limited only to this one command, other commands cannot
-(easily) check for this value.
+reload, the cache is cleaned and all such ongoing cooldowns will be
+forgotten.
Persistent cooldown¶
-This is essentially the same mechanism as the simple one above, except we use
-the database to store the information which means the cooldown will survive a
-server reload/reboot. Since commands themselves have no representation in the
-database, you need to use the caster for the storage.
- # inside the func() of CmdSpellFirestorm as above
+To make a cooldown persistent (so it survives a server reload), just
+use the same technique, but use Attributes (that is, .db instead
+of .ndb storage to save the last-cast time.
+
+
+Make a cooldown-aware command parent¶
+If you have many different spells or other commands with cooldowns, you don’t
+want to have to add this code every time. Instead you can make a “cooldown
+command mixin” class. A mixin is a class that you can ‘add’ to another class
+(via multiple inheritance) to give it some special ability. Here’s an example
+with persistent storage:
+# in, for example, mygame/commands/mixins.py
- # check cooldown (5 minute cooldown)
-
- now = time.time()
- lastcast = self.caller.db.firestorm_lastcast
-
- if lastcast and now - lastcast < 5 * 60:
- message = "You need to wait before casting this spell again."
- self.caller.msg(message)
- return
-
- #[the spell effect is implemented]
-
- # if the spell was successfully cast, store the casting time
- self.caller.db.firestorm_lastcast = now
+import time
+
+class CooldownCommandMixin:
+
+ rate_of_fire = 60
+ cooldown_storage_key = "last_used"
+ cooldown_storage_category = "cmd_cooldowns"
+
+ def check_cooldown(self):
+ last_time = self.caller.attributes.get(
+ key=self.cooldown_storage_key,
+ category=self.cooldown_storage_category)
+ )
+ return (time.time() - last_time) < self.rate_of_fire
+
+ def update_cooldown(self):
+ self.caller.attribute.add(
+ key=self.cooldown_storage_key,
+ value=time.time(),
+ category=self.cooldown_storage_category
+
+ )
-Since we are storing as an Attribute, we need to identify the
-variable as firestorm_lastcast so we are sure we get the right one (we’ll
-likely have other skills with cooldowns after all). But this method of
-using cooldowns also has the advantage of working between commands - you can
-for example let all fire-related spells check the same cooldown to make sure
-the casting of Firestorm blocks all fire-related spells for a while. Or, in
-the case of taking that big swing with the sword, this could now block all
-other types of attacks for a while before the warrior can recover.
+This is meant to be mixed into a Command, so we assume self.caller exists.
+We allow for setting what Attribute key/category to use to store the cooldown.
+It also uses an Attribute-category to make sure what it stores is not mixed up
+with other Attributes on the caller.
+Here’s how it’s used:
+# in, say, mygame/commands/spells.py
+
+from evennia import default_cmds
+from .mixins import CooldownCommandMixin
+
+
+class CmdSpellFirestorm(
+ CooldownCommandMixin, default_cmds.MuxCommand):
+ key = "cast firestorm"
+
+ cooldown_storage_key = "firestorm_last_cast"
+ rate_of_fire = 60 * 2
+
+ def func(self):
+
+ if not self.check_cooldown():
+ self.caller.msg("You cannot cast this spell again yet.")
+ return
+
+ # [the spell effect happens]
+
+ self.update_cooldown()
+
+
+
+So the same as before, we have just hidden away the cooldown checks and you can
+reuse this mixin for all your cooldowns.
+
+Command crossover¶
+This example of cooldown-checking also works between commands. For example,
+you can have all fire-related spells store the cooldown with the same
+cooldown_storage_key (like fire_spell_last_used). That would mean casting
+of Firestorm would block all other fire-related spells for a while.
+Similarly, when you take that that big sword swing, other types of attacks could
+be blocked before you can recover your balance.
+
diff --git a/docs/1.0-dev/_sources/Howtos/Command-Cooldown.md.txt b/docs/1.0-dev/_sources/Howtos/Command-Cooldown.md.txt
index 6310acaa9a..d7c6263fb8 100644
--- a/docs/1.0-dev/_sources/Howtos/Command-Cooldown.md.txt
+++ b/docs/1.0-dev/_sources/Howtos/Command-Cooldown.md.txt
@@ -1,16 +1,22 @@
# Command Cooldown
-
Some types of games want to limit how often a command can be run. If a
character casts the spell *Firestorm*, you might not want them to spam that
command over and over. Or in an advanced combat system, a massive swing may
offer a chance of lots of damage at the cost of not being able to re-do it for
-a while. Such effects are called *cooldowns*.
+a while. Such effects are called *cooldowns*.
This page exemplifies a very resource-efficient way to do cooldowns. A more
'active' way is to use asynchronous delays as in the [command duration
tutorial](./Command-Duration.md#blocking-commands), the two might be useful to
-combine if you want to echo some message to the user after the cooldown ends.
+combine if you want to echo some message to the user after the cooldown ends.
+
+## The Cooldown Contrib
+
+The [Cooldown contrib](../Contribs/Contrib-Cooldowns.md) is a ready-made solution for
+command cooldowns you can use. It implements a _handler_ on the object to
+conveniently manage and store the cooldowns in a similar manner exemplified in
+this tutorial.
## Non-persistent cooldown
@@ -19,80 +25,135 @@ Commands are class instances, and those are cached in memory, a command
instance will remember things you store on it. So just store the current time
of execution! Next time the command is run, it just needs to check if it has
that time stored, and compare it with the current time to see if a desired
-delay has passed.
+delay has passed.
```python
-import time
+# in, say, mygame/commands/spells.py
+
+import time
from evennia import default_cmds
-
+
class CmdSpellFirestorm(default_cmds.MuxCommand):
"""
Spell - Firestorm
- Usage:
+ Usage:
cast firestorm
-
- This will unleash a storm of flame. You can only release one
- firestorm every five minutes (assuming you have the mana).
+
+ This will unleash a storm of flame. You can only release one
+ firestorm every five minutes (assuming you have the mana).
"""
key = "cast firestorm"
- locks = "cmd:isFireMage()"
-
+ rate_of_fire = 60 * 2 # 2 minutes
+
def func(self):
"Implement the spell"
-
- # check cooldown (5 minute cooldown)
- now = time.time()
- if hasattr(self, "lastcast") and \
- now - self.lastcast < 5 * 60:
+
+ now = time.time()
+ last_cast = caller.ndb.firestorm_last_cast # could be None
+ if last_cast and (now - last_cast < self.rate_of_fire):
message = "You cannot cast this spell again yet."
self.caller.msg(message)
- return
-
- #[the spell effect is implemented]
-
+ return
+
+ # [the spell effect is implemented]
+
# if the spell was successfully cast, store the casting time
- self.lastcast = now
+ self.caller.ndb.firestorm_last_cast = now
```
-We just check the `lastcast` flag, and update it if everything works out.
+We specify `rate_of_fire` and then just check for a NAtrribute
+`firestorm_last_cast` and update it if everything works out.
+
Simple and very effective since everything is just stored in memory. The
drawback of this simple scheme is that it's non-persistent. If you do
-`@reload`, the cache is cleaned and all such ongoing cooldowns will be
-forgotten. It is also limited only to this one command, other commands cannot
-(easily) check for this value.
+`reload`, the cache is cleaned and all such ongoing cooldowns will be
+forgotten.
## Persistent cooldown
-This is essentially the same mechanism as the simple one above, except we use
-the database to store the information which means the cooldown will survive a
-server reload/reboot. Since commands themselves have no representation in the
-database, you need to use the caster for the storage.
+To make a cooldown _persistent_ (so it survives a server reload), just
+use the same technique, but use [Attributes](../Components/Attributes.md) (that is, `.db` instead
+of `.ndb` storage to save the last-cast time.
+
+## Make a cooldown-aware command parent
+
+If you have many different spells or other commands with cooldowns, you don't
+want to have to add this code every time. Instead you can make a "cooldown
+command mixin" class. A _mixin_ is a class that you can 'add' to another class
+(via multiple inheritance) to give it some special ability. Here's an example
+with persistent storage:
```python
- # inside the func() of CmdSpellFirestorm as above
+# in, for example, mygame/commands/mixins.py
- # check cooldown (5 minute cooldown)
-
- now = time.time()
- lastcast = self.caller.db.firestorm_lastcast
-
- if lastcast and now - lastcast < 5 * 60:
- message = "You need to wait before casting this spell again."
- self.caller.msg(message)
- return
-
- #[the spell effect is implemented]
-
- # if the spell was successfully cast, store the casting time
- self.caller.db.firestorm_lastcast = now
+import time
+
+class CooldownCommandMixin:
+
+ rate_of_fire = 60
+ cooldown_storage_key = "last_used"
+ cooldown_storage_category = "cmd_cooldowns"
+
+ def check_cooldown(self):
+ last_time = self.caller.attributes.get(
+ key=self.cooldown_storage_key,
+ category=self.cooldown_storage_category)
+ )
+ return (time.time() - last_time) < self.rate_of_fire
+
+ def update_cooldown(self):
+ self.caller.attribute.add(
+ key=self.cooldown_storage_key,
+ value=time.time(),
+ category=self.cooldown_storage_category
+
+ )
```
-Since we are storing as an [Attribute](../Components/Attributes.md), we need to identify the
-variable as `firestorm_lastcast` so we are sure we get the right one (we'll
- likely have other skills with cooldowns after all). But this method of
-using cooldowns also has the advantage of working *between* commands - you can
-for example let all fire-related spells check the same cooldown to make sure
-the casting of *Firestorm* blocks all fire-related spells for a while. Or, in
-the case of taking that big swing with the sword, this could now block all
-other types of attacks for a while before the warrior can recover.
\ No newline at end of file
+This is meant to be mixed into a Command, so we assume `self.caller` exists.
+We allow for setting what Attribute key/category to use to store the cooldown.
+
+It also uses an Attribute-category to make sure what it stores is not mixed up
+with other Attributes on the caller.
+
+Here's how it's used:
+
+```python
+# in, say, mygame/commands/spells.py
+
+from evennia import default_cmds
+from .mixins import CooldownCommandMixin
+
+
+class CmdSpellFirestorm(
+ CooldownCommandMixin, default_cmds.MuxCommand):
+ key = "cast firestorm"
+
+ cooldown_storage_key = "firestorm_last_cast"
+ rate_of_fire = 60 * 2
+
+ def func(self):
+
+ if not self.check_cooldown():
+ self.caller.msg("You cannot cast this spell again yet.")
+ return
+
+ # [the spell effect happens]
+
+ self.update_cooldown()
+
+```
+
+So the same as before, we have just hidden away the cooldown checks and you can
+reuse this mixin for all your cooldowns.
+
+### Command crossover
+
+This example of cooldown-checking also works *between* commands. For example,
+you can have all fire-related spells store the cooldown with the same
+`cooldown_storage_key` (like `fire_spell_last_used`). That would mean casting
+of *Firestorm* would block all other fire-related spells for a while.
+
+Similarly, when you take that that big sword swing, other types of attacks could
+be blocked before you can recover your balance.
diff --git a/docs/1.0-dev/api/evennia.commands.default.account.html b/docs/1.0-dev/api/evennia.commands.default.account.html
index bad7f25c6e..af7a700db7 100644
--- a/docs/1.0-dev/api/evennia.commands.default.account.html
+++ b/docs/1.0-dev/api/evennia.commands.default.account.html
@@ -131,7 +131,7 @@ method. Otherwise all text will be returned to all connected sessions.
@@ -162,7 +162,7 @@ method. Otherwise all text will be returned to all connected sessions.
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look while out-of-character\n\n Usage:\n look\n\n Look in the ooc state.\n '}¶
+search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look while out-of-character\n\n Usage:\n look\n\n Look in the ooc state.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.commands.default.admin.html b/docs/1.0-dev/api/evennia.commands.default.admin.html
index 28ce07f999..eda4dad129 100644
--- a/docs/1.0-dev/api/evennia.commands.default.admin.html
+++ b/docs/1.0-dev/api/evennia.commands.default.admin.html
@@ -315,7 +315,7 @@ to accounts respectively.
@@ -346,7 +346,7 @@ to accounts respectively.
-
-
search_index_entry = {'aliases': 'remit pemit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' remit pemit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}¶
+search_index_entry = {'aliases': 'pemit remit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' pemit remit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}¶
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 7646248924..11819aa6f3 100644
--- a/docs/1.0-dev/api/evennia.commands.default.building.html
+++ b/docs/1.0-dev/api/evennia.commands.default.building.html
@@ -590,7 +590,7 @@ You can specify the /force switch to bypass this confirmation.
@@ -631,7 +631,7 @@ You can specify the /force switch to bypass this confirmation.
-
-
search_index_entry = {'aliases': '@del @delete', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy del delete', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}¶
+search_index_entry = {'aliases': '@delete @del', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy delete del', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}¶
@@ -1343,7 +1343,7 @@ server settings.
-
-
aliases = ['@typeclasses', '@update', '@type', '@swap', '@parent']¶
+aliases = ['@swap', '@type', '@parent', '@update', '@typeclasses']¶
@@ -1374,7 +1374,7 @@ server settings.
-
-
search_index_entry = {'aliases': '@typeclasses @update @type @swap @parent', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass typeclasses update type swap parent', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶
+search_index_entry = {'aliases': '@swap @type @parent @update @typeclasses', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass swap type parent update typeclasses', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶
@@ -1529,7 +1529,7 @@ If object is not specified, the current location is examined.
@@ -1797,7 +1797,7 @@ the cases, see the module doc.
-
-
search_index_entry = {'aliases': '@ex @exam', 'category': 'building', 'key': '@examine', 'no_prefix': 'examine ex exam', 'tags': '', 'text': '\n get detailed information about an object\n\n Usage:\n examine [<object>[/attrname]]\n examine [*<account>[/attrname]]\n\n Switch:\n account - examine an Account (same as adding *)\n object - examine an Object (useful when OOC)\n script - examine a Script\n channel - examine a Channel\n\n The examine command shows detailed game info about an\n object and optionally a specific attribute on it.\n If object is not specified, the current location is examined.\n\n Append a * before the search string to examine an account.\n\n '}¶
+search_index_entry = {'aliases': '@exam @ex', 'category': 'building', 'key': '@examine', 'no_prefix': 'examine exam ex', 'tags': '', 'text': '\n get detailed information about an object\n\n Usage:\n examine [<object>[/attrname]]\n examine [*<account>[/attrname]]\n\n Switch:\n account - examine an Account (same as adding *)\n object - examine an Object (useful when OOC)\n script - examine a Script\n channel - examine a Channel\n\n The examine command shows detailed game info about an\n object and optionally a specific attribute on it.\n If object is not specified, the current location is examined.\n\n Append a * before the search string to examine an account.\n\n '}¶
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 841d4c8136..b2741edd0f 100644
--- a/docs/1.0-dev/api/evennia.commands.default.comms.html
+++ b/docs/1.0-dev/api/evennia.commands.default.comms.html
@@ -933,7 +933,7 @@ ban mychannel1,mychannel2= EvilUser : Was banned for spamming.
@@ -953,7 +953,7 @@ ban mychannel1,mychannel2= EvilUser : Was banned for spamming.
-
-
search_index_entry = {'aliases': '@chan @channels', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel chan channels', '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', 'no_prefix': 'channel channels chan', '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 "}¶
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 b3a58149be..9618254825 100644
--- a/docs/1.0-dev/api/evennia.commands.default.general.html
+++ b/docs/1.0-dev/api/evennia.commands.default.general.html
@@ -173,7 +173,7 @@ look *<account&g
@@ -204,7 +204,7 @@ look *<account&g
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}¶
+search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}¶
@@ -321,7 +321,7 @@ inv
@@ -352,7 +352,7 @@ inv
-
-
search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
+search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
@@ -596,7 +596,7 @@ placing it in their inventory.
@@ -627,7 +627,7 @@ placing it in their inventory.
-
-
search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
+search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
@@ -771,7 +771,7 @@ which permission groups you are a member of.
@@ -802,7 +802,7 @@ which permission groups you are a member of.
-
-
search_index_entry = {'aliases': 'hierarchy groups', 'category': 'general', 'key': 'access', 'no_prefix': ' hierarchy groups', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶
+search_index_entry = {'aliases': 'groups hierarchy', 'category': 'general', 'key': 'access', 'no_prefix': ' groups hierarchy', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶
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 d081351df9..1174771947 100644
--- a/docs/1.0-dev/api/evennia.commands.default.system.html
+++ b/docs/1.0-dev/api/evennia.commands.default.system.html
@@ -681,7 +681,7 @@ See |luhttps://ww
@@ -727,7 +727,7 @@ to all the variables defined therein.
-
-
search_index_entry = {'aliases': '@task @delays', 'category': 'system', 'key': '@tasks', 'no_prefix': 'tasks task delays', 'tags': '', 'text': "\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n "}¶
+search_index_entry = {'aliases': '@delays @task', 'category': 'system', 'key': '@tasks', 'no_prefix': 'tasks delays task', 'tags': '', 'text': "\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n "}¶
diff --git a/docs/1.0-dev/api/evennia.commands.default.tests.html b/docs/1.0-dev/api/evennia.commands.default.tests.html
index 819a36daf9..069630a808 100644
--- a/docs/1.0-dev/api/evennia.commands.default.tests.html
+++ b/docs/1.0-dev/api/evennia.commands.default.tests.html
@@ -900,7 +900,7 @@ main test suite started with
Test the batch processor.
+red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpl3w9ktuu/0eda75187a9f171523dc3773dab4a26b8e6756d3/evennia/contrib/tutorials/red_button/red_button.py'>¶
diff --git a/docs/1.0-dev/api/evennia.commands.default.unloggedin.html b/docs/1.0-dev/api/evennia.commands.default.unloggedin.html
index 71cb260d7a..cdb7a56407 100644
--- a/docs/1.0-dev/api/evennia.commands.default.unloggedin.html
+++ b/docs/1.0-dev/api/evennia.commands.default.unloggedin.html
@@ -234,7 +234,7 @@ version is a bit more complicated.
@@ -260,7 +260,7 @@ version is a bit more complicated.
-
-
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
+search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
@@ -284,7 +284,7 @@ All it does is display the connect screen.
@@ -310,7 +310,7 @@ All it does is display the connect screen.
-
-
search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
+search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
@@ -333,7 +333,7 @@ for simplicity. It shows a pane of info.
@@ -359,7 +359,7 @@ for simplicity. It shows a pane of info.
-
-
search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', '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', 'no_prefix': ' h ?', '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.base_systems.email_login.email_login.html b/docs/1.0-dev/api/evennia.contrib.base_systems.email_login.email_login.html
index 78e52c5e1b..1247d306ce 100644
--- a/docs/1.0-dev/api/evennia.contrib.base_systems.email_login.email_login.html
+++ b/docs/1.0-dev/api/evennia.contrib.base_systems.email_login.email_login.html
@@ -244,7 +244,7 @@ version is a bit more complicated.
@@ -270,7 +270,7 @@ version is a bit more complicated.
-
-
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
+search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
@@ -289,7 +289,7 @@ All it does is display the connect screen.
@@ -315,7 +315,7 @@ All it does is display the connect screen.
-
-
search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
+search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
@@ -333,7 +333,7 @@ for simplicity. It shows a pane of info.
@@ -359,7 +359,7 @@ for simplicity. It shows a pane of info.
-
-
search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', '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', 'no_prefix': ' h ?', '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.base_systems.ingame_python.commands.html b/docs/1.0-dev/api/evennia.contrib.base_systems.ingame_python.commands.html
index ef6742c570..ee2699c248 100644
--- a/docs/1.0-dev/api/evennia.contrib.base_systems.ingame_python.commands.html
+++ b/docs/1.0-dev/api/evennia.contrib.base_systems.ingame_python.commands.html
@@ -114,7 +114,7 @@
@@ -195,7 +195,7 @@ on user permission.
-
-
search_index_entry = {'aliases': '@calls @callbacks @callback', 'category': 'building', 'key': '@call', 'no_prefix': 'call calls callbacks callback', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶
+search_index_entry = {'aliases': '@callbacks @callback @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callbacks callback calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html b/docs/1.0-dev/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html
index a867d5f996..7b980451e5 100644
--- a/docs/1.0-dev/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html
+++ b/docs/1.0-dev/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html
@@ -215,7 +215,7 @@ for that channel.
@@ -246,7 +246,7 @@ for that channel.
-
-
search_index_entry = {'aliases': 'delchanalias delaliaschan', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delchanalias delaliaschan', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶
+search_index_entry = {'aliases': 'delaliaschan delchanalias', 'category': 'comms', 'key': 'delcom', 'no_prefix': ' delaliaschan delchanalias', 'tags': '', 'text': "\n remove a channel alias and/or unsubscribe from channel\n\n Usage:\n delcom <alias or channel>\n delcom/all <channel>\n\n If the full channel name is given, unsubscribe from the\n channel. If an alias is given, remove the alias but don't\n unsubscribe. If the 'all' switch is used, remove all aliases\n for that channel.\n "}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.full_systems.evscaperoom.commands.html b/docs/1.0-dev/api/evennia.contrib.full_systems.evscaperoom.commands.html
index 6239fabc42..ac08c4d88d 100644
--- a/docs/1.0-dev/api/evennia.contrib.full_systems.evscaperoom.commands.html
+++ b/docs/1.0-dev/api/evennia.contrib.full_systems.evscaperoom.commands.html
@@ -209,7 +209,7 @@ the operation will be general or on the room.
@@ -233,7 +233,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'q abort chicken out quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' q abort chicken out quit', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶
+search_index_entry = {'aliases': 'abort chicken out quit q', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' abort chicken out quit q', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶
@@ -254,7 +254,7 @@ set in self.parse())
@@ -288,7 +288,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'evscaperoom', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n Look at the room, an object or the currently focused object\n\n Usage:\n look [obj]\n\n '}¶
+search_index_entry = {'aliases': 'ls l', 'category': 'evscaperoom', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n Look at the room, an object or the currently focused object\n\n Usage:\n look [obj]\n\n '}¶
@@ -369,7 +369,7 @@ shout
@@ -398,7 +398,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': '; whisper shout', 'category': 'general', 'key': 'say', 'no_prefix': ' ; whisper shout', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶
+search_index_entry = {'aliases': 'shout whisper ;', 'category': 'general', 'key': 'say', 'no_prefix': ' shout whisper ;', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶
@@ -488,7 +488,7 @@ looks and what actions is available.
@@ -517,7 +517,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'ex e examine unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex e examine unfocus', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶
+search_index_entry = {'aliases': 'e unfocus ex examine', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' e unfocus ex examine', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶
@@ -579,7 +579,7 @@ set in self.parse())
@@ -603,7 +603,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'i give inventory inv', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' i give inventory inv', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
+search_index_entry = {'aliases': 'inv inventory i give', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inv inventory i give', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
@@ -624,7 +624,7 @@ set in self.parse())
@@ -647,7 +647,7 @@ to all the variables defined therein.
-
-
search_index_entry = {'aliases': '@open @dig', 'category': 'general', 'key': 'open', 'no_prefix': ' open dig', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}¶
+search_index_entry = {'aliases': '@dig @open', 'category': 'general', 'key': 'open', 'no_prefix': ' dig open', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.game_systems.clothing.clothing.html b/docs/1.0-dev/api/evennia.contrib.game_systems.clothing.clothing.html
index 1917f097c9..3c3779bbab 100644
--- a/docs/1.0-dev/api/evennia.contrib.game_systems.clothing.clothing.html
+++ b/docs/1.0-dev/api/evennia.contrib.game_systems.clothing.clothing.html
@@ -690,7 +690,7 @@ inv
@@ -721,7 +721,7 @@ inv
-
-
search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
+search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.grid.extended_room.extended_room.html b/docs/1.0-dev/api/evennia.contrib.grid.extended_room.extended_room.html
index a3e2c01355..4d01868d90 100644
--- a/docs/1.0-dev/api/evennia.contrib.grid.extended_room.extended_room.html
+++ b/docs/1.0-dev/api/evennia.contrib.grid.extended_room.extended_room.html
@@ -338,7 +338,7 @@ look *<account&g
@@ -358,7 +358,7 @@ look *<account&g
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look\n\n Usage:\n look\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects in your vicinity.\n '}¶
+search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look\n\n Usage:\n look\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects in your vicinity.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.rpg.rpsystem.rpsystem.html b/docs/1.0-dev/api/evennia.contrib.rpg.rpsystem.rpsystem.html
index facef702d5..7076c09637 100644
--- a/docs/1.0-dev/api/evennia.contrib.rpg.rpsystem.rpsystem.html
+++ b/docs/1.0-dev/api/evennia.contrib.rpg.rpsystem.rpsystem.html
@@ -693,7 +693,7 @@ a different language.
@@ -724,7 +724,7 @@ a different language.
-
-
search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
+search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
@@ -863,7 +863,7 @@ Using the command without arguments will list all current recogs.
@@ -890,7 +890,7 @@ Using the command without arguments will list all current recogs.
-
-
search_index_entry = {'aliases': 'recognize forget', 'category': 'general', 'key': 'recog', 'no_prefix': ' recognize forget', 'tags': '', 'text': '\n Recognize another person in the same room.\n\n Usage:\n recog\n recog sdesc as alias\n forget alias\n\n Example:\n recog tall man as Griatch\n forget griatch\n\n This will assign a personal alias for a person, or forget said alias.\n Using the command without arguments will list all current recogs.\n\n '}¶
+search_index_entry = {'aliases': 'forget recognize', 'category': 'general', 'key': 'recog', 'no_prefix': ' forget recognize', 'tags': '', 'text': '\n Recognize another person in the same room.\n\n Usage:\n recog\n recog sdesc as alias\n forget alias\n\n Example:\n recog tall man as Griatch\n forget griatch\n\n This will assign a personal alias for a person, or forget said alias.\n Using the command without arguments will list all current recogs.\n\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.tutorials.evadventure.commands.html b/docs/1.0-dev/api/evennia.contrib.tutorials.evadventure.commands.html
index 76b56ff5e3..b1ed4a0026 100644
--- a/docs/1.0-dev/api/evennia.contrib.tutorials.evadventure.commands.html
+++ b/docs/1.0-dev/api/evennia.contrib.tutorials.evadventure.commands.html
@@ -254,7 +254,7 @@ set in self.parse())
@@ -278,7 +278,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}¶
+search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}¶
@@ -355,7 +355,7 @@ unwear <item>
@@ -379,7 +379,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'unwield unwear', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwield unwear', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove <item>\n unwield <item>\n unwear <item>\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}¶
+search_index_entry = {'aliases': 'unwear unwield', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwear unwield', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove <item>\n unwield <item>\n unwear <item>\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.tutorials.red_button.red_button.html b/docs/1.0-dev/api/evennia.contrib.tutorials.red_button.red_button.html
index 8482444ba7..65d142bc5b 100644
--- a/docs/1.0-dev/api/evennia.contrib.tutorials.red_button.red_button.html
+++ b/docs/1.0-dev/api/evennia.contrib.tutorials.red_button.red_button.html
@@ -151,7 +151,7 @@ such as when closing the lid and un-blinding a character.
+aliases = ['push', 'press button', 'press']¶
@@ -180,7 +180,7 @@ check if the lid is open or closed.
+search_index_entry = {'aliases': 'push press button press', 'category': 'general', 'key': 'push button', 'no_prefix': ' push press button press', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}¶
@@ -250,7 +250,7 @@ check if the lid is open or closed.
+aliases = ['break lid', 'smash', 'smash lid']¶
@@ -277,7 +277,7 @@ break.
+search_index_entry = {'aliases': 'break lid smash smash lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' break lid smash smash lid', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}¶
@@ -377,7 +377,7 @@ be mutually exclusive.
+aliases = ['push', 'press button', 'press']¶
@@ -406,7 +406,7 @@ set in self.parse())
+search_index_entry = {'aliases': 'push press button press', 'category': 'general', 'key': 'push button', 'no_prefix': ' push press button press', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}¶
@@ -504,7 +504,7 @@ be mutually exclusive.
+aliases = ['listen', 'examine', 'get', 'feel', 'l', 'ex']¶
@@ -530,7 +530,7 @@ be mutually exclusive.
+search_index_entry = {'aliases': 'listen examine get feel l ex', 'category': 'general', 'key': 'look', 'no_prefix': ' listen examine get feel l ex', 'tags': '', 'text': "\n Looking around in darkness\n\n Usage:\n look <obj>\n\n ... not that there's much to see in the dark.\n\n "}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.objects.html b/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.objects.html
index 9d4594f204..def3c2e8ac 100644
--- a/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.objects.html
+++ b/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.objects.html
@@ -554,7 +554,7 @@ shift green root up/down
@@ -590,7 +590,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'pull move shiftroot push', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' pull move shiftroot push', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶
+search_index_entry = {'aliases': 'shiftroot pull push move', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' shiftroot pull push move', '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 '}¶
@@ -777,7 +777,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
aliases = ['thrust', 'hit', 'defend', 'chop', 'bash', 'fight', 'kill', 'stab', 'pierce', 'slash', 'parry']¶
+aliases = ['chop', 'fight', 'parry', 'thrust', 'slash', 'kill', 'defend', 'bash', 'stab', 'pierce', 'hit']¶
@@ -803,7 +803,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
search_index_entry = {'aliases': 'thrust hit defend chop bash fight kill stab pierce slash parry', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' thrust hit defend chop bash fight kill stab pierce slash parry', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶
+search_index_entry = {'aliases': 'chop fight parry thrust slash kill defend bash stab pierce hit', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' chop fight parry thrust slash kill defend bash stab pierce hit', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.rooms.html b/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.rooms.html
index 24af7803ea..4c89a1f939 100644
--- a/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.rooms.html
+++ b/docs/1.0-dev/api/evennia.contrib.tutorials.tutorial_world.rooms.html
@@ -246,7 +246,7 @@ code except for adding in the details.
@@ -261,7 +261,7 @@ code except for adding in the details.
-
-
search_index_entry = {'aliases': 'l ls', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n looks at the room and on details\n\n Usage:\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects\n in your vicinity.\n\n Tutorial: This is a child of the default Look command, that also\n allows us to look at "details" in the room. These details are\n things to examine and offers some extra description without\n actually having to be actual database objects. It uses the\n return_detail() hook on TutorialRooms for this.\n '}¶
+search_index_entry = {'aliases': 'ls l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n looks at the room and on details\n\n Usage:\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects\n in your vicinity.\n\n Tutorial: This is a child of the default Look command, that also\n allows us to look at "details" in the room. These details are\n things to examine and offers some extra description without\n actually having to be actual database objects. It uses the\n return_detail() hook on TutorialRooms for this.\n '}¶
@@ -814,7 +814,7 @@ if they fall off the bridge.
@@ -840,7 +840,7 @@ if they fall off the bridge.
-
-
search_index_entry = {'aliases': '? h', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}¶
+search_index_entry = {'aliases': 'h ?', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}¶
@@ -966,7 +966,7 @@ to find something.
-
-
aliases = ['l', 'search', 'fiddle', 'feel', 'feel around']¶
+aliases = ['l', 'search', 'feel', 'feel around', 'fiddle']¶
@@ -994,7 +994,7 @@ random chance of eventually finding a light source.
-
-
search_index_entry = {'aliases': 'l search fiddle feel feel around', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l search fiddle feel feel around', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶
+search_index_entry = {'aliases': 'l search feel feel around fiddle', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l search feel feel around fiddle', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶
diff --git a/docs/1.0-dev/api/evennia.contrib.utils.git_integration.git_integration.html b/docs/1.0-dev/api/evennia.contrib.utils.git_integration.git_integration.html
index 6f1484c863..1b75ebe172 100644
--- a/docs/1.0-dev/api/evennia.contrib.utils.git_integration.git_integration.html
+++ b/docs/1.0-dev/api/evennia.contrib.utils.git_integration.git_integration.html
@@ -206,7 +206,7 @@ git evennia pull - Pull the latest evennia code.
-
-
directory = '/tmp/tmpcgfcbpf1/22f6348eb7b8873a00135ef67a527a2f943357b5/evennia'¶
+directory = '/tmp/tmpl3w9ktuu/0eda75187a9f171523dc3773dab4a26b8e6756d3/evennia'¶
@@ -267,7 +267,7 @@ git pull - Pull the latest code from your current branch.
-
-
directory = '/tmp/tmpcgfcbpf1/22f6348eb7b8873a00135ef67a527a2f943357b5/evennia/game_template'¶
+directory = '/tmp/tmpl3w9ktuu/0eda75187a9f171523dc3773dab4a26b8e6756d3/evennia/game_template'¶
diff --git a/docs/1.0-dev/api/evennia.utils.eveditor.html b/docs/1.0-dev/api/evennia.utils.eveditor.html
index fdd6a3a2a6..d0a3f7f79e 100644
--- a/docs/1.0-dev/api/evennia.utils.eveditor.html
+++ b/docs/1.0-dev/api/evennia.utils.eveditor.html
@@ -334,7 +334,7 @@ indentation.
-
-
aliases = [':dd', ':w', ':', ':i', ':uu', ':UU', '::', ':!', ':s', ':<', ':y', ':I', ':h', ':q!', ':A', ':::', ':DD', ':x', ':q', ':u', ':fi', ':echo', ':p', ':S', ':r', ':wq', ':>', ':fd', ':dw', ':j', ':=', ':f']¶
+aliases = [':DD', ':h', ':q!', ':dd', ':!', ':UU', ':r', ':q', ':::', ':x', ':u', ':j', ':echo', ':', ':y', ':<', ':uu', ':p', ':f', ':>', ':I', ':fi', ':S', ':=', ':A', ':s', ':fd', ':dw', ':i', ':w', ':wq', '::']¶
@@ -362,7 +362,7 @@ efficient presentation.
-
-
search_index_entry = {'aliases': ':dd :w : :i :uu :UU :: :! :s :< :y :I :h :q! :A ::: :DD :x :q :u :fi :echo :p :S :r :wq :> :fd :dw :j := :f', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :dd :w : :i :uu :UU :: :! :s :< :y :I :h :q! :A ::: :DD :x :q :u :fi :echo :p :S :r :wq :> :fd :dw :j := :f', 'tags': '', 'text': '\n Commands for the editor\n '}¶
+search_index_entry = {'aliases': ':DD :h :q! :dd :! :UU :r :q ::: :x :u :j :echo : :y :< :uu :p :f :> :I :fi :S := :A :s :fd :dw :i :w :wq ::', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :DD :h :q! :dd :! :UU :r :q ::: :x :u :j :echo : :y :< :uu :p :f :> :I :fi :S := :A :s :fd :dw :i :w :wq ::', '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 fbdc357aba..148d64eaea 100644
--- a/docs/1.0-dev/api/evennia.utils.evmenu.html
+++ b/docs/1.0-dev/api/evennia.utils.evmenu.html
@@ -1009,7 +1009,7 @@ single question.
+aliases = ['yes', 'y', 'a', '__nomatch_command', 'abort', 'no', 'n']¶
@@ -1035,7 +1035,7 @@ single question.
+search_index_entry = {'aliases': 'yes y a __nomatch_command abort no n', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' yes y a __nomatch_command abort no n', '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 35a2f0240a..4444e3bcca 100644
--- a/docs/1.0-dev/api/evennia.utils.evmore.html
+++ b/docs/1.0-dev/api/evennia.utils.evmore.html
@@ -135,7 +135,7 @@ the caller.msg() construct every time the page is updated.
-
-
aliases = ['quit', 'n', 'next', 'p', 'abort', 'end', 'a', 'previous', 'q', 'e', 't', 'top']¶
+aliases = ['previous', 'end', 'quit', 'e', 'p', 'q', 'next', 'top', 't', 'abort', 'a', 'n']¶
@@ -161,7 +161,7 @@ the caller.msg() construct every time the page is updated.
-
-
search_index_entry = {'aliases': 'quit n next p abort end a previous q e t top', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' quit n next p abort end a previous q e t top', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
+search_index_entry = {'aliases': 'previous end quit e p q next top t abort a n', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' previous end quit e p q next top t abort a n', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
diff --git a/docs/1.0-dev/objects.inv b/docs/1.0-dev/objects.inv
index a7d105d781f2a5f7474a6620170eff2b064f9a48..7e275510c85ae4f02cf353a70a32ed3ccf77138f 100644
GIT binary patch
delta 60594
zcmV)(K#RY|%n9ku34pW#)oFi0cAKhgp&uS%c+i!WhbK1Eto@haTg4y6=@V@Ekf5xE
zWI8WG&xQoYT9p~TrK*s886qxZkK$@77sjm$bCI_>v<1n}5I
z8A^DOn*7d#fmR(xelN$8j1T7=UiQklwfZ+vicH@``P2j`?g?mk?cjg-j%f_(lrQ8X
z&G$=dz3*_TM$38v>9e10sTy-#e(3-{d4W&9_|j(kt`MuL0~}xKelMPo+?KEDzPFr6
zthc;S^~r4ICBOjrxV+R=ULXF%W*P?q;H!vhHQ}b$r}UY38H2Llg(u1cyk8&|NwJ8D
z@qVaMP+Y{t1P)k$TbX}T_Qf8X9%%D9&x*Y#eJU#WASMlgJlxm}vSXtL-9g#8Bkx&z
zz3wa(2N#%D8~m9biVus|_&00Tl-+PEL-XutzAp^Afi9w2H~@tV-9!QDx|!qfAshoh
zVKh^tM&!hrTZd&ttvUCmRj99?LP?To`7K&H=0c(Fo)Uzm54NFKn?Q%pV
zRTi${fd)Yt>%j}QcVp7zDoKMIQ(H77G01~`21RIcrKE`|Ty2`-3rXWM%3r{(r1+-+
zdp8TK6I@kr2U!hA+T!sT-ev|xwFsmwo}*zfd&qgIs>;mP%?iT
zwNP24g=Jr%(d2(rRoWF#(YDD|xK$K-dDtyx2yF&el~QxlsC~r}qA?+o2?iE$vnQVD
zzbBSaRpGjdYU0;@I8zb%|G_#&6SFS2&hZlVgda*CpTE%n~fflPNT81;TBo`i{KGq!wV9Gs77w
zeCD75FG*(jwi-=KrAz+5!-P2RIF|beP9n5qb2Zp^!ZVrEoO5{|Sm(_{pYvqT-Vw-h1lHAv_Y{dJ#txcU1qkRj`6;F!#S{AkFB~Nm2
z!+SfMd=CS8=5Lyj(o!9I7C*8lFb+7`7jGcI7sLvG{ESak`Py0Gy)-JO*Kj-N%lx5_
zKeqa77WIO>GLdt1u!R)TB22TJ;O{bA6`3Ez9D#p6v=+llfJ^9hz8oL8Ib^54;PV)A
zN|Jq*;gWmY&~nJKB8J=USq;5sdX1qOWh3clAqEq#q{RZzdXjX6ZFrh^N+g=A&e2YA7#Idj5oU|a=c>6&-WN#fj)bV-y
z@#=pkQmG#Wm!%%k%q}aM*p)xzP0KpqT~^0pg@QQm76(_PBhE0)2+@HrA{2~3Fyeyp
za9td?k%9zYcKi}szQ}?#adOt=Yj;@yc_Y%rkOC`floU6;T~!n?UMeOkVZI7K$Z=dh
zclYe~V;i^Cq1#o4CcBNX30wnxsfzMhJnVlD$I*Kfjvk@Ba$$m3ecM$heyJ5!?hq3m
zlDK^?yY!R4FK)=oQG{Q?GKxf8#LaxqYLB9VQB4RBKku~lCaXtzIXs1E@&i)|Z=+hD
zo%;5kSS`*u8DK)|h%)=c-(!C!it5jNNorOTEb@sd2q+v`h}Ui6_o=N@!<>(egdKnF
z-^ElJ%cp-I((%*w?#=p|`A;;V4IzhsP#`tp-_h%2)F@Lc-~gtQ25Eq$K$8
z9o8yi(UCKAOyjhIu?2Kk{mcusxWfGhmb9L=d0FQg+8kBSd$P!rLL4>*9#4OLc|2K1
zZfSfuSUf?4)2sjec>3z!;pu$xl)|v8#eBpN4Tg?IOj!i6f;0{Posde#!2kGm5DW3E
zKCO8NLHqq%uQ$s)Y)3Q6^(SL>6tiuYHoR-tulX)bV6McEi2d;4g2Rw}D7u9Y8OW{R
zq=mzQO+K^@53vIGJv0#FsCtJV0%~72_qIhO-o+u|CR&);)O!ic4j`qN>aojlN=MXI<#LaFw~KF_zE-
z_6_B1{%b{Hbs)`V(|igkK4`K6?~ujaF0BtSo%*%%EaK06DZo^%a8eejm8^7#8ltfD
zNrX>|N$x*oMIB!~vu}Ut$yR0S#Kf()EG6P8i?>0m#kb!#d3J!yXY+Dz_<$KrF4Zq0
zd=SY8F8kv2lN1l`FrEBiw!cspr>CTN^ow%bhtobws3D_52@LuJ1NnqZ!Fc=u!Mu8O
zOgcF@#%h+gGg&oN*CCcw^f6RYF@n#-InBm&aAtCD3
z!FVGtc;52o)=!j$lMW)}?JP1@v9wth=N+6_^5Ds1q5dZ8@c0P!EXq4L>g2&i0kRif
zF5~eKX7dx(cdS&vJE