From 312e3c17df30395becde16cf85a8427e62eba04c Mon Sep 17 00:00:00 2001 From: Evennia docbuilder action Date: Sat, 9 Mar 2024 19:07:54 +0000 Subject: [PATCH] Updated HTML docs. --- docs/latest/.buildinfo | 2 +- docs/latest/Coding/Changelog.html | 16 +++- .../evennia/commands/default/general.html | 10 +-- .../evennia/commands/default/tests.html | 63 ++++++---------- .../full_systems/evscaperoom/tests.html | 2 +- .../game_systems/clothing/clothing.html | 26 ++++--- .../contrib/game_systems/clothing/tests.html | 12 ++- .../contrib/grid/extended_room/tests.html | 43 ++++++----- .../contrib/rpg/rpsystem/rpsystem.html | 26 ++----- .../evennia/contrib/rpg/rpsystem/tests.html | 9 +-- .../_modules/evennia/objects/models.html | 1 - .../_modules/evennia/objects/objects.html | 50 +++++++++++-- docs/latest/_modules/evennia/utils/utils.html | 40 +++++++++- docs/latest/_sources/Coding/Changelog.md.txt | 16 +++- .../api/evennia.commands.default.admin.html | 4 +- .../evennia.commands.default.building.html | 8 +- .../api/evennia.commands.default.comms.html | 4 +- .../api/evennia.commands.default.general.html | 8 +- .../api/evennia.commands.default.tests.html | 2 +- .../evennia.commands.default.unloggedin.html | 8 +- ....base_systems.email_login.email_login.html | 8 +- ...systems.mux_comms_cmds.mux_comms_cmds.html | 4 +- ...rib.full_systems.evscaperoom.commands.html | 24 +++--- ...ontrib.game_systems.clothing.clothing.html | 4 +- ...trib.game_systems.turnbattle.tb_basic.html | 4 +- ...trib.game_systems.turnbattle.tb_equip.html | 4 +- ...trib.game_systems.turnbattle.tb_items.html | 4 +- ...trib.game_systems.turnbattle.tb_magic.html | 4 +- ...trib.game_systems.turnbattle.tb_range.html | 4 +- ...evennia.contrib.grid.xyzgrid.commands.html | 4 +- .../api/evennia.contrib.rpg.dice.dice.html | 4 +- ...evennia.contrib.rpg.rpsystem.rpsystem.html | 4 +- ...utorials.evadventure.combat_turnbased.html | 4 +- ...ontrib.tutorials.evadventure.commands.html | 8 +- ...ntrib.tutorials.red_button.red_button.html | 8 +- ...trib.tutorials.tutorial_world.objects.html | 12 +-- ...ontrib.tutorials.tutorial_world.rooms.html | 4 +- ...utils.git_integration.git_integration.html | 4 +- docs/latest/api/evennia.objects.objects.html | 69 +++++++++++------- docs/latest/api/evennia.utils.eveditor.html | 4 +- docs/latest/api/evennia.utils.evmenu.html | 4 +- docs/latest/api/evennia.utils.evmore.html | 4 +- docs/latest/api/evennia.utils.utils.html | 25 +++++++ docs/latest/genindex.html | 8 +- docs/latest/objects.inv | Bin 166788 -> 166826 bytes docs/latest/searchindex.js | 2 +- 46 files changed, 350 insertions(+), 228 deletions(-) diff --git a/docs/latest/.buildinfo b/docs/latest/.buildinfo index 3c6b4a94d6..154094be19 100644 --- a/docs/latest/.buildinfo +++ b/docs/latest/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: b15f75878d9f056650fee9aaf216f6be +config: 766ba180ed5f7169f6d5777926f50b90 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/latest/Coding/Changelog.html b/docs/latest/Coding/Changelog.html index 4599fd8e48..d48e3be488 100644 --- a/docs/latest/Coding/Changelog.html +++ b/docs/latest/Coding/Changelog.html @@ -194,16 +194,30 @@

Evennia Main branch

