From be1316b259279c82cd090e5bb23d6216c4a7fc56 Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action
The result of the roll will be echoed to the room
+The result of the roll will be echoed to the room.
One can also specify a standard Python operator in order to specify eventual target numbers and get results in a fair and guaranteed unbiased way. For example:
@@ -171,36 +169,25 @@ was.To roll dice in code, use the roll function from this module. It has two
-main ways to define the expected roll:
from evennia.contrib.rpg.dice import roll
-
-roll(dice, dicetype=6, modifier=None, conditional=None, return_tuple=False,
- max_dicenum=10, max_dicetype=1000)
-
-You can only roll one set of dice. If your RPG requires you to roll multiple
-sets of dice and combine them in more advanced ways, you can do so with multiple
-roll() calls.
You can specify the first argument as a string on standard RPG d-syntax (NdM, where N is the number of dice to roll, and M is the number sides per dice):
-roll("3d10 + 2")
+from evennia.contrib.rpg.dice import roll
+
+roll("3d10 + 2")
You can also give a conditional (you’ll then get a True/False back):
roll("2d6 - 1 >= 10")
-
-
-Explicit arguments¶
If you specify the first argument as an integer, it’s interpret as the number of
dice to roll and you can then build the roll more explicitly. This can be
useful if you are using the roller together with some other system and want to
construct the roll from components.
+roll(dice, dicetype=6, modifier=None, conditional=None, return_tuple=False,
+ max_dicenum=10, max_dicetype=1000)
+
+
Here’s how to roll 3d10 + 2 with explicit syntax:
roll(3, 10, modifier=("+", 2))
@@ -209,7 +196,9 @@ construct the roll from components.
roll(2, 6, modifier=("-", 1), conditional=(">=", 10))
-
+You can only roll one set of dice. If your RPG requires you to roll multiple
+sets of dice and combine them in more advanced ways, you can do so with multiple
+roll() calls.
Get all roll details¶
If you need the individual rolls (e.g. for a dice pool), set the return_tuple kwarg:
diff --git a/docs/2.x/_modules/evennia/contrib/rpg/dice/dice.html b/docs/2.x/_modules/evennia/contrib/rpg/dice/dice.html
index b24a311510..791f7c0394 100644
--- a/docs/2.x/_modules/evennia/contrib/rpg/dice/dice.html
+++ b/docs/2.x/_modules/evennia/contrib/rpg/dice/dice.html
@@ -119,7 +119,7 @@
class CharacterCmdSet(default_cmds.CharacterCmdSet):
# ...
- def at_object_creation(self):
+ def at_cmdset_creation(self):
# ...
self.add(dice.CmdDice()) # <---
@@ -131,15 +131,16 @@
To roll dice in code, use the `roll` function from this module:
-```python
+ from evennia.contrib.rpg import dice
-from evennia.contrib.rpg import dice
-dice.roll(3, 10, ("+", 2)) # 3d10 + 2
-```
+ dice.roll("3d10 + 2")
-or use the string syntax:
-dice.roll("3d10 + 2")
+If your system generates the dice dynamically you can also enter each part
+of the roll separately:
+
+ dice.roll(3, 10, ("+", 2)) # 3d10 + 2
+
"""
import re
@@ -199,6 +200,14 @@
Examples:
::
+ # string form
+ print roll("3d6 + 2")
+ 10
+ print roll("2d10 + 2 > 10")
+ True
+ print roll("2d20 - 2 >= 10")
+ (8, False, 2, (4, 6)) # roll was 4 + 6 - 2 = 8
+
# explicit arguments
print roll(2, 6) # 2d6
7
@@ -211,14 +220,6 @@
print roll(2, 20, ('-', 2), conditional=('>=', 10), return_tuple=True)
(8, False, 2, (4, 6)) # roll was 4 + 6 - 2 = 8
- # string form
- print roll("3d6 + 2")
- 10
- print roll("2d10 + 2 > 10")
- True
- print roll("2d20 - 2 >= 10")
- (8, False, 2, (4, 6)) # roll was 4 + 6 - 2 = 8
-
"""
modifier_string = ""
diff --git a/docs/2.x/_sources/Contribs/Contrib-Dice.md.txt b/docs/2.x/_sources/Contribs/Contrib-Dice.md.txt
index fd48c3e448..44d27b1e78 100644
--- a/docs/2.x/_sources/Contribs/Contrib-Dice.md.txt
+++ b/docs/2.x/_sources/Contribs/Contrib-Dice.md.txt
@@ -34,7 +34,7 @@ class CharacterCmdSet(default_cmds.CharacterCmdSet):
> roll 1d20
> roll 1d20 - 4
-The result of the roll will be echoed to the room
+The result of the roll will be echoed to the room.
One can also specify a standard Python operator in order to specify
eventual target numbers and get results in a fair and guaranteed
@@ -55,27 +55,12 @@ Is a hidden roll that does not inform the room it happened.
## Rolling dice from code
-To roll dice in code, use the `roll` function from this module. It has two
-main ways to define the expected roll:
-
-```python
-from evennia.contrib.rpg.dice import roll
-
-roll(dice, dicetype=6, modifier=None, conditional=None, return_tuple=False,
- max_dicenum=10, max_dicetype=1000)
-
-```
-
-You can only roll one set of dice. If your RPG requires you to roll multiple
-sets of dice and combine them in more advanced ways, you can do so with multiple
-`roll()` calls.
-
-### Roll dice based on a string
-
You can specify the first argument as a string on standard RPG d-syntax (NdM,
where N is the number of dice to roll, and M is the number sides per dice):
```python
+from evennia.contrib.rpg.dice import roll
+
roll("3d10 + 2")
```
@@ -85,14 +70,17 @@ You can also give a conditional (you'll then get a `True`/`False` back):
roll("2d6 - 1 >= 10")
```
-### Explicit arguments
-
If you specify the first argument as an integer, it's interpret as the number of
dice to roll and you can then build the roll more explicitly. This can be
useful if you are using the roller together with some other system and want to
construct the roll from components.
+```python
+roll(dice, dicetype=6, modifier=None, conditional=None, return_tuple=False,
+ max_dicenum=10, max_dicetype=1000)
+```
+
Here's how to roll `3d10 + 2` with explicit syntax:
```python
@@ -105,6 +93,10 @@ Here's how to roll `2d6 - 1 >= 10` (you'll get back `True`/`False` back):
roll(2, 6, modifier=("-", 1), conditional=(">=", 10))
```
+You can only roll one set of dice. If your RPG requires you to roll multiple
+sets of dice and combine them in more advanced ways, you can do so with multiple
+`roll()` calls.
+
### Get all roll details
If you need the individual rolls (e.g. for a dice pool), set the `return_tuple` kwarg:
diff --git a/docs/2.x/api/evennia.commands.default.admin.html b/docs/2.x/api/evennia.commands.default.admin.html
index d19b4515c3..7564dce65b 100644
--- a/docs/2.x/api/evennia.commands.default.admin.html
+++ b/docs/2.x/api/evennia.commands.default.admin.html
@@ -325,7 +325,7 @@ to accounts respectively.
@@ -356,7 +356,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/2.x/api/evennia.commands.default.batchprocess.html b/docs/2.x/api/evennia.commands.default.batchprocess.html
index a5c8291f19..8f0552b75e 100644
--- a/docs/2.x/api/evennia.commands.default.batchprocess.html
+++ b/docs/2.x/api/evennia.commands.default.batchprocess.html
@@ -146,7 +146,7 @@ skipping, reloading etc.
@@ -177,7 +177,7 @@ skipping, reloading etc.
-
-
search_index_entry = {'aliases': 'batchcmd batchcommand', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcmd batchcommand', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}¶
+search_index_entry = {'aliases': 'batchcommand batchcmd', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcommand batchcmd', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}¶
diff --git a/docs/2.x/api/evennia.commands.default.building.html b/docs/2.x/api/evennia.commands.default.building.html
index d6487ed41d..a8412579e1 100644
--- a/docs/2.x/api/evennia.commands.default.building.html
+++ b/docs/2.x/api/evennia.commands.default.building.html
@@ -600,7 +600,7 @@ You can specify the /force switch to bypass this confirmation.
@@ -641,7 +641,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 '}¶
@@ -1353,7 +1353,7 @@ server settings.
-
-
aliases = ['@parent', '@typeclasses', '@update', '@swap', '@type']¶
+aliases = ['@typeclasses', '@swap', '@parent', '@update', '@type']¶
@@ -1384,7 +1384,7 @@ server settings.
-
-
search_index_entry = {'aliases': '@parent @typeclasses @update @swap @type', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass parent typeclasses update swap type', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶
+search_index_entry = {'aliases': '@typeclasses @swap @parent @update @type', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass typeclasses swap parent update type', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶
diff --git a/docs/2.x/api/evennia.commands.default.general.html b/docs/2.x/api/evennia.commands.default.general.html
index 6f0d17801c..68149702c1 100644
--- a/docs/2.x/api/evennia.commands.default.general.html
+++ b/docs/2.x/api/evennia.commands.default.general.html
@@ -331,7 +331,7 @@ inv
@@ -362,7 +362,7 @@ inv
-
-
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
+search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
@@ -717,7 +717,7 @@ automatically begin with your name.
@@ -758,7 +758,7 @@ space.
-
-
search_index_entry = {'aliases': ': emote', 'category': 'general', 'key': 'pose', 'no_prefix': ' : emote', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}¶
+search_index_entry = {'aliases': 'emote :', 'category': 'general', 'key': 'pose', 'no_prefix': ' emote :', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}¶
diff --git a/docs/2.x/api/evennia.commands.default.tests.html b/docs/2.x/api/evennia.commands.default.tests.html
index 9642d9b65c..c97960110b 100644
--- a/docs/2.x/api/evennia.commands.default.tests.html
+++ b/docs/2.x/api/evennia.commands.default.tests.html
@@ -963,7 +963,7 @@ main test suite started with
Test the batch processor.
+red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpa0fxekgt/c756393328c8720378363363f78e8a15973562bf/evennia/contrib/tutorials/red_button/red_button.py'>¶
diff --git a/docs/2.x/api/evennia.commands.default.unloggedin.html b/docs/2.x/api/evennia.commands.default.unloggedin.html
index 56972d8cda..ab76a6ab3c 100644
--- a/docs/2.x/api/evennia.commands.default.unloggedin.html
+++ b/docs/2.x/api/evennia.commands.default.unloggedin.html
@@ -130,7 +130,7 @@ connect “account name” “pass word”
@@ -165,7 +165,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
+search_index_entry = {'aliases': 'conn co con', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn co con', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
@@ -189,7 +189,7 @@ create “account name” “pass word”
@@ -226,7 +226,7 @@ create “account name” “pass word”
-
-
search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
+search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
@@ -250,7 +250,7 @@ version is a bit more complicated.
@@ -276,7 +276,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 '}¶
@@ -349,7 +349,7 @@ for simplicity. It shows a pane of info.
@@ -375,7 +375,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/2.x/api/evennia.contrib.base_systems.email_login.email_login.html b/docs/2.x/api/evennia.contrib.base_systems.email_login.email_login.html
index 8cd1496567..aa5587c305 100644
--- a/docs/2.x/api/evennia.contrib.base_systems.email_login.email_login.html
+++ b/docs/2.x/api/evennia.contrib.base_systems.email_login.email_login.html
@@ -147,7 +147,7 @@ the module given by settings.CONNECTION_SCREEN_MODULE.
@@ -177,7 +177,7 @@ there is no object yet before the account has logged in)
-
-
search_index_entry = {'aliases': 'con conn co', 'category': 'general', 'key': 'connect', 'no_prefix': ' con conn co', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶
+search_index_entry = {'aliases': 'conn co con', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn co con', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶
@@ -199,7 +199,7 @@ there is no object yet before the account has logged in)
@@ -235,7 +235,7 @@ name enclosed in quotes:
-
-
search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}¶
+search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}¶
@@ -254,7 +254,7 @@ version is a bit more complicated.
@@ -280,7 +280,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 '}¶
@@ -343,7 +343,7 @@ for simplicity. It shows a pane of info.
@@ -369,7 +369,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/2.x/api/evennia.contrib.base_systems.ingame_python.commands.html b/docs/2.x/api/evennia.contrib.base_systems.ingame_python.commands.html
index 280ebcf386..3bf7ad15fe 100644
--- a/docs/2.x/api/evennia.contrib.base_systems.ingame_python.commands.html
+++ b/docs/2.x/api/evennia.contrib.base_systems.ingame_python.commands.html
@@ -124,7 +124,7 @@
@@ -205,7 +205,7 @@ on user permission.
-
-
search_index_entry = {'aliases': '@callback @callbacks @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callback callbacks calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶
+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 '}¶
diff --git a/docs/2.x/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html b/docs/2.x/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html
index 7c888fd333..0023bae949 100644
--- a/docs/2.x/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html
+++ b/docs/2.x/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html
@@ -168,7 +168,7 @@ aliases to an already joined channel.
@@ -199,7 +199,7 @@ aliases to an already joined channel.
-
-
search_index_entry = {'aliases': 'chanalias aliaschan', 'category': 'comms', 'key': 'addcom', 'no_prefix': ' chanalias aliaschan', 'tags': '', 'text': '\n Add a channel alias and/or subscribe to a channel\n\n Usage:\n addcom [alias=] <channel>\n\n Joins a given channel. If alias is given, this will allow you to\n refer to the channel by this alias rather than the full channel\n name. Subsequent calls of this command can be used to add multiple\n aliases to an already joined channel.\n '}¶
+search_index_entry = {'aliases': 'aliaschan chanalias', 'category': 'comms', 'key': 'addcom', 'no_prefix': ' aliaschan chanalias', 'tags': '', 'text': '\n Add a channel alias and/or subscribe to a channel\n\n Usage:\n addcom [alias=] <channel>\n\n Joins a given channel. If alias is given, this will allow you to\n refer to the channel by this alias rather than the full channel\n name. Subsequent calls of this command can be used to add multiple\n aliases to an already joined channel.\n '}¶
@@ -225,7 +225,7 @@ for that channel.
@@ -256,7 +256,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/2.x/api/evennia.contrib.full_systems.evscaperoom.commands.html b/docs/2.x/api/evennia.contrib.full_systems.evscaperoom.commands.html
index 080bd1a380..3ce9e8e562 100644
--- a/docs/2.x/api/evennia.contrib.full_systems.evscaperoom.commands.html
+++ b/docs/2.x/api/evennia.contrib.full_systems.evscaperoom.commands.html
@@ -379,7 +379,7 @@ shout
@@ -408,7 +408,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'shout ; whisper', 'category': 'general', 'key': 'say', 'no_prefix': ' shout ; whisper', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶
+search_index_entry = {'aliases': 'shout whisper ;', 'category': 'general', 'key': 'say', 'no_prefix': ' shout whisper ;', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶
@@ -436,7 +436,7 @@ emote /me points to /box and /lever.
@@ -475,7 +475,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': ': pose', 'category': 'general', 'key': 'emote', 'no_prefix': ' : pose', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use "..." to enact speech.\n\n Usage:\n emote <emote>\n :<emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\n\n '}¶
+search_index_entry = {'aliases': 'pose :', 'category': 'general', 'key': 'emote', 'no_prefix': ' pose :', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use "..." to enact speech.\n\n Usage:\n emote <emote>\n :<emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\n\n '}¶
@@ -498,7 +498,7 @@ looks and what actions is available.
@@ -527,7 +527,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'unfocus e ex examine', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' unfocus e 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 '}¶
+search_index_entry = {'aliases': 'examine e unfocus ex', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' examine e unfocus ex', '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 '}¶
@@ -589,7 +589,7 @@ set in self.parse())
@@ -613,7 +613,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'inv inventory i give', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inv inventory i give', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
+search_index_entry = {'aliases': 'inventory give i inv', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inventory give i inv', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
@@ -634,7 +634,7 @@ set in self.parse())
@@ -657,7 +657,7 @@ to all the variables defined therein.
-
-
search_index_entry = {'aliases': '@dig @open', 'category': 'general', 'key': 'open', 'no_prefix': ' dig open', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}¶
+search_index_entry = {'aliases': '@open @dig', 'category': 'general', 'key': 'open', 'no_prefix': ' open dig', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}¶
diff --git a/docs/2.x/api/evennia.contrib.game_systems.barter.barter.html b/docs/2.x/api/evennia.contrib.game_systems.barter.barter.html
index 6b461fdbfa..ebcc660be2 100644
--- a/docs/2.x/api/evennia.contrib.game_systems.barter.barter.html
+++ b/docs/2.x/api/evennia.contrib.game_systems.barter.barter.html
@@ -753,7 +753,7 @@ try to influence the other part in the deal.
@@ -779,7 +779,7 @@ try to influence the other part in the deal.
-
-
search_index_entry = {'aliases': 'offers deal', 'category': 'trading', 'key': 'status', 'no_prefix': ' offers deal', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶
+search_index_entry = {'aliases': 'deal offers', 'category': 'trading', 'key': 'status', 'no_prefix': ' deal offers', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶
diff --git a/docs/2.x/api/evennia.contrib.game_systems.clothing.clothing.html b/docs/2.x/api/evennia.contrib.game_systems.clothing.clothing.html
index 7c96a8a017..2c3865a810 100644
--- a/docs/2.x/api/evennia.contrib.game_systems.clothing.clothing.html
+++ b/docs/2.x/api/evennia.contrib.game_systems.clothing.clothing.html
@@ -630,7 +630,7 @@ inv
@@ -661,7 +661,7 @@ inv
-
-
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
+search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n view inventory\n\n Usage:\n inventory\n inv\n\n Shows your inventory.\n '}¶
diff --git a/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_basic.html b/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_basic.html
index eadd9e7ce4..740aeb1135 100644
--- a/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_basic.html
+++ b/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_basic.html
@@ -680,7 +680,7 @@ if there are still any actions you can take.
@@ -706,7 +706,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
+search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
diff --git a/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_equip.html b/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_equip.html
index 8386735c09..7ecb81b00c 100644
--- a/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_equip.html
+++ b/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_equip.html
@@ -575,7 +575,7 @@ if there are still any actions you can take.
@@ -595,7 +595,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
+search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
diff --git a/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_items.html b/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_items.html
index 5cdde30129..a9cb8ec2ad 100644
--- a/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_items.html
+++ b/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_items.html
@@ -698,7 +698,7 @@ if there are still any actions you can take.
@@ -718,7 +718,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
+search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
diff --git a/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_magic.html b/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_magic.html
index 65ef8b98b2..40f957d777 100644
--- a/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_magic.html
+++ b/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_magic.html
@@ -477,7 +477,7 @@ if there are still any actions you can take.
@@ -497,7 +497,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
+search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
diff --git a/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_range.html b/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_range.html
index 464c87420b..3fb13400d7 100644
--- a/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_range.html
+++ b/docs/2.x/api/evennia.contrib.game_systems.turnbattle.tb_range.html
@@ -937,7 +937,7 @@ if there are still any actions you can take.
@@ -957,7 +957,7 @@ if there are still any actions you can take.
-
-
search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
+search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
diff --git a/docs/2.x/api/evennia.contrib.grid.xyzgrid.commands.html b/docs/2.x/api/evennia.contrib.grid.xyzgrid.commands.html
index 652a2fef7e..f92fe04007 100644
--- a/docs/2.x/api/evennia.contrib.grid.xyzgrid.commands.html
+++ b/docs/2.x/api/evennia.contrib.grid.xyzgrid.commands.html
@@ -430,7 +430,7 @@ there is no room above/below you, your movement will fail.
@@ -453,7 +453,7 @@ to all the variables defined therein.
-
-
search_index_entry = {'aliases': 'fly dive', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' fly dive', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}¶
+search_index_entry = {'aliases': 'dive fly', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' dive fly', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}¶
diff --git a/docs/2.x/api/evennia.contrib.rpg.dice.dice.html b/docs/2.x/api/evennia.contrib.rpg.dice.dice.html
index 640aa17cbf..5008628379 100644
--- a/docs/2.x/api/evennia.contrib.rpg.dice.dice.html
+++ b/docs/2.x/api/evennia.contrib.rpg.dice.dice.html
@@ -149,7 +149,7 @@ parties (although it also has options for hidden and secret rolls).
class CharacterCmdSet(default_cmds.CharacterCmdSet):
# ...
- def at_object_creation(self):
+ def at_cmdset_creation(self):
# ...
self.add(dice.CmdDice()) # <---
@@ -161,12 +161,15 @@ parties (although it also has options for hidden and secret rolls).
roll 1d100 + 10
To roll dice in code, use the roll function from this module:
-from evennia.contrib.rpg import dice
-dice.roll(3, 10, ("+", 2)) # 3d10 + 2
-
-
-or use the string syntax:
+
+from evennia.contrib.rpg import dice
dice.roll(“3d10 + 2”)
+
+If your system generates the dice dynamically you can also enter each part
+of the roll separately:
+
+dice.roll(3, 10, (“+”, 2)) # 3d10 + 2
+
-
evennia.contrib.rpg.dice.dice.roll(dice, dicetype=6, modifier=None, conditional=None, return_tuple=False, max_dicenum=10, max_dicetype=1000)[source]¶
@@ -211,7 +214,14 @@ dice were rolled).
All input numbers are converted to integers.
Examples
-- ::
# explicit arguments
+
- ::
# string form
+print roll(“3d6 + 2”)
+10
+print roll(“2d10 + 2 > 10”)
+True
+print roll(“2d20 - 2 >= 10”)
+(8, False, 2, (4, 6)) # roll was 4 + 6 - 2 = 8
+# explicit arguments
print roll(2, 6) # 2d6
7
print roll(1, 100, (‘+’, 5) # 1d100 + 5
@@ -222,13 +232,6 @@ print roll(3, 10, return_tuple=True)
(11, None, None, (2, 5, 4))
print roll(2, 20, (‘-’, 2), conditional=(‘>=’, 10), return_tuple=True)
(8, False, 2, (4, 6)) # roll was 4 + 6 - 2 = 8
-# string form
-print roll(“3d6 + 2”)
-10
-print roll(“2d10 + 2 > 10”)
-True
-print roll(“2d20 - 2 >= 10”)
-(8, False, 2, (4, 6)) # roll was 4 + 6 - 2 = 8
@@ -277,7 +280,14 @@ dice were rolled).
All input numbers are converted to integers.
Examples
-- ::
# explicit arguments
+
- ::
# string form
+print roll(“3d6 + 2”)
+10
+print roll(“2d10 + 2 > 10”)
+True
+print roll(“2d20 - 2 >= 10”)
+(8, False, 2, (4, 6)) # roll was 4 + 6 - 2 = 8
+# explicit arguments
print roll(2, 6) # 2d6
7
print roll(1, 100, (‘+’, 5) # 1d100 + 5
@@ -288,13 +298,6 @@ print roll(3, 10, return_tuple=True)
(11, None, None, (2, 5, 4))
print roll(2, 20, (‘-’, 2), conditional=(‘>=’, 10), return_tuple=True)
(8, False, 2, (4, 6)) # roll was 4 + 6 - 2 = 8
-# string form
-print roll(“3d6 + 2”)
-10
-print roll(“2d10 + 2 > 10”)
-True
-print roll(“2d20 - 2 >= 10”)
-(8, False, 2, (4, 6)) # roll was 4 + 6 - 2 = 8
@@ -331,7 +334,7 @@ everyone but the person rolling.
@@ -357,7 +360,7 @@ everyone but the person rolling.
-
-
search_index_entry = {'aliases': '@dice roll', 'category': 'general', 'key': 'dice', 'no_prefix': ' dice roll', 'tags': '', 'text': "\n roll dice\n\n Usage:\n dice[/switch] <nr>d<sides> [modifier] [success condition]\n\n Switch:\n hidden - tell the room the roll is being done, but don't show the result\n secret - don't inform the room about neither roll nor result\n\n Examples:\n dice 3d6 + 4\n dice 1d100 - 2 < 50\n\n This will roll the given number of dice with given sides and modifiers.\n So e.g. 2d6 + 3 means to 'roll a 6-sided die 2 times and add the result,\n then add 3 to the total'.\n Accepted modifiers are +, -, * and /.\n A success condition is given as normal Python conditionals\n (<,>,<=,>=,==,!=). So e.g. 2d6 + 3 > 10 means that the roll will succeed\n only if the final result is above 8. If a success condition is given, the\n outcome (pass/fail) will be echoed along with how much it succeeded/failed\n with. The hidden/secret switches will hide all or parts of the roll from\n everyone but the person rolling.\n "}¶
+search_index_entry = {'aliases': 'roll @dice', 'category': 'general', 'key': 'dice', 'no_prefix': ' roll dice', 'tags': '', 'text': "\n roll dice\n\n Usage:\n dice[/switch] <nr>d<sides> [modifier] [success condition]\n\n Switch:\n hidden - tell the room the roll is being done, but don't show the result\n secret - don't inform the room about neither roll nor result\n\n Examples:\n dice 3d6 + 4\n dice 1d100 - 2 < 50\n\n This will roll the given number of dice with given sides and modifiers.\n So e.g. 2d6 + 3 means to 'roll a 6-sided die 2 times and add the result,\n then add 3 to the total'.\n Accepted modifiers are +, -, * and /.\n A success condition is given as normal Python conditionals\n (<,>,<=,>=,==,!=). So e.g. 2d6 + 3 > 10 means that the roll will succeed\n only if the final result is above 8. If a success condition is given, the\n outcome (pass/fail) will be echoed along with how much it succeeded/failed\n with. The hidden/secret switches will hide all or parts of the roll from\n everyone but the person rolling.\n "}¶
diff --git a/docs/2.x/api/evennia.contrib.rpg.rpsystem.rpsystem.html b/docs/2.x/api/evennia.contrib.rpg.rpsystem.rpsystem.html
index 354dd6d3af..c1c61a27f3 100644
--- a/docs/2.x/api/evennia.contrib.rpg.rpsystem.rpsystem.html
+++ b/docs/2.x/api/evennia.contrib.rpg.rpsystem.rpsystem.html
@@ -881,7 +881,7 @@ Using the command without arguments will list all current recogs.
@@ -908,7 +908,7 @@ Using the command without arguments will list all current recogs.
-
-
search_index_entry = {'aliases': 'forget recognize', 'category': 'general', 'key': 'recog', 'no_prefix': ' forget recognize', 'tags': '', 'text': '\n Recognize another person in the same room.\n\n Usage:\n recog\n recog sdesc as alias\n forget alias\n\n Example:\n recog tall man as Griatch\n forget griatch\n\n This will assign a personal alias for a person, or forget said alias.\n Using the command without arguments will list all current recogs.\n\n '}¶
+search_index_entry = {'aliases': 'recognize forget', 'category': 'general', 'key': 'recog', 'no_prefix': ' recognize forget', 'tags': '', 'text': '\n Recognize another person in the same room.\n\n Usage:\n recog\n recog sdesc as alias\n forget alias\n\n Example:\n recog tall man as Griatch\n forget griatch\n\n This will assign a personal alias for a person, or forget said alias.\n Using the command without arguments will list all current recogs.\n\n '}¶
diff --git a/docs/2.x/api/evennia.contrib.tutorials.evadventure.combat_twitch.html b/docs/2.x/api/evennia.contrib.tutorials.evadventure.combat_twitch.html
index 2961fd81d2..6775e22af1 100644
--- a/docs/2.x/api/evennia.contrib.tutorials.evadventure.combat_twitch.html
+++ b/docs/2.x/api/evennia.contrib.tutorials.evadventure.combat_twitch.html
@@ -485,7 +485,7 @@ boost INT Wizard Goblin
@@ -519,7 +519,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'boost foil', 'category': 'combat', 'key': 'stunt', 'no_prefix': ' boost foil', 'tags': '', 'text': '\n Perform a combat stunt, that boosts an ally against a target, or\n foils an enemy, giving them disadvantage against an ally.\n\n Usage:\n boost [ability] <recipient> <target>\n foil [ability] <recipient> <target>\n boost [ability] <target> (same as boost me <target>)\n foil [ability] <target> (same as foil <target> me)\n\n Example:\n boost STR me Goblin\n boost DEX Goblin\n foil STR Goblin me\n foil INT Goblin\n boost INT Wizard Goblin\n\n '}¶
+search_index_entry = {'aliases': 'foil boost', 'category': 'combat', 'key': 'stunt', 'no_prefix': ' foil boost', 'tags': '', 'text': '\n Perform a combat stunt, that boosts an ally against a target, or\n foils an enemy, giving them disadvantage against an ally.\n\n Usage:\n boost [ability] <recipient> <target>\n foil [ability] <recipient> <target>\n boost [ability] <target> (same as boost me <target>)\n foil [ability] <target> (same as foil <target> me)\n\n Example:\n boost STR me Goblin\n boost DEX Goblin\n foil STR Goblin me\n foil INT Goblin\n boost INT Wizard Goblin\n\n '}¶
diff --git a/docs/2.x/api/evennia.contrib.tutorials.evadventure.commands.html b/docs/2.x/api/evennia.contrib.tutorials.evadventure.commands.html
index 380402d274..7142454385 100644
--- a/docs/2.x/api/evennia.contrib.tutorials.evadventure.commands.html
+++ b/docs/2.x/api/evennia.contrib.tutorials.evadventure.commands.html
@@ -200,7 +200,7 @@ self.args).
@@ -224,7 +224,7 @@ set in self.parse())
-
-
search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}¶
+search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}¶
diff --git a/docs/2.x/api/evennia.contrib.tutorials.red_button.red_button.html b/docs/2.x/api/evennia.contrib.tutorials.red_button.red_button.html
index 39ea7c1f5e..d94c8abffa 100644
--- a/docs/2.x/api/evennia.contrib.tutorials.red_button.red_button.html
+++ b/docs/2.x/api/evennia.contrib.tutorials.red_button.red_button.html
@@ -260,7 +260,7 @@ check if the lid is open or closed.
+aliases = ['smash lid', 'break lid', 'smash']¶
@@ -287,7 +287,7 @@ break.
+search_index_entry = {'aliases': 'smash lid break lid smash', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash lid break lid smash', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}¶
@@ -514,7 +514,7 @@ be mutually exclusive.
+aliases = ['l', 'ex', 'listen', 'examine', 'get', 'feel']¶
@@ -540,7 +540,7 @@ be mutually exclusive.
+search_index_entry = {'aliases': 'l ex listen examine get feel', 'category': 'general', 'key': 'look', 'no_prefix': ' l ex listen examine get feel', '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/2.x/api/evennia.contrib.tutorials.tutorial_world.objects.html b/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.objects.html
index 794c92655f..23d9e8c817 100644
--- a/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.objects.html
+++ b/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.objects.html
@@ -564,7 +564,7 @@ shift green root up/down
@@ -600,7 +600,7 @@ yellow/green - horizontal roots
-
-
search_index_entry = {'aliases': 'push pull shiftroot move', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' push pull shiftroot 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 '}¶
+search_index_entry = {'aliases': 'push pull move shiftroot', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' push pull move shiftroot', '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 '}¶
@@ -787,7 +787,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
aliases = ['chop', 'stab', 'pierce', 'slash', 'bash', 'fight', 'hit', 'parry', 'kill', 'thrust', 'defend']¶
+aliases = ['stab', 'bash', 'kill', 'chop', 'thrust', 'slash', 'fight', 'parry', 'defend', 'hit', 'pierce']¶
@@ -813,7 +813,7 @@ parry - forgoes your attack but will make you harder to hit on next
-
-
search_index_entry = {'aliases': 'chop stab pierce slash bash fight hit parry kill thrust defend', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' chop stab pierce slash bash fight hit parry kill thrust defend', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶
+search_index_entry = {'aliases': 'stab bash kill chop thrust slash fight parry defend hit pierce', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' stab bash kill chop thrust slash fight parry defend hit pierce', '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/2.x/api/evennia.contrib.tutorials.tutorial_world.rooms.html b/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.rooms.html
index 241a13ecfa..7742fb04fa 100644
--- a/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.rooms.html
+++ b/docs/2.x/api/evennia.contrib.tutorials.tutorial_world.rooms.html
@@ -824,7 +824,7 @@ if they fall off the bridge.
@@ -850,7 +850,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 '}¶
@@ -976,7 +976,7 @@ to find something.
-
-
aliases = ['feel around', 'search', 'l', 'feel', 'fiddle']¶
+aliases = ['l', 'search', 'fiddle', 'feel', 'feel around']¶
@@ -1004,7 +1004,7 @@ random chance of eventually finding a light source.
-
-
search_index_entry = {'aliases': 'feel around search l feel fiddle', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel around search l feel 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 '}¶
+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 '}¶
diff --git a/docs/2.x/api/evennia.contrib.utils.git_integration.git_integration.html b/docs/2.x/api/evennia.contrib.utils.git_integration.git_integration.html
index 052c490a87..aa319d94b0 100644
--- a/docs/2.x/api/evennia.contrib.utils.git_integration.git_integration.html
+++ b/docs/2.x/api/evennia.contrib.utils.git_integration.git_integration.html
@@ -216,7 +216,7 @@ git evennia pull - Pull the latest evennia code.
-
-
directory = '/tmp/tmp_mjire0c/ca218dcdf3d3c350fd394210327e380dce1d0b50/evennia'¶
+directory = '/tmp/tmpa0fxekgt/c756393328c8720378363363f78e8a15973562bf/evennia'¶
@@ -277,7 +277,7 @@ git pull - Pull the latest code from your current branch.
-
-
directory = '/tmp/tmp_mjire0c/ca218dcdf3d3c350fd394210327e380dce1d0b50/evennia/game_template'¶
+directory = '/tmp/tmpa0fxekgt/c756393328c8720378363363f78e8a15973562bf/evennia/game_template'¶
diff --git a/docs/2.x/api/evennia.utils.eveditor.html b/docs/2.x/api/evennia.utils.eveditor.html
index b233e7b492..bdd4096b64 100644
--- a/docs/2.x/api/evennia.utils.eveditor.html
+++ b/docs/2.x/api/evennia.utils.eveditor.html
@@ -344,7 +344,7 @@ indentation.
-
-
aliases = [':f', ':j', ':dw', ':=', ':y', ':UU', ':q!', ':!', ':I', ':i', ':::', ':q', ':uu', ':A', ':wq', ':x', '::', ':echo', ':u', ':dd', ':DD', ':r', ':w', ':', ':h', ':fd', ':<', ':p', ':S', ':>', ':s', ':fi']¶
+aliases = [':p', ':uu', ':S', ':dw', ':A', ':q!', ':>', ':s', ':i', ':', '::', ':I', ':x', ':f', ':<', ':h', ':fi', ':::', ':dd', ':echo', ':=', ':q', ':!', ':fd', ':j', ':r', ':DD', ':y', ':w', ':wq', ':UU', ':u']¶
@@ -372,7 +372,7 @@ efficient presentation.
-
-
search_index_entry = {'aliases': ':f :j :dw := :y :UU :q! :! :I :i ::: :q :uu :A :wq :x :: :echo :u :dd :DD :r :w : :h :fd :< :p :S :> :s :fi', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :f :j :dw := :y :UU :q! :! :I :i ::: :q :uu :A :wq :x :: :echo :u :dd :DD :r :w : :h :fd :< :p :S :> :s :fi', 'tags': '', 'text': '\n Commands for the editor\n '}¶
+search_index_entry = {'aliases': ':p :uu :S :dw :A :q! :> :s :i : :: :I :x :f :< :h :fi ::: :dd :echo := :q :! :fd :j :r :DD :y :w :wq :UU :u', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :p :uu :S :dw :A :q! :> :s :i : :: :I :x :f :< :h :fi ::: :dd :echo := :q :! :fd :j :r :DD :y :w :wq :UU :u', 'tags': '', 'text': '\n Commands for the editor\n '}¶
diff --git a/docs/2.x/api/evennia.utils.evmenu.html b/docs/2.x/api/evennia.utils.evmenu.html
index eb5a86e9f0..be5ccff282 100644
--- a/docs/2.x/api/evennia.utils.evmenu.html
+++ b/docs/2.x/api/evennia.utils.evmenu.html
@@ -939,7 +939,7 @@ single question.
+aliases = ['yes', 'y', 'abort', 'a', 'n', 'no', '__nomatch_command']¶
@@ -965,7 +965,7 @@ single question.
+search_index_entry = {'aliases': 'yes y abort a n no __nomatch_command', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' yes y abort a n no __nomatch_command', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}¶
diff --git a/docs/2.x/api/evennia.utils.evmore.html b/docs/2.x/api/evennia.utils.evmore.html
index f71bc361b7..3c11063ee7 100644
--- a/docs/2.x/api/evennia.utils.evmore.html
+++ b/docs/2.x/api/evennia.utils.evmore.html
@@ -145,7 +145,7 @@ the caller.msg() construct every time the page is updated.
-
-
aliases = ['abort', 'e', 'a', 'top', 'quit', 'p', 'q', 'end', 'previous', 't', 'next', 'n']¶
+aliases = ['top', 'previous', 'abort', 't', 'e', 'a', 'p', 'quit', 'n', 'end', 'next', 'q']¶
@@ -171,7 +171,7 @@ the caller.msg() construct every time the page is updated.
-
-
search_index_entry = {'aliases': 'abort e a top quit p q end previous t next n', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' abort e a top quit p q end previous t next n', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
+search_index_entry = {'aliases': 'top previous abort t e a p quit n end next q', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' top previous abort t e a p quit n end next q', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
diff --git a/docs/2.x/objects.inv b/docs/2.x/objects.inv
index dc401fe9301b4fd19c846d9cf6591315a4ea6775..469cafc1e3fe561c3f431eccde27cb1c83a47915 100644
GIT binary patch
delta 103076
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