diff --git a/docs/latest/_modules/evennia/commands/default/general.html b/docs/latest/_modules/evennia/commands/default/general.html index 7231cb7c32..d021525b0d 100644 --- a/docs/latest/_modules/evennia/commands/default/general.html +++ b/docs/latest/_modules/evennia/commands/default/general.html @@ -93,9 +93,8 @@ """ import re -from django.conf import settings - import evennia +from django.conf import settings from evennia.typeclasses.attributes import NickTemplateInvalid from evennia.utils import utils @@ -460,11 +459,10 @@ from evennia.utils.ansi import raw as raw_ansi table = self.styled_table(border="header") - for item in items: - singular, _ = item.get_numbered_name(1, self.caller) + for key, desc, _ in utils.group_objects_by_key_and_desc(items, caller=self.caller): table.add_row( - f"|C{singular}|n", - "{}|n".format(utils.crop(raw_ansi(item.db.desc or ""), width=50) or ""), + f"|C{key}|n", + "{}|n".format(utils.crop(raw_ansi(desc or ""), width=50) or ""), ) string = f"|wYou are carrying:\n{table}" self.msg(text=(string, {"type": "inventory"})) diff --git a/docs/latest/_modules/evennia/commands/default/tests.html b/docs/latest/_modules/evennia/commands/default/tests.html index 1fd2d9f9f1..994ec81b88 100644 --- a/docs/latest/_modules/evennia/commands/default/tests.html +++ b/docs/latest/_modules/evennia/commands/default/tests.html @@ -104,13 +104,10 @@ import datetime from unittest.mock import MagicMock, Mock, patch +import evennia from anything import Anything from django.conf import settings from django.test import override_settings -from parameterized import parameterized -from twisted.internet import task - -import evennia from evennia import ( DefaultCharacter, DefaultExit, @@ -122,14 +119,7 @@ from evennia.commands import cmdparser from evennia.commands.cmdset import CmdSet from evennia.commands.command import Command, InterruptCommand -from evennia.commands.default import ( - account, - admin, - batchprocess, - building, - comms, - general, -) +from evennia.commands.default import account, admin, batchprocess, building, comms, general from evennia.commands.default import help as help_module from evennia.commands.default import syscommands, system, unloggedin from evennia.commands.default.cmdset_character import CharacterCmdSet @@ -138,6 +128,8 @@ from evennia.utils import create, gametime, utils from evennia.utils.test_resources import BaseEvenniaCommandTest # noqa from evennia.utils.test_resources import BaseEvenniaTest, EvenniaCommandTest +from parameterized import parameterized +from twisted.internet import task # ------------------------------------------------------------ # Command testing @@ -206,13 +198,13 @@ self.call(general.CmdNick(), "/list", "Defined Nicks:")
[docs] def test_get_and_drop(self): - self.call(general.CmdGet(), "Obj", "You pick up an Obj.") - self.call(general.CmdDrop(), "Obj", "You drop an Obj.")
+ self.call(general.CmdGet(), "Obj", "You pick up an Obj") + self.call(general.CmdDrop(), "Obj", "You drop an Obj")
[docs] def test_give(self): self.call(general.CmdGive(), "Obj to Char2", "You aren't carrying Obj.") self.call(general.CmdGive(), "Obj = Char2", "You aren't carrying Obj.") - self.call(general.CmdGet(), "Obj", "You pick up an Obj.") + self.call(general.CmdGet(), "Obj", "You pick up an Obj") self.call(general.CmdGive(), "Obj to Char2", "You give") self.call(general.CmdGive(), "Obj = Char", "You give", caller=self.char2)
@@ -659,7 +651,7 @@ self.call( admin.CmdForce(), "Char2=say test", - 'Char2(#{}) says, "test"|You have forced Char2 to: say test'.format(cid), + 'Char2 says, "test"|You have forced Char2 to: say test', ) @@ -871,17 +863,14 @@ self.call(building.CmdExamine(), "*TestAccount")
[docs] def test_set_obj_alias(self): - oid = self.obj1.id self.call(building.CmdSetObjAlias(), "Obj =", "Cleared aliases from Obj") self.call( - building.CmdSetObjAlias(), - "Obj = TestObj1b", - "Alias(es) for 'Obj(#{})' set to 'testobj1b'.".format(oid), + building.CmdSetObjAlias(), "Obj = TestObj1b", "Alias(es) for 'Obj' set to 'testobj1b'." ) self.call(building.CmdSetObjAlias(), "", "Usage: ") self.call(building.CmdSetObjAlias(), "NotFound =", "Could not find 'NotFound'.") - self.call(building.CmdSetObjAlias(), "Obj", "Aliases for Obj(#{}): 'testobj1b'".format(oid)) + self.call(building.CmdSetObjAlias(), "Obj", "Aliases for Obj: 'testobj1b'") self.call(building.CmdSetObjAlias(), "Obj2 =", "Cleared aliases from Obj2") self.call(building.CmdSetObjAlias(), "Obj2 =", "No aliases to clear.")
@@ -1318,9 +1307,7 @@
[docs] def test_desc(self): oid = self.obj2.id - self.call( - building.CmdDesc(), "Obj2=TestDesc", "The description was set on Obj2(#{}).".format(oid) - ) + self.call(building.CmdDesc(), "Obj2=TestDesc", "The description was set on Obj2.") self.call(building.CmdDesc(), "", "Usage: ") with patch("evennia.commands.default.building.EvEditor") as mock_ed: @@ -1341,7 +1328,7 @@ oid = self.obj2.id o2d = self.obj2.db.desc r1d = self.room1.db.desc - self.call(building.CmdDesc(), "Obj2=", "The description was set on Obj2(#{}).".format(oid)) + self.call(building.CmdDesc(), "Obj2=", "The description was set on Obj2.") assert self.obj2.db.desc == "" and self.obj2.db.desc != o2d assert self.room1.db.desc == r1d
@@ -1350,7 +1337,7 @@ rid = self.room1.id o2d = self.obj2.db.desc r1d = self.room1.db.desc - self.call(building.CmdDesc(), "Obj2", "The description was set on Room(#{}).".format(rid)) + self.call(building.CmdDesc(), "Obj2", "The description was set on Room.") assert self.obj2.db.desc == o2d assert self.room1.db.desc == "Obj2" and self.room1.db.desc != r1d @@ -1373,16 +1360,11 @@ building.CmdDestroy(), settings.DEFAULT_HOME, "You are trying to delete" ) # DEFAULT_HOME should not be deleted self.char2.location = self.room2 - charid = self.char2.id - room1id = self.room1.id - room2id = self.room2.id self.call( building.CmdDestroy(), self.room2.dbref, - "Char2(#{}) arrives to Room(#{}) from Room2(#{}).|Room2 was destroyed.".format( - charid, room1id, room2id - ), - ) + "Char2 arrives to Room from Room2.|Room2 was destroyed.", + ), building.CmdDestroy.confirm = confirm
[docs] def test_destroy_sequence(self): @@ -1730,9 +1712,6 @@ self.assertFalse(script3.pk)
[docs] def test_teleport(self): - oid = self.obj1.id - rid = self.room1.id - rid2 = self.room2.id self.call(building.CmdTeleport(), "", "Usage: ") self.call(building.CmdTeleport(), "Obj = Room", "Obj is already at Room.") self.call( @@ -1743,9 +1722,7 @@ self.call( building.CmdTeleport(), "Obj = Room2", - "Obj(#{}) is leaving Room(#{}), heading for Room2(#{}).|Teleported Obj -> Room2.".format( - oid, rid, rid2 - ), + "Obj is leaving Room, heading for Room2.|Teleported Obj -> Room2.", ) self.call(building.CmdTeleport(), "NotFound = Room", "Could not find 'NotFound'.") self.call( @@ -1753,7 +1730,7 @@ ) self.call(building.CmdTeleport(), "/tonone Obj2", "Teleported Obj2 -> None-location.") - self.call(building.CmdTeleport(), "/quiet Room2", "Room2(#{})".format(rid2)) + self.call(building.CmdTeleport(), "/quiet Room2", "Room2") self.call( building.CmdTeleport(), "/t", # /t switch is abbreviated form of /tonone @@ -1867,7 +1844,8 @@ self.call( building.CmdSpawn(), "{'prototype_key':'GOBLIN', 'typeclass':'evennia.objects.objects.DefaultCharacter', " - "'key':'goblin', 'location':'%s'}" % spawnLoc.dbref, + "'key':'goblin', 'location':'%s'}" + % spawnLoc.dbref, "Spawned goblin", ) goblin = get_object(self, "goblin") @@ -1915,7 +1893,8 @@ self.call( building.CmdSpawn(), "/noloc {'prototype_parent':'TESTBALL', 'key': 'Ball', 'prototype_key': 'foo'," - " 'location':'%s'}" % spawnLoc.dbref, + " 'location':'%s'}" + % spawnLoc.dbref, "Spawned Ball", ) ball = get_object(self, "Ball") diff --git a/docs/latest/_modules/evennia/contrib/full_systems/evscaperoom/tests.html b/docs/latest/_modules/evennia/contrib/full_systems/evscaperoom/tests.html index 9a7c9e390f..80e1810f19 100644 --- a/docs/latest/_modules/evennia/contrib/full_systems/evscaperoom/tests.html +++ b/docs/latest/_modules/evennia/contrib/full_systems/evscaperoom/tests.html @@ -273,7 +273,7 @@ self.call( commands.CmdEmote(), "/me smiles to /obj", - f"Char(#{self.char1.id}) smiles to Obj(#{self.obj1.id})", + f"Char smiles to Obj.", )
[docs] def test_focus_interaction(self): diff --git a/docs/latest/_modules/evennia/contrib/game_systems/clothing/clothing.html b/docs/latest/_modules/evennia/contrib/game_systems/clothing/clothing.html index 250c9dba24..cae6bdefa5 100644 --- a/docs/latest/_modules/evennia/contrib/game_systems/clothing/clothing.html +++ b/docs/latest/_modules/evennia/contrib/game_systems/clothing/clothing.html @@ -167,7 +167,15 @@ from django.conf import settings from evennia import DefaultCharacter, DefaultObject, default_cmds from evennia.commands.default.muxcommand import MuxCommand -from evennia.utils import at_search_result, crop, evtable, inherits_from, int2str, iter_to_str +from evennia.utils import ( + at_search_result, + crop, + evtable, + group_objects_by_key_and_desc, + inherits_from, + int2str, + iter_to_str, +) from evennia.utils.ansi import raw as raw_ansi # Options start here. @@ -750,11 +758,10 @@ carried = [obj for obj in items if not obj.db.worn] carry_table = self.styled_table(border="header") - for item in carried: - singular, _ = item.get_numbered_name(1, self.caller) + for key, desc, _ in group_objects_by_key_and_desc(carried, caller=self.caller): carry_table.add_row( - f"{singular}|n", - "{}|n".format(crop(raw_ansi(item.db.desc or ""), width=50) or ""), + f"{key}|n", + "{}|n".format(crop(raw_ansi(desc or ""), width=50) or ""), ) message_list.extend( ["|wYou are carrying:|n", str(carry_table) if carry_table.nrows > 0 else " Nothing."] @@ -764,18 +771,17 @@ worn = [obj for obj in items if obj.db.worn] wear_table = self.styled_table(border="header") - for item in worn: - singular, _ = item.get_numbered_name(1, self.caller) + for key, desc, _ in group_objects_by_key_and_desc(worn, caller=self.caller): wear_table.add_row( - f"{singular}|n", - "{}|n".format(crop(raw_ansi(item.db.desc or ""), width=50) or ""), + f"{key}|n", + "{}|n".format(crop(raw_ansi(desc or ""), width=50) or ""), ) message_list.extend( ["You are wearing:|n", str(wear_table) if wear_table.nrows > 0 else " Nothing."] ) # return the composite message - self.caller.msg("\n".join(message_list))
+ self.caller.msg(text=("\n".join(message_list), {"type": "inventory"}))
[docs]class ClothedCharacterCmdSet(default_cmds.CharacterCmdSet): diff --git a/docs/latest/_modules/evennia/contrib/game_systems/clothing/tests.html b/docs/latest/_modules/evennia/contrib/game_systems/clothing/tests.html index a5a6d20dfa..d5924b8b21 100644 --- a/docs/latest/_modules/evennia/contrib/game_systems/clothing/tests.html +++ b/docs/latest/_modules/evennia/contrib/game_systems/clothing/tests.html @@ -109,9 +109,11 @@ self.wearer.location = self.room # Make a test hat self.test_hat = create_object(clothing.ContribClothing, key="test hat") + self.test_hat.db.desc = "A test hat." self.test_hat.db.clothing_type = "hat" # Make a test scarf self.test_scarf = create_object(clothing.ContribClothing, key="test scarf") + self.test_scarf.db.desc = "A test scarf." self.test_scarf.db.clothing_type = "accessory"
[docs] def test_clothingcommands(self): @@ -130,7 +132,10 @@ self.call( clothing.CmdInventory(), "", - "You are carrying:\n a test scarf \n a test hat \nYou are wearing:\n Nothing.", + ( + "You are carrying:\n a test hat A test hat. \n a test scarf A test" + " scarf. \nYou are wearing:\n Nothing." + ), caller=self.wearer, use_assertequal=True, ) @@ -161,7 +166,10 @@ self.call( clothing.CmdInventory(), "", - "You are carrying:\n Nothing.\nYou are wearing:\n a test scarf \n a test hat ", + ( + "You are carrying:\n Nothing.\nYou are wearing:\n a test hat A test hat. \n" + " a test scarf A test scarf. " + ), caller=self.wearer, use_assertequal=True, ) diff --git a/docs/latest/_modules/evennia/contrib/grid/extended_room/tests.html b/docs/latest/_modules/evennia/contrib/grid/extended_room/tests.html index 7f0d0b8d78..f9f38324c7 100644 --- a/docs/latest/_modules/evennia/contrib/grid/extended_room/tests.html +++ b/docs/latest/_modules/evennia/contrib/grid/extended_room/tests.html @@ -96,11 +96,10 @@ import datetime from django.conf import settings -from mock import Mock, patch -from parameterized import parameterized - from evennia import create_object from evennia.utils.test_resources import BaseEvenniaCommandTest, EvenniaTestCase +from mock import Mock, patch +from parameterized import parameterized from . import extended_room @@ -285,7 +284,7 @@ extended_room.CmdExtendedRoomDesc(), "", f""" -Room Room(#{self.room1.id}) Season: autumn. Time: afternoon. States: None +Room Room Season: autumn. Time: afternoon. States: None Room state (default) (active): Base room description. @@ -308,7 +307,7 @@ extended_room.CmdExtendedRoomDesc(), "", f""" -Room Room(#{self.room1.id}) Season: autumn. Time: afternoon. States: None +Room Room Season: autumn. Time: afternoon. States: None Room state burning: Burning description. @@ -325,8 +324,10 @@ self.call( extended_room.CmdExtendedRoomDesc(), "/del/burning/spring", - "The burning-description was deleted, if it existed.|The spring-description was" - " deleted, if it existed", + ( + "The burning-description was deleted, if it existed.|The spring-description was" + " deleted, if it existed" + ), ) # add autumn, which should be active self.call( @@ -338,7 +339,7 @@ extended_room.CmdExtendedRoomDesc(), "", f""" -Room Room(#{self.room1.id}) Season: autumn. Time: afternoon. States: None +Room Room Season: autumn. Time: afternoon. States: None Room state autumn (active): Autumn description. @@ -375,9 +376,9 @@ self.call( extended_room.CmdExtendedRoomDetail(), "", - f""" -The room Room(#{self.room1.id}) doesn't have any details. - """.strip(), + """ +The room Room doesn't have any details. + """.strip(), )
[docs] @patch("evennia.utils.gametime.gametime") @@ -396,7 +397,7 @@ self.call( extended_room.CmdExtendedRoomState(), "", - f"Room states (not counting automatic time/season) on Room(#{self.room1.id}):\n None", + "Room states (not counting automatic time/season) on Room:\n None", ) # add room states @@ -413,8 +414,7 @@ self.call( extended_room.CmdExtendedRoomState(), "", - f"Room states (not counting automatic time/season) on Room(#{self.room1.id}):\n " - "'burning' and 'windy'", + f"Room states (not counting automatic time/season) on Room:\n 'burning' and 'windy'", ) # toggle windy self.call( @@ -425,8 +425,7 @@ self.call( extended_room.CmdExtendedRoomState(), "", - f"Room states (not counting automatic time/season) on Room(#{self.room1.id}):\n " - "'burning'", + f"Room states (not counting automatic time/season) on Room:\n 'burning'", ) # add a autumn state and make sure we override it self.room1.add_desc("Autumn description.", room_state="autumn") @@ -477,15 +476,19 @@ self.call( extended_room.CmdExtendedRoomLook(), "", - f"Room(#{self.room1.id})\nThis is a nice autumnal forest. The afternoon sun is" - " shining through the trees.", + ( + f"Room(#{self.room1.id})\nThis is a nice autumnal forest. The afternoon sun is" + " shining through the trees." + ), ) self.room1.add_room_state("burning") self.call( extended_room.CmdExtendedRoomLook(), "", - f"Room(#{self.room1.id})\nThis is a nice autumnal forest. The afternoon sun is" - " shining through the trees and this place is on fire!", + ( + f"Room(#{self.room1.id})\nThis is a nice autumnal forest. The afternoon sun is" + " shining through the trees and this place is on fire!" + ), )
diff --git a/docs/latest/_modules/evennia/contrib/rpg/rpsystem/rpsystem.html b/docs/latest/_modules/evennia/contrib/rpg/rpsystem/rpsystem.html index 36a6a6a7f3..096ddbc8d9 100644 --- a/docs/latest/_modules/evennia/contrib/rpg/rpsystem/rpsystem.html +++ b/docs/latest/_modules/evennia/contrib/rpg/rpsystem/rpsystem.html @@ -244,18 +244,12 @@ import inflect from django.conf import settings - from evennia.commands.cmdset import CmdSet from evennia.commands.command import Command from evennia.objects.models import ObjectDB from evennia.objects.objects import DefaultCharacter, DefaultObject from evennia.utils import ansi, logger -from evennia.utils.utils import ( - iter_to_str, - lazy_property, - make_iter, - variable_from_module, -) +from evennia.utils.utils import iter_to_str, lazy_property, make_iter, variable_from_module _INFLECT = inflect.engine() @@ -1433,13 +1427,15 @@ # in eventual error reporting later (not their keys). Doing # it like this e.g. allows for use of the typeclass kwarg # limiter. - results.extend([obj for obj in search_obj(candidate.key) if obj not in results]) + results.extend( + [obj for obj in search_obj(candidate.key, **kwargs) if obj not in results] + ) if not results and is_builder: - # builders get a chance to search only by key+alias - results = search_obj(searchdata, candidates=candidates, **kwargs) + # builders get to do a global search by key+alias + results = search_obj(searchdata, **kwargs) else: - # global searches / #drefs end up here. Global searches are + # global searches with #drefs end up here. Global searches are # only done in code, so is controlled, #dbrefs are turned off # for non-Builders. results = search_obj(searchdata, **kwargs) @@ -1499,10 +1495,6 @@ # use own sdesc as a fallback sdesc = self.sdesc.get() - # add dbref is looker has control access and `noid` is not set - if self.access(looker, access_type="control") and not kwargs.get("noid", False): - sdesc = f"{sdesc}(#{self.id})" - return self.get_posed_sdesc(sdesc) if kwargs.get("pose", False) else sdesc
[docs] def get_display_characters(self, looker, pose=True, **kwargs): @@ -1635,10 +1627,6 @@ # use own sdesc as a fallback sdesc = self.sdesc.get() - # add dbref is looker has control access and `noid` is not set - if self.access(looker, access_type="control") and not kwargs.get("noid", False): - sdesc = f"{sdesc}(#{self.id})" - return self.get_posed_sdesc(sdesc) if kwargs.get("pose", False) else sdesc
[docs] def at_object_creation(self): diff --git a/docs/latest/_modules/evennia/contrib/rpg/rpsystem/tests.html b/docs/latest/_modules/evennia/contrib/rpg/rpsystem/tests.html index 6b2626f6b5..36c2b57400 100644 --- a/docs/latest/_modules/evennia/contrib/rpg/rpsystem/tests.html +++ b/docs/latest/_modules/evennia/contrib/rpg/rpsystem/tests.html @@ -95,7 +95,6 @@ import time from anything import Anything - from evennia import DefaultObject, create_object, default_cmds from evennia.commands.default.tests import BaseEvenniaCommandTest from evennia.utils.test_resources import BaseEvenniaTest @@ -504,16 +503,16 @@ expected_first_call = [ "More than one match for 'Mushroom' (please narrow target):", - f" Mushroom({mushroom1.dbref})-1 []", - f" Mushroom({mushroom2.dbref})-2 []", + f" Mushroom-1 []", + f" Mushroom-2 []", ] self.call(default_cmds.CmdLook(), "Mushroom", "\n".join(expected_first_call)) # PASSES - expected_second_call = f"Mushroom({mushroom1.dbref})\nThe first mushroom is brown." + expected_second_call = f"Mushroom(#{mushroom1.id})\nThe first mushroom is brown." self.call(default_cmds.CmdLook(), "Mushroom-1", expected_second_call) # FAILS - expected_third_call = f"Mushroom({mushroom2.dbref})\nThe second mushroom is red." + expected_third_call = f"Mushroom(#{mushroom2.id})\nThe second mushroom is red." self.call(default_cmds.CmdLook(), "Mushroom-2", expected_third_call) # FAILS
diff --git a/docs/latest/_modules/evennia/objects/models.html b/docs/latest/_modules/evennia/objects/models.html index 334d1031ae..cd6b9b192a 100644 --- a/docs/latest/_modules/evennia/objects/models.html +++ b/docs/latest/_modules/evennia/objects/models.html @@ -109,7 +109,6 @@ from django.core.exceptions import ObjectDoesNotExist from django.core.validators import validate_comma_separated_integer_list from django.db import models - from evennia.objects.manager import ObjectDBManager from evennia.typeclasses.models import TypedObject from evennia.utils import logger diff --git a/docs/latest/_modules/evennia/objects/objects.html b/docs/latest/_modules/evennia/objects/objects.html index d24d502e72..350ee20fed 100644 --- a/docs/latest/_modules/evennia/objects/objects.html +++ b/docs/latest/_modules/evennia/objects/objects.html @@ -309,7 +309,7 @@ # populated by `return_appearance` appearance_template = """ {header} -|c{name}|n +|c{name}{extra_name_info}|n {desc} {exits}{characters}{things} {footer} @@ -406,7 +406,7 @@ "obj.location to move an object here.".format(self.__class__) ) - contents = property(contents_get, contents_set, contents_set) + contents = property(contents_get, contents_set, contents_set, contents_set) @property def exits(self): @@ -917,6 +917,16 @@ for session in sessions: session.data_out(**kwargs) +
[docs] def get_contents_unique(self, caller=None): + """ + Get a mapping of contents that are visually unique to the caller, along with + how many of each there are. + + Args: + caller (Object, optional): The object to check visibility from. If not given, + the current object will be used. + """
+
[docs] def for_contents(self, func, exclude=None, **kwargs): """ Runs a function on every object contained within this one. @@ -1526,10 +1536,28 @@ and is expected to produce something useful for builders. """ - if looker and self.locks.check_lockstring(looker, "perm(Builder)"): - return "{}(#{})".format(self.name, self.id) return self.name
+
[docs] def get_extra_display_name_info(self, looker=None, **kwargs): + """ + Adds any extra display information to the object's name. By default this is is the + object's dbref in parentheses, if the looker has permission to see it. + + Args: + looker (Object): The object looking at this object. + + Returns: + str: The dbref of this object, if the looker has permission to see it. Otherwise, an + empty string is returned. + + Notes: + By default, this becomes a string (#dbref) attached to the object's name. + + """ + if looker and self.locks.check_lockstring(looker, "perm(Builder)"): + return f"(#{self.id})" + return ""
+
[docs] def get_numbered_name(self, count, looker, **kwargs): """ Return the numbered (singular, plural) forms of this object's key. This is by default called @@ -1543,8 +1571,10 @@ looker (Object): Onlooker. Not used by default. Keyword Args: - key (str): Optional key to pluralize. If not given, the object's `.name` property is - used. + key (str): Optional key to pluralize. If not given, the object's `.get_display_name()` + method is used. + return_string (bool): If `True`, return only the singular form if count is 0,1 or + the plural form otherwise. If `False` (default), return both forms as a tuple. Returns: tuple: This is a tuple `(str, str)` with the singular and plural forms of the key @@ -1556,7 +1586,8 @@ """ plural_category = "plural_key" - key = kwargs.get("key", self.name) + key = kwargs.get("key", self.get_display_name(looker)) + raw_key = self.name key = ansi.ANSIString(key) # this is needed to allow inflection of colored names try: plural = _INFLECT.plural(key, count) @@ -1572,6 +1603,10 @@ # save the singular form as an alias here too so we can display "an egg" and also # look at 'an egg'. self.aliases.add(singular, category=plural_category) + + if kwargs.get("return_string"): + return singular if count in (0, 1) else plural + return singular, plural
[docs] def get_display_header(self, looker, **kwargs): @@ -1735,6 +1770,7 @@ return self.format_appearance( self.appearance_template.format( name=self.get_display_name(looker, **kwargs), + extra_name_info=self.get_extra_display_name_info(looker, **kwargs), desc=self.get_display_desc(looker, **kwargs), header=self.get_display_header(looker, **kwargs), footer=self.get_display_footer(looker, **kwargs), diff --git a/docs/latest/_modules/evennia/utils/utils.html b/docs/latest/_modules/evennia/utils/utils.html index d85a87e539..b849e00372 100644 --- a/docs/latest/_modules/evennia/utils/utils.html +++ b/docs/latest/_modules/evennia/utils/utils.html @@ -118,6 +118,7 @@ from string import punctuation from unicodedata import east_asian_width +import evennia from django.apps import apps from django.conf import settings from django.core.exceptions import ValidationError as DjangoValidationError @@ -125,14 +126,12 @@ from django.utils import timezone from django.utils.html import strip_tags from django.utils.translation import gettext as _ +from evennia.utils import logger from simpleeval import simple_eval from twisted.internet import reactor, threads from twisted.internet.defer import returnValue # noqa - used as import target from twisted.internet.task import deferLater -import evennia -from evennia.utils import logger - _MULTIMATCH_TEMPLATE = settings.SEARCH_MULTIMATCH_TEMPLATE _EVENNIA_DIR = settings.EVENNIA_DIR _GAME_DIR = settings.GAME_DIR @@ -1857,6 +1856,41 @@ return []
+
[docs]def group_objects_by_key_and_desc(objects, caller=None, **kwargs): + """ + Groups a list of objects by their key and description. This is used to group + visibly identical objects together, for example for inventory listings. + + Args: + objects (list): A list of objects to group. These must be DefaultObject. + + caller (Object, optional): The object looking at the objects, used to get the + description and key of each object. + **kwargs: Passed into each object's `get_display_name/desc` methods. + + Returns: + iterable: An iterable of tuples, where each tuple is on the form + `(numbered_name, description, [objects])`. + + """ + key_descs = defaultdict(list) + return_string = kwargs.pop("return_string", True) + + for obj in objects: + key_descs[ + (obj.get_display_name(caller, **kwargs), obj.get_display_desc(caller, **kwargs)) + ].append(obj) + + return ( + ( + objs[0].get_numbered_name(len(objs), caller, return_string=return_string, **kwargs), + desc, + objs, + ) + for (key, desc), objs in sorted(key_descs.items(), key=lambda tup: tup[0][0]) + )
+ +
[docs]def format_table(table, extra_space=1): """ Format a 2D array of strings into a multi-column table. diff --git a/docs/latest/_sources/Coding/Changelog.md.txt b/docs/latest/_sources/Coding/Changelog.md.txt index 41dc92cb29..91ab4540b6 100644 --- a/docs/latest/_sources/Coding/Changelog.md.txt +++ b/docs/latest/_sources/Coding/Changelog.md.txt @@ -2,16 +2,30 @@ ## Evennia Main branch +- Feature: *Backwards incompatible*: `DefaultObject.get_numbered_name` now gets object's + name via `.get_display_name` for better compatibility with recog systems. +- Feature: *Backwards incompatible*: Removed the (#dbref) display from + `DefaultObject.get_display_name`, instead using new `.get_extra_display_name_info` + method for getting this info. The Object's display template was extended for + optionally adding this information. This makes showing extra object info to + admins an explicit action and opens up `get_display_name` for general use. - Feature: Add `ON_DEMAND_HANDLER.set_dt(key, category, dt)` and `.set_stage(key, category, stage)` to allow manual tweaking of task timings, for example for a spell speeding a plant's growth (Griatch) - Feature: Add `use_assertequal` kwarg to the `EvenniaCommandTestMixin` testing class; this uses django's `assertEqual` over the default more lenient checker, which can be useful for testing table whitespace (Griatch) +- Feature: New `utils.group_objects_by_key_and_desc` for grouping a list of + objects based on the visible key and desc. Useful for inventory listings (Griatch) +- Feature: Add `DefaultObject.get_numbered_name` `return_string` bool kwarg, for only + returning singular/plural based on count instead of a tuple with both (Griatch) +- Fix: `DefaultObject.get_numbered_name` used `.name` instead of + `.get_display_name` which broke recog systems. May lead to object's #dbref + will show for admins in some more places (Griatch) - [Fix][pull3420]: Refactor Clothing contrib's inventory command align with Evennia core's version (michaelfaith84, Griatch) - Fix: Resolve a bug when loading on-demand-handler data from database (Griatch) -- Doc fixes (iLPdev, Griatch) +- Doc fixes (iLPdev, Griatch, CloudKeeper) [pull3420]: https://github.com/evennia/evennia/pull/3420 diff --git a/docs/latest/api/evennia.commands.default.admin.html b/docs/latest/api/evennia.commands.default.admin.html index a975cd8d30..db66aa5bd1 100644 --- a/docs/latest/api/evennia.commands.default.admin.html +++ b/docs/latest/api/evennia.commands.default.admin.html @@ -329,7 +329,7 @@ to accounts respectively.

-aliases = ['pemit', 'remit']
+aliases = ['remit', 'pemit']
@@ -360,7 +360,7 @@ to accounts respectively.

-search_index_entry = {'aliases': 'pemit remit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' pemit remit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}
+search_index_entry = {'aliases': 'remit pemit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' remit pemit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}
diff --git a/docs/latest/api/evennia.commands.default.building.html b/docs/latest/api/evennia.commands.default.building.html index 36291d9af8..675e9c320b 100644 --- a/docs/latest/api/evennia.commands.default.building.html +++ b/docs/latest/api/evennia.commands.default.building.html @@ -1409,7 +1409,7 @@ server settings.

-aliases = ['@swap', '@update', '@typeclasses', '@parent', '@type']
+aliases = ['@typeclasses', '@update', '@parent', '@swap', '@type']
@@ -1440,7 +1440,7 @@ server settings.

-search_index_entry = {'aliases': '@swap @update @typeclasses @parent @type', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass swap update typeclasses parent 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 @update @parent @swap @type', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass typeclasses update parent 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 "}
@@ -1902,7 +1902,7 @@ one is given.

-aliases = ['@search', '@locate']
+aliases = ['@locate', '@search']
@@ -1933,7 +1933,7 @@ one is given.

-search_index_entry = {'aliases': '@search @locate', 'category': 'building', 'key': '@find', 'no_prefix': 'find search locate', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}
+search_index_entry = {'aliases': '@locate @search', 'category': 'building', 'key': '@find', 'no_prefix': 'find locate search', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}
diff --git a/docs/latest/api/evennia.commands.default.comms.html b/docs/latest/api/evennia.commands.default.comms.html index fb12b3e155..39be8775a2 100644 --- a/docs/latest/api/evennia.commands.default.comms.html +++ b/docs/latest/api/evennia.commands.default.comms.html @@ -946,7 +946,7 @@ ban mychannel1,mychannel2= EvilUser : Was banned for spamming.

-aliases = ['@chan', '@channels']
+aliases = ['@channels', '@chan']
@@ -966,7 +966,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/latest/api/evennia.commands.default.general.html b/docs/latest/api/evennia.commands.default.general.html index fba14decc7..95b1d15d92 100644 --- a/docs/latest/api/evennia.commands.default.general.html +++ b/docs/latest/api/evennia.commands.default.general.html @@ -280,7 +280,7 @@ for everyone to use, you need build privileges and the alias command.

-aliases = ['nickname', 'nicks']
+aliases = ['nicks', 'nickname']
@@ -312,7 +312,7 @@ for everyone to use, you need build privileges and the alias command.

-search_index_entry = {'aliases': 'nickname nicks', 'category': 'general', 'key': 'nick', 'no_prefix': ' nickname nicks', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}
+search_index_entry = {'aliases': 'nicks nickname', 'category': 'general', 'key': 'nick', 'no_prefix': ' nicks nickname', 'tags': '', 'text': '\n define a personal alias/nick by defining a string to\n match and replace it with another on the fly\n\n Usage:\n nick[/switches] <string> [= [replacement_string]]\n nick[/switches] <template> = <replacement_template>\n nick/delete <string> or number\n nicks\n\n Switches:\n inputline - replace on the inputline (default)\n object - replace on object-lookup\n account - replace on account-lookup\n list - show all defined aliases (also "nicks" works)\n delete - remove nick by index in /list\n clearall - clear all nicks\n\n Examples:\n nick hi = say Hello, I\'m Sarah!\n nick/object tom = the tall man\n nick build $1 $2 = create/drop $1;$2\n nick tell $1 $2=page $1=$2\n nick tm?$1=page tallman=$1\n nick tm\\=$1=page tallman=$1\n\n A \'nick\' is a personal string replacement. Use $1, $2, ... to catch arguments.\n Put the last $-marker without an ending space to catch all remaining text. You\n can also use unix-glob matching for the left-hand side <string>:\n\n * - matches everything\n ? - matches 0 or 1 single characters\n [abcd] - matches these chars in any order\n [!abcd] - matches everything not among these chars\n \\= - escape literal \'=\' you want in your <string>\n\n Note that no objects are actually renamed or changed by this command - your nicks\n are only available to you. If you want to permanently add keywords to an object\n for everyone to use, you need build privileges and the alias command.\n\n '}
@@ -335,7 +335,7 @@ inv

-aliases = ['inv', 'i']
+aliases = ['i', 'inv']
@@ -366,7 +366,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/latest/api/evennia.commands.default.tests.html b/docs/latest/api/evennia.commands.default.tests.html index dcb009f2f5..333e30ae82 100644 --- a/docs/latest/api/evennia.commands.default.tests.html +++ b/docs/latest/api/evennia.commands.default.tests.html @@ -973,7 +973,7 @@ main test suite started with

Test the batch processor.

-red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpn2atxgv9/d893cfd46e86ed6d03566f1cfc5cbd72032d466c/evennia/contrib/tutorials/red_button/red_button.py'>
+red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmp7ygv7scj/cbe3d4c738efb7e94ff9633fc1afb2d5f24c954c/evennia/contrib/tutorials/red_button/red_button.py'>
diff --git a/docs/latest/api/evennia.commands.default.unloggedin.html b/docs/latest/api/evennia.commands.default.unloggedin.html index 081c5f6bf9..14a0747195 100644 --- a/docs/latest/api/evennia.commands.default.unloggedin.html +++ b/docs/latest/api/evennia.commands.default.unloggedin.html @@ -134,7 +134,7 @@ connect “account name” “pass word”

-aliases = ['conn', 'con', 'co']
+aliases = ['co', 'conn', 'con']
@@ -169,7 +169,7 @@ there is no object yet before the account has logged in)

-search_index_entry = {'aliases': 'conn con co', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn con 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': 'co conn con', 'category': 'general', 'key': 'connect', 'no_prefix': ' co conn 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 '}
@@ -304,7 +304,7 @@ All it does is display the connect screen.

-aliases = ['look', 'l']
+aliases = ['l', 'look']
@@ -330,7 +330,7 @@ All it does is display the connect screen.

-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 '}
+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 '}
diff --git a/docs/latest/api/evennia.contrib.base_systems.email_login.email_login.html b/docs/latest/api/evennia.contrib.base_systems.email_login.email_login.html index e6e7b37dc0..6eaa011e72 100644 --- a/docs/latest/api/evennia.contrib.base_systems.email_login.email_login.html +++ b/docs/latest/api/evennia.contrib.base_systems.email_login.email_login.html @@ -151,7 +151,7 @@ the module given by settings.CONNECTION_SCREEN_MODULE.

-aliases = ['conn', 'con', 'co']
+aliases = ['co', 'conn', 'con']
@@ -181,7 +181,7 @@ there is no object yet before the account has logged in)

-search_index_entry = {'aliases': 'conn con co', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn con 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': 'co conn con', 'category': 'general', 'key': 'connect', 'no_prefix': ' co conn 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 '}
@@ -309,7 +309,7 @@ All it does is display the connect screen.

-aliases = ['look', 'l']
+aliases = ['l', 'look']
@@ -335,7 +335,7 @@ All it does is display the connect screen.

-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 '}
+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 '}
diff --git a/docs/latest/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html b/docs/latest/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html index 36c5acf84d..8f20c35672 100644 --- a/docs/latest/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html +++ b/docs/latest/api/evennia.contrib.base_systems.mux_comms_cmds.mux_comms_cmds.html @@ -172,7 +172,7 @@ aliases to an already joined channel.

-aliases = ['aliaschan', 'chanalias']
+aliases = ['chanalias', 'aliaschan']
@@ -203,7 +203,7 @@ aliases to an already joined channel.

-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 '}
+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 '}
diff --git a/docs/latest/api/evennia.contrib.full_systems.evscaperoom.commands.html b/docs/latest/api/evennia.contrib.full_systems.evscaperoom.commands.html index 0de8f32ae9..d1b6490779 100644 --- a/docs/latest/api/evennia.contrib.full_systems.evscaperoom.commands.html +++ b/docs/latest/api/evennia.contrib.full_systems.evscaperoom.commands.html @@ -223,7 +223,7 @@ the operation will be general or on the room.

-aliases = ['chicken out', 'quit', 'abort', 'q']
+aliases = ['abort', 'chicken out', 'q', 'quit']
@@ -247,7 +247,7 @@ set in self.parse())

-search_index_entry = {'aliases': 'chicken out quit abort q', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' chicken out quit abort 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 '}
+search_index_entry = {'aliases': 'abort chicken out q quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' abort chicken out q 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 '}
@@ -383,7 +383,7 @@ shout

-aliases = ['shout', ';', 'whisper']
+aliases = ['whisper', ';', 'shout']
@@ -412,7 +412,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': '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 '}
@@ -440,7 +440,7 @@ emote /me points to /box and /lever.

-aliases = ['pose', ':']
+aliases = [':', 'pose']
@@ -479,7 +479,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 '}
@@ -502,7 +502,7 @@ looks and what actions is available.

-aliases = ['e', 'unfocus', 'ex', 'examine']
+aliases = ['e', 'ex', 'examine', 'unfocus']
@@ -531,7 +531,7 @@ set in self.parse())

-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 '}
+search_index_entry = {'aliases': 'e ex examine unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' e ex 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 '}
@@ -593,7 +593,7 @@ set in self.parse())

-aliases = ['inv', 'give', 'inventory', 'i']
+aliases = ['give', 'inventory', 'inv', 'i']
@@ -617,7 +617,7 @@ set in self.parse())

-search_index_entry = {'aliases': 'inv give inventory i', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inv give inventory i', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}
+search_index_entry = {'aliases': 'give inventory inv i', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' give inventory inv i', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}
@@ -638,7 +638,7 @@ set in self.parse())

-aliases = ['@dig', '@open']
+aliases = ['@open', '@dig']
@@ -661,7 +661,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/latest/api/evennia.contrib.game_systems.clothing.clothing.html b/docs/latest/api/evennia.contrib.game_systems.clothing.clothing.html index c9c64eb2a6..50be8b27ce 100644 --- a/docs/latest/api/evennia.contrib.game_systems.clothing.clothing.html +++ b/docs/latest/api/evennia.contrib.game_systems.clothing.clothing.html @@ -634,7 +634,7 @@ inv

-aliases = ['inv', 'i']
+aliases = ['i', 'inv']
@@ -665,7 +665,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/latest/api/evennia.contrib.game_systems.turnbattle.tb_basic.html b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_basic.html index 062632c0b1..9adfd36d1a 100644 --- a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_basic.html +++ b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_basic.html @@ -684,7 +684,7 @@ if there are still any actions you can take.

-aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -710,7 +710,7 @@ if there are still any actions you can take.

-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 '}
+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 '}
diff --git a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_equip.html b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_equip.html index 862b0c29e9..b4d3094806 100644 --- a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_equip.html +++ b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_equip.html @@ -579,7 +579,7 @@ if there are still any actions you can take.

-aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -599,7 +599,7 @@ if there are still any actions you can take.

-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 '}
+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 '}
diff --git a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_items.html b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_items.html index 09dab4a90a..5cc91fba32 100644 --- a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_items.html +++ b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_items.html @@ -702,7 +702,7 @@ if there are still any actions you can take.

-aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -722,7 +722,7 @@ if there are still any actions you can take.

-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 '}
+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 '}
diff --git a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_magic.html b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_magic.html index 0421235f60..141a08f0fe 100644 --- a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_magic.html +++ b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_magic.html @@ -481,7 +481,7 @@ if there are still any actions you can take.

-aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -501,7 +501,7 @@ if there are still any actions you can take.

-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 '}
+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 '}
diff --git a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_range.html b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_range.html index ed043f705a..7bb7801b25 100644 --- a/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_range.html +++ b/docs/latest/api/evennia.contrib.game_systems.turnbattle.tb_range.html @@ -941,7 +941,7 @@ if there are still any actions you can take.

-aliases = ['hold', 'wait']
+aliases = ['wait', 'hold']
@@ -961,7 +961,7 @@ if there are still any actions you can take.

-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 '}
+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 '}
diff --git a/docs/latest/api/evennia.contrib.grid.xyzgrid.commands.html b/docs/latest/api/evennia.contrib.grid.xyzgrid.commands.html index b3553eddc2..5be1099b5b 100644 --- a/docs/latest/api/evennia.contrib.grid.xyzgrid.commands.html +++ b/docs/latest/api/evennia.contrib.grid.xyzgrid.commands.html @@ -434,7 +434,7 @@ there is no room above/below you, your movement will fail.

-aliases = ['fly', 'dive']
+aliases = ['dive', 'fly']
@@ -457,7 +457,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/latest/api/evennia.contrib.rpg.dice.dice.html b/docs/latest/api/evennia.contrib.rpg.dice.dice.html index 416482f5c4..d8ecccdc59 100644 --- a/docs/latest/api/evennia.contrib.rpg.dice.dice.html +++ b/docs/latest/api/evennia.contrib.rpg.dice.dice.html @@ -338,7 +338,7 @@ everyone but the person rolling.

-aliases = ['roll', '@dice']
+aliases = ['@dice', 'roll']
@@ -364,7 +364,7 @@ everyone but the person rolling.

-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 "}
+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 "}
diff --git a/docs/latest/api/evennia.contrib.rpg.rpsystem.rpsystem.html b/docs/latest/api/evennia.contrib.rpg.rpsystem.rpsystem.html index cc7df29885..3b96d5c5d4 100644 --- a/docs/latest/api/evennia.contrib.rpg.rpsystem.rpsystem.html +++ b/docs/latest/api/evennia.contrib.rpg.rpsystem.rpsystem.html @@ -906,7 +906,7 @@ Using the command without arguments will list all current recogs.

-aliases = ['forget', 'recognize']
+aliases = ['recognize', 'forget']
@@ -933,7 +933,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/latest/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html b/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html index a1c4fd9b3b..5a93befd2b 100644 --- a/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html +++ b/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_turnbased.html @@ -478,7 +478,7 @@ turn of combat, performing everyone’s actions in random order.

-aliases = ['turnbased combat', 'hit']
+aliases = ['hit', 'turnbased combat']
@@ -524,7 +524,7 @@ set in self.parse())

-search_index_entry = {'aliases': 'turnbased combat hit', 'category': 'general', 'key': 'attack', 'no_prefix': ' turnbased combat hit', 'tags': '', 'text': '\n Start or join combat.\n\n Usage:\n attack [<target>]\n\n '}
+search_index_entry = {'aliases': 'hit turnbased combat', 'category': 'general', 'key': 'attack', 'no_prefix': ' hit turnbased combat', 'tags': '', 'text': '\n Start or join combat.\n\n Usage:\n attack [<target>]\n\n '}
diff --git a/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html b/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html index 23beacf5c5..d7d10e6f65 100644 --- a/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html +++ b/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html @@ -204,7 +204,7 @@ self.args).

-aliases = ['inv', 'i']
+aliases = ['i', 'inv']
@@ -228,7 +228,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 '}
@@ -305,7 +305,7 @@ unwear <item>

-aliases = ['unwield', 'unwear']
+aliases = ['unwear', 'unwield']
@@ -329,7 +329,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/latest/api/evennia.contrib.tutorials.red_button.red_button.html b/docs/latest/api/evennia.contrib.tutorials.red_button.red_button.html index feaca85ad3..730a90b82b 100644 --- a/docs/latest/api/evennia.contrib.tutorials.red_button.red_button.html +++ b/docs/latest/api/evennia.contrib.tutorials.red_button.red_button.html @@ -264,7 +264,7 @@ check if the lid is open or closed.

-aliases = ['break lid', 'smash', 'smash lid']
+aliases = ['break lid', 'smash lid', 'smash']
@@ -291,7 +291,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 '}
+search_index_entry = {'aliases': 'break lid smash lid smash', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' break lid smash lid smash', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}
@@ -518,7 +518,7 @@ be mutually exclusive.

-aliases = ['get', 'feel', 'l', 'ex', 'examine', 'listen']
+aliases = ['ex', 'examine', 'feel', 'listen', 'get', 'l']
@@ -544,7 +544,7 @@ be mutually exclusive.

-search_index_entry = {'aliases': 'get feel l ex examine listen', 'category': 'general', 'key': 'look', 'no_prefix': ' get feel l ex examine listen', 'tags': '', 'text': "\n Looking around in darkness\n\n Usage:\n look <obj>\n\n ... not that there's much to see in the dark.\n\n "}
+search_index_entry = {'aliases': 'ex examine feel listen get l', 'category': 'general', 'key': 'look', 'no_prefix': ' ex examine feel listen get l', '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/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html b/docs/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html index 5d563fc513..c7f3b04d02 100644 --- a/docs/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html +++ b/docs/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html @@ -568,7 +568,7 @@ shift green root up/down

-aliases = ['move', 'pull', 'shiftroot', 'push']
+aliases = ['pull', 'move', 'shiftroot', 'push']
@@ -604,7 +604,7 @@ yellow/green - horizontal roots

-search_index_entry = {'aliases': 'move pull shiftroot push', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' move pull 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': '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 '}
@@ -621,7 +621,7 @@ yellow/green - horizontal roots

-aliases = ['press button', 'push button', 'button']
+aliases = ['push button', 'button', 'press button']
@@ -647,7 +647,7 @@ yellow/green - horizontal roots

-search_index_entry = {'aliases': 'press button push button button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button push button button', 'tags': '', 'text': '\n Presses a button.\n '}
+search_index_entry = {'aliases': 'push button button press button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' push button button press button', 'tags': '', 'text': '\n Presses a button.\n '}
@@ -791,7 +791,7 @@ parry - forgoes your attack but will make you harder to hit on next

-aliases = ['pierce', 'parry', 'chop', 'bash', 'hit', 'kill', 'slash', 'defend', 'fight', 'thrust', 'stab']
+aliases = ['slash', 'pierce', 'bash', 'fight', 'hit', 'parry', 'chop', 'stab', 'kill', 'thrust', 'defend']
@@ -817,7 +817,7 @@ parry - forgoes your attack but will make you harder to hit on next

-search_index_entry = {'aliases': 'pierce parry chop bash hit kill slash defend fight thrust stab', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' pierce parry chop bash hit kill slash defend fight thrust stab', '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': 'slash pierce bash fight hit parry chop stab kill thrust defend', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' slash pierce bash fight hit parry chop stab 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 '}
diff --git a/docs/latest/api/evennia.contrib.tutorials.tutorial_world.rooms.html b/docs/latest/api/evennia.contrib.tutorials.tutorial_world.rooms.html index 2ebab44c1e..125d84798c 100644 --- a/docs/latest/api/evennia.contrib.tutorials.tutorial_world.rooms.html +++ b/docs/latest/api/evennia.contrib.tutorials.tutorial_world.rooms.html @@ -980,7 +980,7 @@ to find something.

-aliases = ['feel', 'search', 'feel around', 'l', 'fiddle']
+aliases = ['search', 'fiddle', 'feel', 'feel around', 'l']
@@ -1008,7 +1008,7 @@ random chance of eventually finding a light source.

-search_index_entry = {'aliases': 'feel search feel around l fiddle', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel search feel around l 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': 'search fiddle feel feel around l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' search fiddle feel feel around l', '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/latest/api/evennia.contrib.utils.git_integration.git_integration.html b/docs/latest/api/evennia.contrib.utils.git_integration.git_integration.html index ed4b06a552..790545d6f3 100644 --- a/docs/latest/api/evennia.contrib.utils.git_integration.git_integration.html +++ b/docs/latest/api/evennia.contrib.utils.git_integration.git_integration.html @@ -220,7 +220,7 @@ git evennia pull - Pull the latest evennia code.

-directory = '/tmp/tmpn2atxgv9/d893cfd46e86ed6d03566f1cfc5cbd72032d466c/evennia'
+directory = '/tmp/tmp7ygv7scj/cbe3d4c738efb7e94ff9633fc1afb2d5f24c954c/evennia'
@@ -281,7 +281,7 @@ git pull - Pull the latest code from your current branch.

-directory = '/tmp/tmpn2atxgv9/d893cfd46e86ed6d03566f1cfc5cbd72032d466c/evennia/game_template'
+directory = '/tmp/tmp7ygv7scj/cbe3d4c738efb7e94ff9633fc1afb2d5f24c954c/evennia/game_template'
diff --git a/docs/latest/api/evennia.objects.objects.html b/docs/latest/api/evennia.objects.objects.html index f807fd3e66..e60f4271be 100644 --- a/docs/latest/api/evennia.objects.objects.html +++ b/docs/latest/api/evennia.objects.objects.html @@ -244,7 +244,7 @@ without obj.save() having to be called explicitly.

-appearance_template = '\n{header}\n|c{name}|n\n{desc}\n{exits}{characters}{things}\n{footer}\n '
+appearance_template = '\n{header}\n|c{name}{extra_name_info}|n\n{desc}\n{exits}{characters}{things}\n{footer}\n '
@@ -329,30 +329,6 @@ and filtering.

You cannot replace this property

-
-
-property contents
-

Returns the contents of this object, i.e. all -objects that has this object set as its location. -This should be publically available.

-
-
Parameters
-
    -
  • exclude (Object) – Object to exclude from returned -contents list

  • -
  • content_type (str) – A content_type to filter by. None for no -filtering.

  • -
-
-
Returns
-

contents (list) – List of contents of this Object.

-
-
-

Notes

-

Also available as the contents property, minus exclusion -and filtering.

-
-
property exits
@@ -691,6 +667,19 @@ will be treated as send-command names and their arguments All extra kwargs will be passed on to the protocol.

+
+
+get_contents_unique(caller=None)[source]
+

Get a mapping of contents that are visually unique to the caller, along with +how many of each there are.

+
+
Parameters
+

caller (Object, optional) – The object to check visibility from. If not given, +the current object will be used.

+
+
+
+
for_contents(func, exclude=None, **kwargs)[source]
@@ -1009,6 +998,28 @@ but be wary. This function does not change an object’s keys or aliases when se and is expected to produce something useful for builders.

+
+
+get_extra_display_name_info(looker=None, **kwargs)[source]
+

Adds any extra display information to the object’s name. By default this is is the +object’s dbref in parentheses, if the looker has permission to see it.

+
+
Parameters
+

looker (Object) – The object looking at this object.

+
+
Returns
+

str

+
+
The dbref of this object, if the looker has permission to see it. Otherwise, an

empty string is returned.

+
+
+

+
+
+

Notes

+

By default, this becomes a string (#dbref) attached to the object’s name.

+
+
get_numbered_name(count, looker, **kwargs)[source]
@@ -1025,8 +1036,12 @@ from this method.

Keyword Arguments
-

key (str) – Optional key to pluralize. If not given, the object’s .name property is -used.

+
    +
  • key (str) – Optional key to pluralize. If not given, the object’s .get_display_name() +method is used.

  • +
  • return_string (bool) – If True, return only the singular form if count is 0,1 or +the plural form otherwise. If False (default), return both forms as a tuple.

  • +
Returns

tuple

diff --git a/docs/latest/api/evennia.utils.eveditor.html b/docs/latest/api/evennia.utils.eveditor.html index d43ea7f812..2ef95b805f 100644 --- a/docs/latest/api/evennia.utils.eveditor.html +++ b/docs/latest/api/evennia.utils.eveditor.html @@ -348,7 +348,7 @@ indentation.

-aliases = [':h', ':fd', ':q!', ':s', ':i', ':j', ':=', ':dw', ':y', ':::', ':f', ':u', ':<', ':q', ':I', ':uu', ':', ':w', ':fi', ':p', ':r', ':S', ':>', ':UU', ':DD', '::', ':echo', ':wq', ':dd', ':A', ':!', ':x']
+aliases = [':dd', ':A', ':=', ':fi', ':', ':i', ':DD', ':u', ':!', ':echo', ':w', ':<', ':r', ':>', ':j', ':y', ':f', ':p', '::', ':fd', ':x', ':q!', ':wq', ':s', ':h', ':q', ':S', ':::', ':dw', ':uu', ':UU', ':I']
@@ -376,7 +376,7 @@ efficient presentation.

-search_index_entry = {'aliases': ':h :fd :q! :s :i :j := :dw :y ::: :f :u :< :q :I :uu : :w :fi :p :r :S :> :UU :DD :: :echo :wq :dd :A :! :x', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :h :fd :q! :s :i :j := :dw :y ::: :f :u :< :q :I :uu : :w :fi :p :r :S :> :UU :DD :: :echo :wq :dd :A :! :x', 'tags': '', 'text': '\n Commands for the editor\n '}
+search_index_entry = {'aliases': ':dd :A := :fi : :i :DD :u :! :echo :w :< :r :> :j :y :f :p :: :fd :x :q! :wq :s :h :q :S ::: :dw :uu :UU :I', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :dd :A := :fi : :i :DD :u :! :echo :w :< :r :> :j :y :f :p :: :fd :x :q! :wq :s :h :q :S ::: :dw :uu :UU :I', 'tags': '', 'text': '\n Commands for the editor\n '}
diff --git a/docs/latest/api/evennia.utils.evmenu.html b/docs/latest/api/evennia.utils.evmenu.html index d4e2725144..f89814fa95 100644 --- a/docs/latest/api/evennia.utils.evmenu.html +++ b/docs/latest/api/evennia.utils.evmenu.html @@ -951,7 +951,7 @@ single question.

-aliases = ['y', 'a', 'yes', 'abort', '__nomatch_command', 'n', 'no']
+aliases = ['no', 'a', 'y', 'abort', 'n', '__nomatch_command', 'yes']
@@ -977,7 +977,7 @@ single question.

-search_index_entry = {'aliases': 'y a yes abort __nomatch_command n no', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' y a yes abort __nomatch_command n no', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}
+search_index_entry = {'aliases': 'no a y abort n __nomatch_command yes', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' no a y abort n __nomatch_command yes', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}
diff --git a/docs/latest/api/evennia.utils.evmore.html b/docs/latest/api/evennia.utils.evmore.html index eafd3fbcc8..c6a538e321 100644 --- a/docs/latest/api/evennia.utils.evmore.html +++ b/docs/latest/api/evennia.utils.evmore.html @@ -149,7 +149,7 @@ the caller.msg() construct every time the page is updated.

-aliases = ['end', 'e', 'a', 'previous', 'quit', 'next', 'p', 't', 'n', 'top', 'abort', 'q']
+aliases = ['t', 'a', 'next', 'top', 'end', 'abort', 'q', 'n', 'p', 'previous', 'e', 'quit']
@@ -175,7 +175,7 @@ the caller.msg() construct every time the page is updated.

-search_index_entry = {'aliases': 'end e a previous quit next p t n top abort q', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' end e a previous quit next p t n top abort q', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}
+search_index_entry = {'aliases': 't a next top end abort q n p previous e quit', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' t a next top end abort q n p previous e quit', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}
diff --git a/docs/latest/api/evennia.utils.utils.html b/docs/latest/api/evennia.utils.utils.html index 6a2ee6a7b9..5a0eaaf684 100644 --- a/docs/latest/api/evennia.utils.utils.html +++ b/docs/latest/api/evennia.utils.utils.html @@ -1248,6 +1248,31 @@ array) instead of strings.

+
+
+evennia.utils.utils.group_objects_by_key_and_desc(objects, caller=None, **kwargs)[source]
+

Groups a list of objects by their key and description. This is used to group +visibly identical objects together, for example for inventory listings.

+
+
Parameters
+
    +
  • objects (list) – A list of objects to group. These must be DefaultObject.

  • +
  • caller (Object, optional) – The object looking at the objects, used to get the +description and key of each object.

  • +
  • **kwargs – Passed into each object’s get_display_name/desc methods.

  • +
+
+
Returns
+

iterable

+
+
An iterable of tuples, where each tuple is on the form

(numbered_name, description, [objects]).

+
+
+

+
+
+
+
evennia.utils.utils.format_table(table, extra_space=1)[source]
diff --git a/docs/latest/genindex.html b/docs/latest/genindex.html index aeb0713923..bb0a5ca5db 100644 --- a/docs/latest/genindex.html +++ b/docs/latest/genindex.html @@ -4698,8 +4698,6 @@
  • consume_on_fail (evennia.contrib.game_systems.crafting.crafting.CraftingRecipe attribute)
  • Container (class in evennia.utils.containers) -
  • -
  • contents() (evennia.objects.objects.DefaultObject property)
  • contents_cache (evennia.objects.models.ObjectDB attribute)
  • @@ -10634,6 +10632,8 @@
  • (evennia.web.api.serializers.ObjectDBSerializer static method)
  • +
  • get_contents_unique() (evennia.objects.objects.DefaultObject method) +
  • get_context_data() (evennia.web.website.views.channels.ChannelDetailView method)