From 0f9c82825ca7f1d929f78677f1f3bf89cf8c075d Mon Sep 17 00:00:00 2001 From: Evennia docbuilder action Date: Mon, 21 Oct 2024 19:15:04 +0000 Subject: [PATCH] Updated HTML docs. --- docs/latest/.buildinfo | 2 +- docs/latest/Coding/Changelog.html | 14 + docs/latest/Contribs/Contribs-Overview.html | 2 +- .../contrib/game_systems/storage/storage.html | 313 +++++++++++++ .../contrib/game_systems/storage/tests.html | 244 ++++++++++ .../_modules/evennia/objects/models.html | 1 + .../_modules/evennia/server/portal/mccp.html | 23 +- .../_modules/evennia/server/portal/mssp.html | 15 +- .../_modules/evennia/server/portal/mxp.html | 19 +- .../_modules/evennia/server/portal/naws.html | 23 +- .../evennia/server/portal/suppress_ga.html | 18 +- .../evennia/server/portal/telnet.html | 2 + .../evennia/server/portal/telnet_oob.html | 33 +- .../_modules/evennia/server/portal/ttype.html | 54 +-- docs/latest/_modules/index.html | 2 + docs/latest/_sources/Coding/Changelog.md.txt | 20 + .../api/evennia.contrib.game_systems.md.txt | 1 + ...vennia.contrib.game_systems.storage.md.txt | 18 + ...ontrib.game_systems.storage.storage.md.txt | 10 + ....contrib.game_systems.storage.tests.md.txt | 10 + docs/latest/api/evennia-api.html | 5 + .../api/evennia.commands.default.account.html | 4 +- .../api/evennia.commands.default.admin.html | 4 +- .../evennia.commands.default.building.html | 12 +- .../api/evennia.commands.default.general.html | 20 +- .../api/evennia.commands.default.tests.html | 2 +- .../evennia.commands.default.unloggedin.html | 16 +- ....base_systems.email_login.email_login.html | 16 +- ...b.base_systems.ingame_python.commands.html | 4 +- ...b.base_systems.ingame_reports.reports.html | 4 +- ...rib.full_systems.evscaperoom.commands.html | 24 +- ...ame_systems.achievements.achievements.html | 4 +- ...ia.contrib.game_systems.barter.barter.html | 4 +- ...ontrib.game_systems.clothing.clothing.html | 4 +- .../api/evennia.contrib.game_systems.html | 5 + ...ia.contrib.game_systems.puzzles.tests.html | 10 +- .../evennia.contrib.game_systems.storage.html | 166 +++++++ ....contrib.game_systems.storage.storage.html | 417 ++++++++++++++++++ ...ia.contrib.game_systems.storage.tests.html | 203 +++++++++ ...ennia.contrib.game_systems.turnbattle.html | 10 +- ...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 +- ...trib.grid.extended_room.extended_room.html | 4 +- ...evennia.contrib.grid.xyzgrid.commands.html | 4 +- docs/latest/api/evennia.contrib.html | 5 + .../api/evennia.contrib.rpg.dice.dice.html | 4 +- ...evennia.contrib.rpg.rpsystem.rpsystem.html | 4 +- ...b.tutorials.evadventure.combat_twitch.html | 8 +- ...ontrib.tutorials.evadventure.commands.html | 4 +- ...ntrib.tutorials.red_button.red_button.html | 16 +- ...trib.tutorials.tutorial_world.objects.html | 16 +- ...ontrib.tutorials.tutorial_world.rooms.html | 12 +- ...utils.git_integration.git_integration.html | 4 +- docs/latest/api/evennia.html | 5 + 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/genindex.html | 143 +++++- docs/latest/objects.inv | Bin 172063 -> 172486 bytes docs/latest/py-modindex.html | 15 + docs/latest/searchindex.js | 2 +- 64 files changed, 1814 insertions(+), 222 deletions(-) create mode 100644 docs/latest/_modules/evennia/contrib/game_systems/storage/storage.html create mode 100644 docs/latest/_modules/evennia/contrib/game_systems/storage/tests.html create mode 100644 docs/latest/_sources/api/evennia.contrib.game_systems.storage.md.txt create mode 100644 docs/latest/_sources/api/evennia.contrib.game_systems.storage.storage.md.txt create mode 100644 docs/latest/_sources/api/evennia.contrib.game_systems.storage.tests.md.txt create mode 100644 docs/latest/api/evennia.contrib.game_systems.storage.html create mode 100644 docs/latest/api/evennia.contrib.game_systems.storage.storage.html create mode 100644 docs/latest/api/evennia.contrib.game_systems.storage.tests.html diff --git a/docs/latest/.buildinfo b/docs/latest/.buildinfo index fde16c6f64..6c71332602 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: d1717c6951a36f983bb395a91741da4a +config: 6134ec9189a59a5ec6083b15fbd587a1 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/latest/Coding/Changelog.html b/docs/latest/Coding/Changelog.html index 3a62d5ee9c..91d2266caa 100644 --- a/docs/latest/Coding/Changelog.html +++ b/docs/latest/Coding/Changelog.html @@ -204,7 +204,16 @@

Main branch

@@ -221,6 +230,11 @@ existing database caused corruption of db. For empty db, can still change in

Evennia 4.4.0

Sep 29, 2024

+
+

WARNING: Due to a bug in the default Sqlite3 PRAGMA settings, it is +recommended to not upgrade to this version if you are using Sqlite3. +Use 4.4.1 or higher instead.

+

turnbattle

diff --git a/docs/latest/_modules/evennia/contrib/game_systems/storage/storage.html b/docs/latest/_modules/evennia/contrib/game_systems/storage/storage.html new file mode 100644 index 0000000000..6cadfc71ef --- /dev/null +++ b/docs/latest/_modules/evennia/contrib/game_systems/storage/storage.html @@ -0,0 +1,313 @@ + + + + + + + + evennia.contrib.game_systems.storage.storage — Evennia latest documentation + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +

Source code for evennia.contrib.game_systems.storage.storage

+from evennia import CmdSet
+from evennia.utils import list_to_string
+from evennia.utils.search import search_object_by_tag
+from evennia.commands.default.muxcommand import MuxCommand
+
+SHARED_TAG_PREFIX = "shared"
+
+
+
[docs]class StorageCommand(MuxCommand): + """ + Shared functionality for storage-related commands + """ + +
[docs] def at_pre_cmd(self): + """ + Check if the current location is tagged as a storage location + Every stored object is tagged on storage, and untagged on retrieval + + Returns: + bool: True if the command is to be stopped here + """ + if super().at_pre_cmd(): + return True + + self.storage_location_id = self.caller.location.tags.get(category="storage_location") + if not self.storage_location_id: + self.caller.msg(f"You cannot {self.cmdstring} anything here.") + return True + + self.object_tag = ( + SHARED_TAG_PREFIX + if self.storage_location_id.startswith(SHARED_TAG_PREFIX) + else self.caller.pk + ) + self.currently_stored = search_object_by_tag( + self.object_tag, category=self.storage_location_id + )
+ + +
[docs]class CmdStore(StorageCommand): + """ + Store something in a storage location. + + Usage: + store <obj> + """ + + key = "store" + locks = "cmd:all()" + help_category = "Storage" + +
[docs] def func(self): + """ + Find the item in question to store, then store it + """ + caller = self.caller + if not self.args: + self.caller.msg("Store what?") + return + obj = caller.search(self.args.strip(), candidates=caller.contents) + if not obj: + return + + """ + We first check at_pre_move before setting the location to None, in case + anything should stymie its movement. + """ + if obj.at_pre_move(caller.location): + obj.tags.add(self.object_tag, self.storage_location_id) + obj.location = None + caller.msg(f"You store {obj.get_display_name(caller)} here.") + else: + caller.msg(f"You fail to store {obj.get_display_name(caller)} here.")
+ + +
[docs]class CmdRetrieve(StorageCommand): + """ + Retrieve something from a storage location. + + Usage: + retrieve <obj> + """ + + key = "retrieve" + locks = "cmd:all()" + help_category = "Storage" + +
[docs] def func(self): + """ + Retrieve the item in question if possible + """ + caller = self.caller + + if not self.args: + self.caller.msg("Retrieve what?") + return + + obj = caller.search(self.args.strip(), candidates=self.currently_stored) + if not obj: + return + + if obj.at_pre_move(caller): + obj.tags.remove(self.object_tag, self.storage_location_id) + caller.msg(f"You retrieve {obj.get_display_name(caller)}.") + else: + caller.msg(f"You fail to retrieve {obj.get_display_name(caller)}.")
+ + +
[docs]class CmdList(StorageCommand): + """ + List items in the storage location. + + Usage: + list + """ + + key = "list" + locks = "cmd:all()" + help_category = "Storage" + +
[docs] def func(self): + """ + List items in the storage + """ + caller = self.caller + if not self.currently_stored: + caller.msg("You find nothing stored here.") + return + caller.msg(f"Stored here:\n{list_to_string(self.currently_stored)}")
+ + +
[docs]class CmdStorage(MuxCommand): + """ + Make the current location a storage room, or delete it as a storage and move all stored objects into the room contents. + + Shared storage locations can be used by all interchangeably. + + The default storage identifier will be its primary key in the database, but you can supply a new one in case you want linked storages. + + Usage: + storage [= [storage identifier]] + storage/shared [= [storage identifier]] + storage/delete + """ + + key = "@storage" + locks = "cmd:perm(Builder)" + +
[docs] def func(self): + """Set the storage location.""" + + caller = self.caller + location = caller.location + current_storage_id = location.tags.get(category="storage_location") + storage_id = self.lhs or location.pk + + if "delete" in self.switches: + if not current_storage_id: + caller.msg("This is not tagged as a storage location.") + return + # Move the stored objects, if any, into the room + currently_stored_here = search_object_by_tag(category=current_storage_id) + for obj in currently_stored_here: + obj.tags.remove(category=current_storage_id) + obj.location = location + caller.msg("You remove the storage capabilities of the room.") + location.tags.remove(current_storage_id, category="storage_location") + return + + if current_storage_id: + caller.msg("This is already a storage location: |wstorage/delete|n to remove the tag.") + return + + new_storage_id = ( + f"{SHARED_TAG_PREFIX if SHARED_TAG_PREFIX in self.switches else ''}{storage_id}" + ) + location.tags.add(new_storage_id, category="storage_location") + caller.msg(f"This is now a storage location with id: {new_storage_id}.")
+ + +
[docs]class StorageCmdSet(CmdSet): + """ + CmdSet for all storage-related commands + """ + +
[docs] def at_cmdset_creation(self): + self.add(CmdStore) + self.add(CmdRetrieve) + self.add(CmdList) + self.add(CmdStorage)
+
+ +
+
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/docs/latest/_modules/evennia/contrib/game_systems/storage/tests.html b/docs/latest/_modules/evennia/contrib/game_systems/storage/tests.html new file mode 100644 index 0000000000..b60f855320 --- /dev/null +++ b/docs/latest/_modules/evennia/contrib/game_systems/storage/tests.html @@ -0,0 +1,244 @@ + + + + + + + + evennia.contrib.game_systems.storage.tests — Evennia latest documentation + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +

Source code for evennia.contrib.game_systems.storage.tests

+from evennia.commands.default.tests import BaseEvenniaCommandTest
+from evennia.utils.create import create_object
+
+from . import storage
+
+
+
[docs]class TestStorage(BaseEvenniaCommandTest): +
[docs] def setUp(self): + super().setUp() + self.obj1.location = self.char1 + self.room1.tags.add("storage_1", "storage_location") + self.room2.tags.add("shared_storage_2", "storage_location")
+ +
[docs] def test_store_and_retrieve(self): + self.call( + storage.CmdStore(), + "", + "Store what?", + caller=self.char1, + ) + self.call( + storage.CmdStore(), + "obj", + f"You store {self.obj1.get_display_name(self.char1)} here.", + caller=self.char1, + ) + self.call( + storage.CmdList(), + "", + f"Stored here:\n{self.obj1.get_display_name(self.char1)}", + caller=self.char1, + ) + self.call( + storage.CmdRetrieve(), + "obj2", + "Could not find 'obj2'.", + caller=self.char1, + ) + self.call( + storage.CmdRetrieve(), + "obj", + f"You retrieve {self.obj1.get_display_name(self.char1)}.", + caller=self.char1, + )
+ +
[docs] def test_store_retrieve_while_not_in_storeroom(self): + self.char2.location = self.char1 + self.call(storage.CmdStore(), "obj", "You cannot store anything here.", caller=self.char2) + self.call( + storage.CmdRetrieve(), "obj", "You cannot retrieve anything here.", caller=self.char2 + )
+ +
[docs] def test_store_retrieve_nonexistent_obj(self): + self.call(storage.CmdStore(), "asdasd", "Could not find 'asdasd'.", caller=self.char1) + self.call(storage.CmdRetrieve(), "asdasd", "Could not find 'asdasd'.", caller=self.char1)
+ +
[docs] def test_list_nothing_stored(self): + self.call( + storage.CmdList(), + "", + "You find nothing stored here.", + caller=self.char1, + )
+ +
[docs] def test_shared_storage(self): + self.char1.location = self.room2 + self.char2.location = self.room2 + + self.call( + storage.CmdStore(), + "obj", + f"You store {self.obj1.get_display_name(self.char1)} here.", + caller=self.char1, + ) + self.call( + storage.CmdRetrieve(), + "obj", + f"You retrieve {self.obj1.get_display_name(self.char1)}.", + caller=self.char2, + )
+ +
[docs] def test_remove_add_storage(self): + self.char1.permissions.add("builder") + self.call( + storage.CmdStorage(), + "", + "This is already a storage location: storage/delete to remove the tag.", + caller=self.char1, + ) + self.call( + storage.CmdStore(), + "obj", + f"You store {self.obj1.get_display_name(self.char1)} here.", + caller=self.char1, + ) + self.assertEqual(self.obj1.location, None) + self.call( + storage.CmdStorage(), + "/delete", + "You remove the storage capabilities of the room.", + caller=self.char1, + ) + self.assertEqual(self.obj1.location, self.room1) + self.call( + storage.CmdStorage(), + "", + f"This is now a storage location with id: {self.room1.id}.", + caller=self.char1, + ) + self.call( + storage.CmdStorage(), + "/delete", + "You remove the storage capabilities of the room.", + caller=self.char1, + ) + self.call( + storage.CmdStorage(), + "/shared", + f"This is now a storage location with id: shared{self.room1.id}.", + caller=self.char1, + )
+
+ +
+
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/docs/latest/_modules/evennia/objects/models.html b/docs/latest/_modules/evennia/objects/models.html index 2ba117e623..3073976998 100644 --- a/docs/latest/_modules/evennia/objects/models.html +++ b/docs/latest/_modules/evennia/objects/models.html @@ -160,6 +160,7 @@ """ objects = self.load() + self._typecache = defaultdict(dict) self._pkcache = {obj.pk: True for obj in objects} for obj in objects: try: diff --git a/docs/latest/_modules/evennia/server/portal/mccp.html b/docs/latest/_modules/evennia/server/portal/mccp.html index 4b543b8b99..0ea7c6fd8e 100644 --- a/docs/latest/_modules/evennia/server/portal/mccp.html +++ b/docs/latest/_modules/evennia/server/portal/mccp.html @@ -107,6 +107,7 @@ mccp_compress and calling it from its write methods. """ +import weakref import zlib # negotiations for v1 and v2 of the protocol @@ -149,10 +150,10 @@ """ - self.protocol = protocol - self.protocol.protocol_flags["MCCP"] = False + self.protocol = weakref.ref(protocol) + self.protocol().protocol_flags["MCCP"] = False # ask if client will mccp, connect callbacks to handle answer - self.protocol.will(MCCP).addCallbacks(self.do_mccp, self.no_mccp) + self.protocol().will(MCCP).addCallbacks(self.do_mccp, self.no_mccp)
[docs] def no_mccp(self, option): """ @@ -162,10 +163,10 @@ option (Option): Option dict (not used). """ - if hasattr(self.protocol, "zlib"): - del self.protocol.zlib - self.protocol.protocol_flags["MCCP"] = False - self.protocol.handshake_done()
+ if hasattr(self.protocol(), "zlib"): + del self.protocol().zlib + self.protocol().protocol_flags["MCCP"] = False + self.protocol().handshake_done()
[docs] def do_mccp(self, option): """ @@ -176,10 +177,10 @@ option (Option): Option dict (not used). """ - self.protocol.protocol_flags["MCCP"] = True - self.protocol.requestNegotiation(MCCP, b"") - self.protocol.zlib = zlib.compressobj(9) - self.protocol.handshake_done()
+ self.protocol().protocol_flags["MCCP"] = True + self.protocol().requestNegotiation(MCCP, b"") + self.protocol().zlib = zlib.compressobj(9) + self.protocol().handshake_done() diff --git a/docs/latest/_modules/evennia/server/portal/mssp.html b/docs/latest/_modules/evennia/server/portal/mssp.html index 9f4fdcda0d..54dd85bd32 100644 --- a/docs/latest/_modules/evennia/server/portal/mssp.html +++ b/docs/latest/_modules/evennia/server/portal/mssp.html @@ -103,6 +103,7 @@ """ +import weakref from django.conf import settings from evennia.utils import utils @@ -131,8 +132,8 @@ protocol (Protocol): The active protocol instance. """ - self.protocol = protocol - self.protocol.will(MSSP).addCallbacks(self.do_mssp, self.no_mssp) + self.protocol = weakref.ref(protocol) + self.protocol().will(MSSP).addCallbacks(self.do_mssp, self.no_mssp)
[docs] def get_player_count(self): """ @@ -142,7 +143,7 @@ count (int): The number of players in the MUD. """ - return str(self.protocol.sessionhandler.count_loggedin())
+ return str(self.protocol().sessionhandler.count_loggedin())
[docs] def get_uptime(self): """ @@ -152,7 +153,7 @@ uptime (int): Number of seconds of uptime. """ - return str(self.protocol.sessionhandler.uptime)
+ return str(self.protocol().sessionhandler.uptime)
[docs] def no_mssp(self, option): """ @@ -163,7 +164,7 @@ option (Option): Not used. """ - self.protocol.handshake_done()
+ self.protocol().handshake_done()
[docs] def do_mssp(self, option): """ @@ -224,8 +225,8 @@ ) # send to crawler by subnegotiation - self.protocol.requestNegotiation(MSSP, varlist) - self.protocol.handshake_done()
+ self.protocol().requestNegotiation(MSSP, varlist) + self.protocol().handshake_done() diff --git a/docs/latest/_modules/evennia/server/portal/mxp.html b/docs/latest/_modules/evennia/server/portal/mxp.html index 80c4e97afb..07079c1773 100644 --- a/docs/latest/_modules/evennia/server/portal/mxp.html +++ b/docs/latest/_modules/evennia/server/portal/mxp.html @@ -107,6 +107,7 @@ """ import re +import weakref from django.conf import settings @@ -153,10 +154,10 @@ protocol (Protocol): The active protocol instance. """ - self.protocol = protocol - self.protocol.protocol_flags["MXP"] = False + self.protocol = weakref.ref(protocol) + self.protocol().protocol_flags["MXP"] = False if settings.MXP_ENABLED: - self.protocol.will(MXP).addCallbacks(self.do_mxp, self.no_mxp) + self.protocol().will(MXP).addCallbacks(self.do_mxp, self.no_mxp)
[docs] def no_mxp(self, option): """ @@ -166,8 +167,8 @@ option (Option): Not used. """ - self.protocol.protocol_flags["MXP"] = False - self.protocol.handshake_done()
+ self.protocol().protocol_flags["MXP"] = False + self.protocol().handshake_done()
[docs] def do_mxp(self, option): """ @@ -178,11 +179,11 @@ """ if settings.MXP_ENABLED: - self.protocol.protocol_flags["MXP"] = True - self.protocol.requestNegotiation(MXP, b"") + self.protocol().protocol_flags["MXP"] = True + self.protocol().requestNegotiation(MXP, b"") else: - self.protocol.wont(MXP) - self.protocol.handshake_done()
+ self.protocol().wont(MXP) + self.protocol().handshake_done() diff --git a/docs/latest/_modules/evennia/server/portal/naws.html b/docs/latest/_modules/evennia/server/portal/naws.html index 87b60dfb5d..b97f45dfee 100644 --- a/docs/latest/_modules/evennia/server/portal/naws.html +++ b/docs/latest/_modules/evennia/server/portal/naws.html @@ -103,6 +103,7 @@ """ from codecs import encode as codecs_encode +import weakref from django.conf import settings @@ -133,13 +134,13 @@ """ self.naws_step = 0 - self.protocol = protocol - self.protocol.protocol_flags["SCREENWIDTH"] = { + self.protocol = weakref.ref(protocol) + self.protocol().protocol_flags["SCREENWIDTH"] = { 0: DEFAULT_WIDTH } # windowID (0 is root):width - self.protocol.protocol_flags["SCREENHEIGHT"] = {0: DEFAULT_HEIGHT} # windowID:width - self.protocol.negotiationMap[NAWS] = self.negotiate_sizes - self.protocol.do(NAWS).addCallbacks(self.do_naws, self.no_naws) + self.protocol().protocol_flags["SCREENHEIGHT"] = {0: DEFAULT_HEIGHT} # windowID:width + self.protocol().negotiationMap[NAWS] = self.negotiate_sizes + self.protocol().do(NAWS).addCallbacks(self.do_naws, self.no_naws)
[docs] def no_naws(self, option): """ @@ -150,8 +151,8 @@ option (Option): Not used. """ - self.protocol.protocol_flags["AUTORESIZE"] = False - self.protocol.handshake_done()
+ self.protocol().protocol_flags["AUTORESIZE"] = False + self.protocol().handshake_done()
[docs] def do_naws(self, option): """ @@ -161,8 +162,8 @@ option (Option): Not used. """ - self.protocol.protocol_flags["AUTORESIZE"] = True - self.protocol.handshake_done()
+ self.protocol().protocol_flags["AUTORESIZE"] = True + self.protocol().handshake_done()
[docs] def negotiate_sizes(self, options): """ @@ -175,9 +176,9 @@ if len(options) == 4: # NAWS is negotiated with 16bit words width = options[0] + options[1] - self.protocol.protocol_flags["SCREENWIDTH"][0] = int(codecs_encode(width, "hex"), 16) + self.protocol().protocol_flags["SCREENWIDTH"][0] = int(codecs_encode(width, "hex"), 16) height = options[2] + options[3] - self.protocol.protocol_flags["SCREENHEIGHT"][0] = int(codecs_encode(height, "hex"), 16)
+ self.protocol().protocol_flags["SCREENHEIGHT"][0] = int(codecs_encode(height, "hex"), 16) diff --git a/docs/latest/_modules/evennia/server/portal/suppress_ga.html b/docs/latest/_modules/evennia/server/portal/suppress_ga.html index c429134c68..64675ac9db 100644 --- a/docs/latest/_modules/evennia/server/portal/suppress_ga.html +++ b/docs/latest/_modules/evennia/server/portal/suppress_ga.html @@ -106,6 +106,8 @@ """ +import weakref + SUPPRESS_GA = bytes([3]) # b"\x03" # default taken from telnet specification @@ -128,14 +130,14 @@ protocol (Protocol): The active protocol instance. """ - self.protocol = protocol + self.protocol = weakref.ref(protocol) - self.protocol.protocol_flags["NOGOAHEAD"] = True - self.protocol.protocol_flags["NOPROMPTGOAHEAD"] = ( + self.protocol().protocol_flags["NOGOAHEAD"] = True + self.protocol().protocol_flags["NOPROMPTGOAHEAD"] = ( True # Used to send a GA after a prompt line only, set in TTYPE (per client) ) # tell the client that we prefer to suppress GA ... - self.protocol.will(SUPPRESS_GA).addCallbacks(self.will_suppress_ga, self.wont_suppress_ga) + self.protocol().will(SUPPRESS_GA).addCallbacks(self.will_suppress_ga, self.wont_suppress_ga)
[docs] def wont_suppress_ga(self, option): """ @@ -145,8 +147,8 @@ option (Option): Not used. """ - self.protocol.protocol_flags["NOGOAHEAD"] = False - self.protocol.handshake_done()
+ self.protocol().protocol_flags["NOGOAHEAD"] = False + self.protocol().handshake_done()
[docs] def will_suppress_ga(self, option): """ @@ -156,8 +158,8 @@ option (Option): Not used. """ - self.protocol.protocol_flags["NOGOAHEAD"] = True - self.protocol.handshake_done()
+ self.protocol().protocol_flags["NOGOAHEAD"] = True + self.protocol().handshake_done() diff --git a/docs/latest/_modules/evennia/server/portal/telnet.html b/docs/latest/_modules/evennia/server/portal/telnet.html index d70dd1e59a..d591de5bac 100644 --- a/docs/latest/_modules/evennia/server/portal/telnet.html +++ b/docs/latest/_modules/evennia/server/portal/telnet.html @@ -398,6 +398,8 @@ """ self.sessionhandler.disconnect(self) + if self.nop_keep_alive and self.nop_keep_alive.running: + self.toggle_nop_keepalive() self.transport.loseConnection()
[docs] def applicationDataReceived(self, data): diff --git a/docs/latest/_modules/evennia/server/portal/telnet_oob.html b/docs/latest/_modules/evennia/server/portal/telnet_oob.html index 6552fc22e7..151f330b59 100644 --- a/docs/latest/_modules/evennia/server/portal/telnet_oob.html +++ b/docs/latest/_modules/evennia/server/portal/telnet_oob.html @@ -118,6 +118,7 @@ import json import re +import weakref # General Telnet from twisted.conch.telnet import IAC, SB, SE @@ -176,16 +177,16 @@ protocol (Protocol): The active protocol. """ - self.protocol = protocol - self.protocol.protocol_flags["OOB"] = False + self.protocol = weakref.ref(protocol) + self.protocol().protocol_flags["OOB"] = False self.MSDP = False self.GMCP = False # ask for the available protocols and assign decoders # (note that handshake_done() will be called twice!) - self.protocol.negotiationMap[MSDP] = self.decode_msdp - self.protocol.negotiationMap[GMCP] = self.decode_gmcp - self.protocol.will(MSDP).addCallbacks(self.do_msdp, self.no_msdp) - self.protocol.will(GMCP).addCallbacks(self.do_gmcp, self.no_gmcp) + self.protocol().negotiationMap[MSDP] = self.decode_msdp + self.protocol().negotiationMap[GMCP] = self.decode_gmcp + self.protocol().will(MSDP).addCallbacks(self.do_msdp, self.no_msdp) + self.protocol().will(GMCP).addCallbacks(self.do_gmcp, self.no_gmcp) self.oob_reported = {}
[docs] def no_msdp(self, option): @@ -197,7 +198,7 @@ """ # no msdp, check GMCP - self.protocol.handshake_done()
+ self.protocol().handshake_done()
[docs] def do_msdp(self, option): """ @@ -208,8 +209,8 @@ """ self.MSDP = True - self.protocol.protocol_flags["OOB"] = True - self.protocol.handshake_done()
+ self.protocol().protocol_flags["OOB"] = True + self.protocol().handshake_done()
[docs] def no_gmcp(self, option): """ @@ -220,7 +221,7 @@ option (Option): Not used. """ - self.protocol.handshake_done()
+ self.protocol().handshake_done()
[docs] def do_gmcp(self, option): """ @@ -231,8 +232,8 @@ """ self.GMCP = True - self.protocol.protocol_flags["OOB"] = True - self.protocol.handshake_done()
+ self.protocol().protocol_flags["OOB"] = True + self.protocol().handshake_done() # encoders @@ -467,7 +468,7 @@ cmds["msdp_{}".format(remap)] = cmds.pop(lower_case[remap]) # print("msdp data in:", cmds) # DEBUG - self.protocol.data_in(**cmds) + self.protocol().data_in(**cmds)
[docs] def decode_gmcp(self, data): """ @@ -516,7 +517,7 @@ if cmdname.lower().startswith(b"core_"): # if Core.cmdname, then use cmdname cmdname = cmdname[5:] - self.protocol.data_in(**{cmdname.lower().decode(): [args, kwargs]})
+ self.protocol().data_in(**{cmdname.lower().decode(): [args, kwargs]}) # access methods @@ -533,11 +534,11 @@ if self.MSDP: encoded_oob = self.encode_msdp(cmdname, *args, **kwargs) - self.protocol._write(IAC + SB + MSDP + encoded_oob + IAC + SE) + self.protocol()._write(IAC + SB + MSDP + encoded_oob + IAC + SE) if self.GMCP: encoded_oob = self.encode_gmcp(cmdname, *args, **kwargs) - self.protocol._write(IAC + SB + GMCP + encoded_oob + IAC + SE) + self.protocol()._write(IAC + SB + GMCP + encoded_oob + IAC + SE) diff --git a/docs/latest/_modules/evennia/server/portal/ttype.html b/docs/latest/_modules/evennia/server/portal/ttype.html index 5a80c823a6..9cef7a480c 100644 --- a/docs/latest/_modules/evennia/server/portal/ttype.html +++ b/docs/latest/_modules/evennia/server/portal/ttype.html @@ -104,6 +104,8 @@ """ +import weakref + # telnet option codes TTYPE = bytes([24]) # b"\x18" IS = bytes([0]) # b"\x00" @@ -147,16 +149,16 @@ """ self.ttype_step = 0 - self.protocol = protocol + self.protocol = weakref.ref(protocol) # we set FORCEDENDLINE for clients not supporting ttype - self.protocol.protocol_flags["FORCEDENDLINE"] = True - self.protocol.protocol_flags["TTYPE"] = False + self.protocol().protocol_flags["FORCEDENDLINE"] = True + self.protocol().protocol_flags["TTYPE"] = False # is it a safe bet to assume ANSI is always supported? - self.protocol.protocol_flags["ANSI"] = True + self.protocol().protocol_flags["ANSI"] = True # setup protocol to handle ttype initialization and negotiation - self.protocol.negotiationMap[TTYPE] = self.will_ttype + self.protocol().negotiationMap[TTYPE] = self.will_ttype # ask if client will ttype, connect callback if it does. - self.protocol.do(TTYPE).addCallbacks(self.will_ttype, self.wont_ttype) + self.protocol().do(TTYPE).addCallbacks(self.will_ttype, self.wont_ttype)
[docs] def wont_ttype(self, option): """ @@ -166,8 +168,8 @@ option (Option): Not used. """ - self.protocol.protocol_flags["TTYPE"] = False - self.protocol.handshake_done()
+ self.protocol().protocol_flags["TTYPE"] = False + self.protocol().handshake_done()
[docs] def will_ttype(self, option): """ @@ -183,7 +185,7 @@ stored on protocol.protocol_flags under the TTYPE key. """ - options = self.protocol.protocol_flags + options = self.protocol().protocol_flags if options and options.get("TTYPE", False) or self.ttype_step > 3: return @@ -196,7 +198,7 @@ if self.ttype_step == 0: # just start the request chain - self.protocol.requestNegotiation(TTYPE, SEND) + self.protocol().requestNegotiation(TTYPE, SEND) elif self.ttype_step == 1: # this is supposed to be the name of the client/terminal. @@ -217,9 +219,9 @@ xterm256 = clientname.split("MUDLET", 1)[1].strip() >= "1.1" # Mudlet likes GA's on a prompt line for the prompt trigger to # match, if it's not wanting NOGOAHEAD. - if not self.protocol.protocol_flags["NOGOAHEAD"]: - self.protocol.protocol_flags["NOGOAHEAD"] = True - self.protocol.protocol_flags["NOPROMPTGOAHEAD"] = False + if not self.protocol().protocol_flags["NOGOAHEAD"]: + self.protocol().protocol_flags["NOGOAHEAD"] = True + self.protocol().protocol_flags["NOPROMPTGOAHEAD"] = False if ( clientname.startswith("XTERM") @@ -245,11 +247,11 @@ truecolor = True # all clients supporting TTYPE at all seem to support ANSI - self.protocol.protocol_flags["ANSI"] = True - self.protocol.protocol_flags["XTERM256"] = xterm256 - self.protocol.protocol_flags["TRUECOLOR"] = truecolor - self.protocol.protocol_flags["CLIENTNAME"] = clientname - self.protocol.requestNegotiation(TTYPE, SEND) + self.protocol().protocol_flags["ANSI"] = True + self.protocol().protocol_flags["XTERM256"] = xterm256 + self.protocol().protocol_flags["TRUECOLOR"] = truecolor + self.protocol().protocol_flags["CLIENTNAME"] = clientname + self.protocol().requestNegotiation(TTYPE, SEND) elif self.ttype_step == 2: # this is a term capabilities flag @@ -262,11 +264,11 @@ and not tupper.endswith("-COLOR") # old Tintin, Putty ) if xterm256: - self.protocol.protocol_flags["ANSI"] = True - self.protocol.protocol_flags["XTERM256"] = xterm256 - self.protocol.protocol_flags["TERM"] = term + self.protocol().protocol_flags["ANSI"] = True + self.protocol().protocol_flags["XTERM256"] = xterm256 + self.protocol().protocol_flags["TERM"] = term # request next information - self.protocol.requestNegotiation(TTYPE, SEND) + self.protocol().requestNegotiation(TTYPE, SEND) elif self.ttype_step == 3: # the MTTS bitstring identifying term capabilities @@ -278,14 +280,14 @@ support = dict( (capability, True) for bitval, capability in MTTS if option & bitval > 0 ) - self.protocol.protocol_flags.update(support) + self.protocol().protocol_flags.update(support) else: # some clients send erroneous MTTS as a string. Add directly. - self.protocol.protocol_flags[option.upper()] = True + self.protocol().protocol_flags[option.upper()] = True - self.protocol.protocol_flags["TTYPE"] = True + self.protocol().protocol_flags["TTYPE"] = True # we must sync ttype once it'd done - self.protocol.handshake_done() + self.protocol().handshake_done() self.ttype_step += 1
diff --git a/docs/latest/_modules/index.html b/docs/latest/_modules/index.html index a0684e11be..f7ce32313f 100644 --- a/docs/latest/_modules/index.html +++ b/docs/latest/_modules/index.html @@ -182,6 +182,8 @@
  • evennia.contrib.game_systems.multidescer.tests
  • evennia.contrib.game_systems.puzzles.puzzles
  • evennia.contrib.game_systems.puzzles.tests
  • +
  • evennia.contrib.game_systems.storage.storage
  • +
  • evennia.contrib.game_systems.storage.tests
  • evennia.contrib.game_systems.turnbattle.tb_basic
  • evennia.contrib.game_systems.turnbattle.tb_equip
  • evennia.contrib.game_systems.turnbattle.tb_items
  • diff --git a/docs/latest/_sources/Coding/Changelog.md.txt b/docs/latest/_sources/Coding/Changelog.md.txt index 4e48832cdd..92302db559 100644 --- a/docs/latest/_sources/Coding/Changelog.md.txt +++ b/docs/latest/_sources/Coding/Changelog.md.txt @@ -4,13 +4,29 @@ ## Main branch - [Feat][pull3634]: New contrib for in-game `storage` of items in rooms (aMiss-aWry) +- [Feat][pull3636]: Make `cpattr` command also support Attribute categories (aMiss-aWry) +- [Fix][pull3635]: Fix memory leak in Portal Telnet connections, force weak + references to Telnet negotiations, stop LoopingCall on disconnect (a-rodian-jedi) - [Fix][pull3626]: Typo in `defense_type` in evadventure tutorial (feyrkh) +- [Fix][pull3632]: Made fallback permissions on be set correctly (InspectorCaracal) +- [Fix][pull3639]: Fix `system` command when environment uses a language with + commas for decimal points (aMiss-aWry) +- [Fix][pull3645]: Correct `character_creator` contrib's error return (InspectorCaracal) +- [Fix][pull3640]: Typo fixes for conjugate verbs (aMiss-aWry) +- [Fix][pull3647]: Contents cache didn't reset internal typecache on use of `init` hook (InspectorCaracal) - [Docs][pull3576]: Rework doc for [Pycharm howto][doc-pycharm] - Docs updates: feykrh, Griatch [pull3626]: https://github.com/evennia/evennia/pull/3626 [pull3676]: https://github.com/evennia/evennia/pull/3676 [pull3634]: https://github.com/evennia/evennia/pull/3634 +[pull3632]: https://github.com/evennia/evennia/pull/3632 +[pull3636]: https://github.com/evennia/evennia/pull/3636 +[pull3639]: https://github.com/evennia/evennia/pull/3639 +[pull3645]: https://github.com/evennia/evennia/pull/3645 +[pull3640]: https://github.com/evennia/evennia/pull/3640 +[pull3647]: https://github.com/evennia/evennia/pull/3647 +[pull3635]: https://github.com/evennia/evennia/pull/3635 [doc-pycharm]: https://www.evennia.com/docs/latest/Coding/Setting-up-PyCharm.html ## Evennia 4.4.1 @@ -28,6 +44,10 @@ Oct 1, 2024 Sep 29, 2024 +> WARNING: Due to a bug in the default Sqlite3 PRAGMA settings, it is +> recommended to not upgrade to this version if you are using Sqlite3. +> Use `4.4.1` or higher instead. + - Feat: Support `scripts key:typeclass` to create global scripts with dynamic keys (rather than just relying on typeclass' key) (Griatch) - [Feat][pull3595]: Tweak Sqlite3 PRAGMAs for better performance (0xDEADFED5) diff --git a/docs/latest/_sources/api/evennia.contrib.game_systems.md.txt b/docs/latest/_sources/api/evennia.contrib.game_systems.md.txt index 07ddfa33e1..de3da5f352 100644 --- a/docs/latest/_sources/api/evennia.contrib.game_systems.md.txt +++ b/docs/latest/_sources/api/evennia.contrib.game_systems.md.txt @@ -21,6 +21,7 @@ evennia.contrib.game\_systems evennia.contrib.game_systems.mail evennia.contrib.game_systems.multidescer evennia.contrib.game_systems.puzzles + evennia.contrib.game_systems.storage evennia.contrib.game_systems.turnbattle ``` \ No newline at end of file diff --git a/docs/latest/_sources/api/evennia.contrib.game_systems.storage.md.txt b/docs/latest/_sources/api/evennia.contrib.game_systems.storage.md.txt new file mode 100644 index 0000000000..82abd8d66a --- /dev/null +++ b/docs/latest/_sources/api/evennia.contrib.game_systems.storage.md.txt @@ -0,0 +1,18 @@ +```{eval-rst} +evennia.contrib.game\_systems.storage +============================================= + +.. automodule:: evennia.contrib.game_systems.storage + :members: + :undoc-members: + :show-inheritance: + + + +.. toctree:: + :maxdepth: 6 + + evennia.contrib.game_systems.storage.storage + evennia.contrib.game_systems.storage.tests + +``` \ No newline at end of file diff --git a/docs/latest/_sources/api/evennia.contrib.game_systems.storage.storage.md.txt b/docs/latest/_sources/api/evennia.contrib.game_systems.storage.storage.md.txt new file mode 100644 index 0000000000..882eaf6984 --- /dev/null +++ b/docs/latest/_sources/api/evennia.contrib.game_systems.storage.storage.md.txt @@ -0,0 +1,10 @@ +```{eval-rst} +evennia.contrib.game\_systems.storage.storage +==================================================== + +.. automodule:: evennia.contrib.game_systems.storage.storage + :members: + :undoc-members: + :show-inheritance: + +``` \ No newline at end of file diff --git a/docs/latest/_sources/api/evennia.contrib.game_systems.storage.tests.md.txt b/docs/latest/_sources/api/evennia.contrib.game_systems.storage.tests.md.txt new file mode 100644 index 0000000000..fccdd5fe58 --- /dev/null +++ b/docs/latest/_sources/api/evennia.contrib.game_systems.storage.tests.md.txt @@ -0,0 +1,10 @@ +```{eval-rst} +evennia.contrib.game\_systems.storage.tests +================================================== + +.. automodule:: evennia.contrib.game_systems.storage.tests + :members: + :undoc-members: + :show-inheritance: + +``` \ No newline at end of file diff --git a/docs/latest/api/evennia-api.html b/docs/latest/api/evennia-api.html index 7d9506ed22..2741bb1c6f 100644 --- a/docs/latest/api/evennia-api.html +++ b/docs/latest/api/evennia-api.html @@ -315,6 +315,11 @@
  • evennia.contrib.game_systems.puzzles.tests
  • +
  • evennia.contrib.game_systems.storage +
  • evennia.contrib.game_systems.turnbattle
    • evennia.contrib.game_systems.turnbattle.tb_basic
    • evennia.contrib.game_systems.turnbattle.tb_equip
    • diff --git a/docs/latest/api/evennia.commands.default.account.html b/docs/latest/api/evennia.commands.default.account.html index 5a1ec180e3..d67c2d984f 100644 --- a/docs/latest/api/evennia.commands.default.account.html +++ b/docs/latest/api/evennia.commands.default.account.html @@ -147,7 +147,7 @@ method. Otherwise all text will be returned to all connected sessions.

      -aliases = ['ls', 'l']
      +aliases = ['l', 'ls']
      @@ -178,7 +178,7 @@ method. Otherwise all text will be returned to all connected sessions.

      -search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look while out-of-character\n\n Usage:\n look\n\n Look in the ooc state.\n '}
      +search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look while out-of-character\n\n Usage:\n look\n\n Look in the ooc state.\n '}
      diff --git a/docs/latest/api/evennia.commands.default.admin.html b/docs/latest/api/evennia.commands.default.admin.html index 1e73ac7e58..0a96bab33d 100644 --- a/docs/latest/api/evennia.commands.default.admin.html +++ b/docs/latest/api/evennia.commands.default.admin.html @@ -331,7 +331,7 @@ to accounts respectively.

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

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

      -aliases = ['@del', '@delete']
      +aliases = ['@delete', '@del']
      @@ -692,7 +692,7 @@ You can specify the /force switch to bypass this confirmation.

      -search_index_entry = {'aliases': '@del @delete', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy del delete', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}
      +search_index_entry = {'aliases': '@delete @del', 'category': 'building', 'key': '@destroy', 'no_prefix': 'destroy delete del', 'tags': '', 'text': '\n permanently delete objects\n\n Usage:\n destroy[/switches] [obj, obj2, obj3, [dbref-dbref], ...]\n\n Switches:\n override - The destroy command will usually avoid accidentally\n destroying account objects. This switch overrides this safety.\n force - destroy without confirmation.\n Examples:\n destroy house, roof, door, 44-78\n destroy 5-10, flower, 45\n destroy/force north\n\n Destroys one or many objects. If dbrefs are used, a range to delete can be\n given, e.g. 4-10. Also the end points will be deleted. This command\n displays a confirmation before destroying, to make sure of your choice.\n You can specify the /force switch to bypass this confirmation.\n '}
      @@ -1419,7 +1419,7 @@ server settings.

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

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

      -aliases = ['@search', '@locate']
      +aliases = ['@locate', '@search']
      @@ -1943,7 +1943,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.general.html b/docs/latest/api/evennia.commands.default.general.html index 57420a8a95..d649ed131b 100644 --- a/docs/latest/api/evennia.commands.default.general.html +++ b/docs/latest/api/evennia.commands.default.general.html @@ -189,7 +189,7 @@ look *<account&g
      -aliases = ['ls', 'l']
      +aliases = ['l', 'ls']
      @@ -220,7 +220,7 @@ look *<account&g
      -search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}
      +search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}
      @@ -337,7 +337,7 @@ inv

      -aliases = ['inv', 'i']
      +aliases = ['i', 'inv']
      @@ -368,7 +368,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 '}
      @@ -611,7 +611,7 @@ placing it in their inventory.

      -aliases = ['"', "'"]
      +aliases = ["'", '"']
      @@ -642,7 +642,7 @@ placing it in their inventory.

      -search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}
      +search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}
      @@ -722,7 +722,7 @@ automatically begin with your name.

      -aliases = ['emote', ':']
      +aliases = [':', 'emote']
      @@ -763,7 +763,7 @@ space.

      -search_index_entry = {'aliases': 'emote :', 'category': 'general', 'key': 'pose', 'no_prefix': ' emote :', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}
      +search_index_entry = {'aliases': ': emote', 'category': 'general', 'key': 'pose', 'no_prefix': ' : emote', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}
      @@ -786,7 +786,7 @@ which permission groups you are a member of.

      -aliases = ['groups', 'hierarchy']
      +aliases = ['hierarchy', 'groups']
      @@ -817,7 +817,7 @@ which permission groups you are a member of.

      -search_index_entry = {'aliases': 'groups hierarchy', 'category': 'general', 'key': 'access', 'no_prefix': ' groups hierarchy', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}
      +search_index_entry = {'aliases': 'hierarchy groups', 'category': 'general', 'key': 'access', 'no_prefix': ' hierarchy groups', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}
      diff --git a/docs/latest/api/evennia.commands.default.tests.html b/docs/latest/api/evennia.commands.default.tests.html index 1f5248e1a7..ff89d2eae5 100644 --- a/docs/latest/api/evennia.commands.default.tests.html +++ b/docs/latest/api/evennia.commands.default.tests.html @@ -980,7 +980,7 @@ main test suite started with

      Test the batch processor.

      -red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpw_hn5gkn/fb0dedd893b6a9ca26f9f13e3344b9d78bdcd4a2/evennia/contrib/tutorials/red_button/red_button.py'>
      +red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpy3ib186_/67db991715a0c2095c5d3a90d52a0c9a6652906e/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 81208e2e1d..0aad904baf 100644 --- a/docs/latest/api/evennia.commands.default.unloggedin.html +++ b/docs/latest/api/evennia.commands.default.unloggedin.html @@ -136,7 +136,7 @@ connect “account name” “pass word”

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

      -search_index_entry = {'aliases': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co conn', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}
      +search_index_entry = {'aliases': 'conn co con', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn co con', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}
      @@ -195,7 +195,7 @@ create “account name” “pass word”

      -aliases = ['cr', 'cre']
      +aliases = ['cre', 'cr']
      @@ -232,7 +232,7 @@ create “account name” “pass word”

      -search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}
      +search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}
      @@ -306,7 +306,7 @@ All it does is display the connect screen.

      -aliases = ['look', 'l']
      +aliases = ['l', 'look']
      @@ -332,7 +332,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 '}
      @@ -355,7 +355,7 @@ for simplicity. It shows a pane of info.

      -aliases = ['h', '?']
      +aliases = ['?', 'h']
      @@ -381,7 +381,7 @@ for simplicity. It shows a pane of info.

      -search_index_entry = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}
      +search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}
      diff --git a/docs/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 ca9a63313a..9b77346f2c 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 @@ -153,7 +153,7 @@ the module given by settings.CONNECTION_SCREEN_MODULE.

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

      -search_index_entry = {'aliases': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co conn', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}
      +search_index_entry = {'aliases': 'conn co con', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn co con', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}
      @@ -205,7 +205,7 @@ there is no object yet before the account has logged in)

      -aliases = ['cr', 'cre']
      +aliases = ['cre', 'cr']
      @@ -247,7 +247,7 @@ name enclosed in quotes:

      -search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}
      +search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}
      @@ -311,7 +311,7 @@ All it does is display the connect screen.

      -aliases = ['look', 'l']
      +aliases = ['l', 'look']
      @@ -337,7 +337,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 '}
      @@ -355,7 +355,7 @@ for simplicity. It shows a pane of info.

      -aliases = ['h', '?']
      +aliases = ['?', 'h']
      @@ -381,7 +381,7 @@ for simplicity. It shows a pane of info.

      -search_index_entry = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}
      +search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}
      diff --git a/docs/latest/api/evennia.contrib.base_systems.ingame_python.commands.html b/docs/latest/api/evennia.contrib.base_systems.ingame_python.commands.html index e75581b399..c003ff99f6 100644 --- a/docs/latest/api/evennia.contrib.base_systems.ingame_python.commands.html +++ b/docs/latest/api/evennia.contrib.base_systems.ingame_python.commands.html @@ -130,7 +130,7 @@
      -aliases = ['@callbacks', '@callback', '@calls']
      +aliases = ['@calls', '@callback', '@callbacks']
      @@ -211,7 +211,7 @@ on user permission.

      -search_index_entry = {'aliases': '@callbacks @callback @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callbacks callback calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}
      +search_index_entry = {'aliases': '@calls @callback @callbacks', 'category': 'building', 'key': '@call', 'no_prefix': 'call calls callback callbacks', 'tags': '', 'text': '\n Command to edit callbacks.\n '}
      diff --git a/docs/latest/api/evennia.contrib.base_systems.ingame_reports.reports.html b/docs/latest/api/evennia.contrib.base_systems.ingame_reports.reports.html index e7f4c7bde0..0e21045dc4 100644 --- a/docs/latest/api/evennia.contrib.base_systems.ingame_reports.reports.html +++ b/docs/latest/api/evennia.contrib.base_systems.ingame_reports.reports.html @@ -174,7 +174,7 @@ players

      -aliases = ['manage ideas', 'manage bugs', 'manage players']
      +aliases = ['manage players', 'manage ideas', 'manage bugs']
      @@ -208,7 +208,7 @@ to all the variables defined therein.

      -search_index_entry = {'aliases': 'manage ideas manage bugs manage players', 'category': 'general', 'key': 'manage reports', 'no_prefix': ' manage ideas manage bugs manage players', 'tags': '', 'text': '\n manage the various reports\n\n Usage:\n manage [report type]\n\n Available report types:\n bugs\n ideas\n players\n\n Initializes a menu for reviewing and changing the status of current reports.\n '}
      +search_index_entry = {'aliases': 'manage players manage ideas manage bugs', 'category': 'general', 'key': 'manage reports', 'no_prefix': ' manage players manage ideas manage bugs', 'tags': '', 'text': '\n manage the various reports\n\n Usage:\n manage [report type]\n\n Available report types:\n bugs\n ideas\n players\n\n Initializes a menu for reviewing and changing the status of current reports.\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 68e97fe489..23741dd94e 100644 --- a/docs/latest/api/evennia.contrib.full_systems.evscaperoom.commands.html +++ b/docs/latest/api/evennia.contrib.full_systems.evscaperoom.commands.html @@ -225,7 +225,7 @@ the operation will be general or on the room.

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

      -search_index_entry = {'aliases': 'quit q abort chicken out', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' quit q abort chicken out', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}
      +search_index_entry = {'aliases': 'q quit abort chicken out', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' q quit abort chicken out', '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 '}
      @@ -270,7 +270,7 @@ set in self.parse())

      -aliases = ['ls', 'l']
      +aliases = ['l', 'ls']
      @@ -304,7 +304,7 @@ set in self.parse())

      -search_index_entry = {'aliases': 'ls l', 'category': 'evscaperoom', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n Look at the room, an object or the currently focused object\n\n Usage:\n look [obj]\n\n '}
      +search_index_entry = {'aliases': 'l ls', 'category': 'evscaperoom', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n Look at the room, an object or the currently focused object\n\n Usage:\n look [obj]\n\n '}
      @@ -385,7 +385,7 @@ shout

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

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

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

      -search_index_entry = {'aliases': 'examine e ex unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' examine e ex unfocus', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}
      +search_index_entry = {'aliases': 'examine e unfocus ex', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' examine e unfocus ex', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}
      @@ -595,7 +595,7 @@ set in self.parse())

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

      -search_index_entry = {'aliases': 'inventory inv give i', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inventory inv give i', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}
      +search_index_entry = {'aliases': 'i inv give inventory', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' i inv give inventory', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}
      diff --git a/docs/latest/api/evennia.contrib.game_systems.achievements.achievements.html b/docs/latest/api/evennia.contrib.game_systems.achievements.achievements.html index cbe051aa3d..47a6ce4f06 100644 --- a/docs/latest/api/evennia.contrib.game_systems.achievements.achievements.html +++ b/docs/latest/api/evennia.contrib.game_systems.achievements.achievements.html @@ -289,7 +289,7 @@ achievements/progress rats

      -aliases = ['achievement', 'achieve', 'achieves']
      +aliases = ['achieves', 'achievement', 'achieve']
      @@ -337,7 +337,7 @@ to all the variables defined therein.

      -search_index_entry = {'aliases': 'achievement achieve achieves', 'category': 'general', 'key': 'achievements', 'no_prefix': ' achievement achieve achieves', 'tags': '', 'text': '\n view achievements\n\n Usage:\n achievements[/switches] [args]\n\n Switches:\n all View all achievements, including locked ones.\n completed View achievements you\'ve completed.\n progress View achievements you have partially completed\n\n Check your achievement statuses or browse the list. Providing a command argument\n will search all your currently unlocked achievements for matches, and the switches\n will filter the list to something other than "all unlocked". Combining a command\n argument with a switch will search only in that list.\n\n Examples:\n achievements apples\n achievements/all\n achievements/progress rats\n '}
      +search_index_entry = {'aliases': 'achieves achievement achieve', 'category': 'general', 'key': 'achievements', 'no_prefix': ' achieves achievement achieve', 'tags': '', 'text': '\n view achievements\n\n Usage:\n achievements[/switches] [args]\n\n Switches:\n all View all achievements, including locked ones.\n completed View achievements you\'ve completed.\n progress View achievements you have partially completed\n\n Check your achievement statuses or browse the list. Providing a command argument\n will search all your currently unlocked achievements for matches, and the switches\n will filter the list to something other than "all unlocked". Combining a command\n argument with a switch will search only in that list.\n\n Examples:\n achievements apples\n achievements/all\n achievements/progress rats\n '}
      diff --git a/docs/latest/api/evennia.contrib.game_systems.barter.barter.html b/docs/latest/api/evennia.contrib.game_systems.barter.barter.html index 995664a60e..180d50f58c 100644 --- a/docs/latest/api/evennia.contrib.game_systems.barter.barter.html +++ b/docs/latest/api/evennia.contrib.game_systems.barter.barter.html @@ -759,7 +759,7 @@ try to influence the other part in the deal.

      -aliases = ['deal', 'offers']
      +aliases = ['offers', 'deal']
      @@ -785,7 +785,7 @@ try to influence the other part in the deal.

      -search_index_entry = {'aliases': 'deal offers', 'category': 'trading', 'key': 'status', 'no_prefix': ' deal offers', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}
      +search_index_entry = {'aliases': 'offers deal', 'category': 'trading', 'key': 'status', 'no_prefix': ' offers deal', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}
      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 158896c484..8c8be515bb 100644 --- a/docs/latest/api/evennia.contrib.game_systems.clothing.clothing.html +++ b/docs/latest/api/evennia.contrib.game_systems.clothing.clothing.html @@ -636,7 +636,7 @@ inv

      -aliases = ['inv', 'i']
      +aliases = ['i', 'inv']
      @@ -667,7 +667,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.html b/docs/latest/api/evennia.contrib.game_systems.html index d4ad4dd4b1..7ae9d7cbc7 100644 --- a/docs/latest/api/evennia.contrib.game_systems.html +++ b/docs/latest/api/evennia.contrib.game_systems.html @@ -178,6 +178,11 @@
    • evennia.contrib.game_systems.puzzles.tests
  • +
  • evennia.contrib.game_systems.storage +
  • evennia.contrib.game_systems.turnbattle
    • evennia.contrib.game_systems.turnbattle.tb_basic
    • evennia.contrib.game_systems.turnbattle.tb_equip
    • diff --git a/docs/latest/api/evennia.contrib.game_systems.puzzles.tests.html b/docs/latest/api/evennia.contrib.game_systems.puzzles.tests.html index 2434ec7528..f41a4372bf 100644 --- a/docs/latest/api/evennia.contrib.game_systems.puzzles.tests.html +++ b/docs/latest/api/evennia.contrib.game_systems.puzzles.tests.html @@ -17,7 +17,7 @@ - + @@ -34,7 +34,7 @@ modules |
    • - next |
    • evennia.contrib.game_systems.puzzles.puzzles

      Next topic

      -

      evennia.contrib.game_systems.turnbattle

      +

      evennia.contrib.game_systems.storage

      Previous topic

      -

      evennia.contrib.game_systems.puzzles.tests

      +

      evennia.contrib.game_systems.storage.tests

      Next topic

      evennia.contrib.game_systems.turnbattle.tb_basic

      @@ -148,7 +148,7 @@ next |
    • - previous |
    • 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 9dd6a535f0..c662d4ed02 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 @@ -686,7 +686,7 @@ if there are still any actions you can take.

      -aliases = ['hold', 'wait']
      +aliases = ['wait', 'hold']
      @@ -712,7 +712,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 0bed424fda..b43d0f5a48 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 @@ -581,7 +581,7 @@ if there are still any actions you can take.

      -aliases = ['hold', 'wait']
      +aliases = ['wait', 'hold']
      @@ -601,7 +601,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 9b7607f915..1e2a340556 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 @@ -704,7 +704,7 @@ if there are still any actions you can take.

      -aliases = ['hold', 'wait']
      +aliases = ['wait', 'hold']
      @@ -724,7 +724,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 0f29530eac..62ecd7c88e 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 @@ -483,7 +483,7 @@ if there are still any actions you can take.

      -aliases = ['hold', 'wait']
      +aliases = ['wait', 'hold']
      @@ -503,7 +503,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 d06a19f299..66eedd87ae 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 @@ -943,7 +943,7 @@ if there are still any actions you can take.

      -aliases = ['hold', 'wait']
      +aliases = ['wait', 'hold']
      @@ -963,7 +963,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.extended_room.extended_room.html b/docs/latest/api/evennia.contrib.grid.extended_room.extended_room.html index 3f01341f75..712938071f 100644 --- a/docs/latest/api/evennia.contrib.grid.extended_room.extended_room.html +++ b/docs/latest/api/evennia.contrib.grid.extended_room.extended_room.html @@ -657,7 +657,7 @@ look *<account&g
      -aliases = ['ls', 'l']
      +aliases = ['l', 'ls']
      @@ -677,7 +677,7 @@ look *<account&g
      -search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look\n\n Usage:\n look\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects in your vicinity.\n '}
      +search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look\n\n Usage:\n look\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects in your vicinity.\n '}
      diff --git a/docs/latest/api/evennia.contrib.grid.xyzgrid.commands.html b/docs/latest/api/evennia.contrib.grid.xyzgrid.commands.html index f6516a49a8..fd3910210f 100644 --- a/docs/latest/api/evennia.contrib.grid.xyzgrid.commands.html +++ b/docs/latest/api/evennia.contrib.grid.xyzgrid.commands.html @@ -436,7 +436,7 @@ there is no room above/below you, your movement will fail.

      -aliases = ['dive', 'fly']
      +aliases = ['fly', 'dive']
      @@ -459,7 +459,7 @@ to all the variables defined therein.

      -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 '}
      +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 '}
      diff --git a/docs/latest/api/evennia.contrib.html b/docs/latest/api/evennia.contrib.html index 0661ca67bf..0434503704 100644 --- a/docs/latest/api/evennia.contrib.html +++ b/docs/latest/api/evennia.contrib.html @@ -277,6 +277,11 @@ useful but are deemed too game-specific to go into the core library.

    • evennia.contrib.game_systems.puzzles.tests
  • +
  • evennia.contrib.game_systems.storage +
  • evennia.contrib.game_systems.turnbattle
    • evennia.contrib.game_systems.turnbattle.tb_basic
    • evennia.contrib.game_systems.turnbattle.tb_equip
    • diff --git a/docs/latest/api/evennia.contrib.rpg.dice.dice.html b/docs/latest/api/evennia.contrib.rpg.dice.dice.html index 3d7ee8d157..fad4cb5e02 100644 --- a/docs/latest/api/evennia.contrib.rpg.dice.dice.html +++ b/docs/latest/api/evennia.contrib.rpg.dice.dice.html @@ -340,7 +340,7 @@ everyone but the person rolling.

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

      -search_index_entry = {'aliases': '@dice roll', 'category': 'general', 'key': 'dice', 'no_prefix': ' dice roll', 'tags': '', 'text': "\n roll dice\n\n Usage:\n dice[/switch] <nr>d<sides> [modifier] [success condition]\n\n Switch:\n hidden - tell the room the roll is being done, but don't show the result\n secret - don't inform the room about neither roll nor result\n\n Examples:\n dice 3d6 + 4\n dice 1d100 - 2 < 50\n\n This will roll the given number of dice with given sides and modifiers.\n So e.g. 2d6 + 3 means to 'roll a 6-sided die 2 times and add the result,\n then add 3 to the total'.\n Accepted modifiers are +, -, * and /.\n A success condition is given as normal Python conditionals\n (<,>,<=,>=,==,!=). So e.g. 2d6 + 3 > 10 means that the roll will succeed\n only if the final result is above 8. If a success condition is given, the\n outcome (pass/fail) will be echoed along with how much it succeeded/failed\n with. The hidden/secret switches will hide all or parts of the roll from\n everyone but the person rolling.\n "}
      +search_index_entry = {'aliases': 'roll @dice', 'category': 'general', 'key': 'dice', 'no_prefix': ' roll dice', 'tags': '', 'text': "\n roll dice\n\n Usage:\n dice[/switch] <nr>d<sides> [modifier] [success condition]\n\n Switch:\n hidden - tell the room the roll is being done, but don't show the result\n secret - don't inform the room about neither roll nor result\n\n Examples:\n dice 3d6 + 4\n dice 1d100 - 2 < 50\n\n This will roll the given number of dice with given sides and modifiers.\n So e.g. 2d6 + 3 means to 'roll a 6-sided die 2 times and add the result,\n then add 3 to the total'.\n Accepted modifiers are +, -, * and /.\n A success condition is given as normal Python conditionals\n (<,>,<=,>=,==,!=). So e.g. 2d6 + 3 > 10 means that the roll will succeed\n only if the final result is above 8. If a success condition is given, the\n outcome (pass/fail) will be echoed along with how much it succeeded/failed\n with. The hidden/secret switches will hide all or parts of the roll from\n everyone but the person rolling.\n "}
      diff --git a/docs/latest/api/evennia.contrib.rpg.rpsystem.rpsystem.html b/docs/latest/api/evennia.contrib.rpg.rpsystem.rpsystem.html index 97a20164de..e7d57657fb 100644 --- a/docs/latest/api/evennia.contrib.rpg.rpsystem.rpsystem.html +++ b/docs/latest/api/evennia.contrib.rpg.rpsystem.rpsystem.html @@ -736,7 +736,7 @@ commands the caller can use.

      -aliases = ['"', "'"]
      +aliases = ["'", '"']
      @@ -767,7 +767,7 @@ commands the caller can use.

      -search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}
      +search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}
      diff --git a/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_twitch.html b/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_twitch.html index b4a3e80767..dc40c5b194 100644 --- a/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_twitch.html +++ b/docs/latest/api/evennia.contrib.tutorials.evadventure.combat_twitch.html @@ -395,7 +395,7 @@ look *<account&g
      -aliases = ['ls', 'l']
      +aliases = ['l', 'ls']
      @@ -415,7 +415,7 @@ look *<account&g
      -search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}
      +search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}
      @@ -491,7 +491,7 @@ boost INT Wizard Goblin

      -aliases = ['foil', 'boost']
      +aliases = ['boost', 'foil']
      @@ -525,7 +525,7 @@ set in self.parse())

      -search_index_entry = {'aliases': 'foil boost', 'category': 'combat', 'key': 'stunt', 'no_prefix': ' foil boost', 'tags': '', 'text': '\n Perform a combat stunt, that boosts an ally against a target, or\n foils an enemy, giving them disadvantage against an ally.\n\n Usage:\n boost [ability] <recipient> <target>\n foil [ability] <recipient> <target>\n boost [ability] <target> (same as boost me <target>)\n foil [ability] <target> (same as foil <target> me)\n\n Example:\n boost STR me Goblin\n boost DEX Goblin\n foil STR Goblin me\n foil INT Goblin\n boost INT Wizard Goblin\n\n '}
      +search_index_entry = {'aliases': 'boost foil', 'category': 'combat', 'key': 'stunt', 'no_prefix': ' boost foil', 'tags': '', 'text': '\n Perform a combat stunt, that boosts an ally against a target, or\n foils an enemy, giving them disadvantage against an ally.\n\n Usage:\n boost [ability] <recipient> <target>\n foil [ability] <recipient> <target>\n boost [ability] <target> (same as boost me <target>)\n foil [ability] <target> (same as foil <target> me)\n\n Example:\n boost STR me Goblin\n boost DEX Goblin\n foil STR Goblin me\n foil INT Goblin\n boost INT Wizard Goblin\n\n '}
      diff --git a/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html b/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html index 18e51861b5..6e54a30a6b 100644 --- a/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html +++ b/docs/latest/api/evennia.contrib.tutorials.evadventure.commands.html @@ -206,7 +206,7 @@ self.args).

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

      -search_index_entry = {'aliases': 'inv i', 'category': 'general', 'key': 'inventory', 'no_prefix': ' inv i', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}
      +search_index_entry = {'aliases': 'i inv', 'category': 'general', 'key': 'inventory', 'no_prefix': ' i inv', 'tags': '', 'text': '\n View your inventory\n\n Usage:\n inventory\n\n '}
      diff --git a/docs/latest/api/evennia.contrib.tutorials.red_button.red_button.html b/docs/latest/api/evennia.contrib.tutorials.red_button.red_button.html index 330da5d8ff..805fb9d6c8 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 @@ -167,7 +167,7 @@ such as when closing the lid and un-blinding a character.

      -aliases = ['push', 'press button', 'press']
      +aliases = ['press', 'push', 'press button']
      @@ -196,7 +196,7 @@ check if the lid is open or closed.

      -search_index_entry = {'aliases': 'push press button press', 'category': 'general', 'key': 'push button', 'no_prefix': ' push press button press', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}
      +search_index_entry = {'aliases': 'press push press button', 'category': 'general', 'key': 'push button', 'no_prefix': ' press push press button', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}
      @@ -266,7 +266,7 @@ check if the lid is open or closed.

      -aliases = ['smash', 'break lid', 'smash lid']
      +aliases = ['smash lid', 'smash', 'break lid']
      @@ -293,7 +293,7 @@ break.

      -search_index_entry = {'aliases': 'smash break lid smash lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash break lid 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': 'smash lid smash break lid', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' smash lid smash break 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 '}
      @@ -393,7 +393,7 @@ be mutually exclusive.

      -aliases = ['push', 'press button', 'press']
      +aliases = ['press', 'push', 'press button']
      @@ -422,7 +422,7 @@ set in self.parse())

      -search_index_entry = {'aliases': 'push press button press', 'category': 'general', 'key': 'push button', 'no_prefix': ' push press button press', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}
      +search_index_entry = {'aliases': 'press push press button', 'category': 'general', 'key': 'push button', 'no_prefix': ' press push press button', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}
      @@ -520,7 +520,7 @@ be mutually exclusive.

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

      -search_index_entry = {'aliases': 'get feel listen examine ex l', 'category': 'general', 'key': 'look', 'no_prefix': ' get feel listen examine ex 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 "}
      +search_index_entry = {'aliases': 'l feel ex get listen examine', 'category': 'general', 'key': 'look', 'no_prefix': ' l feel ex get listen examine', '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 89746cdb63..73e203ac1e 100644 --- a/docs/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html +++ b/docs/latest/api/evennia.contrib.tutorials.tutorial_world.objects.html @@ -439,7 +439,7 @@ of the object. We overload it with our own version.

      -aliases = ['burn', 'light']
      +aliases = ['light', 'burn']
      @@ -466,7 +466,7 @@ to sit on a “lightable” object, we operate only on self.obj.

      -search_index_entry = {'aliases': 'burn light', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' burn light', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}
      +search_index_entry = {'aliases': 'light burn', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' light burn', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}
      @@ -570,7 +570,7 @@ shift green root up/down

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

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

      -aliases = ['press button', 'push button', 'button']
      +aliases = ['push button', 'button', 'press button']
      @@ -649,7 +649,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 '}
      @@ -793,7 +793,7 @@ parry - forgoes your attack but will make you harder to hit on next

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

      -search_index_entry = {'aliases': 'chop defend fight slash stab kill pierce thrust hit parry bash', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' chop defend fight slash stab kill pierce thrust hit parry bash', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}
      +search_index_entry = {'aliases': 'fight chop stab defend parry bash hit pierce slash thrust kill', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' fight chop stab defend parry bash hit pierce slash thrust kill', '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 b3f9425012..c35d63cc99 100644 --- a/docs/latest/api/evennia.contrib.tutorials.tutorial_world.rooms.html +++ b/docs/latest/api/evennia.contrib.tutorials.tutorial_world.rooms.html @@ -262,7 +262,7 @@ code except for adding in the details.

      -aliases = ['ls', 'l']
      +aliases = ['l', 'ls']
      @@ -277,7 +277,7 @@ code except for adding in the details.

      -search_index_entry = {'aliases': 'ls l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n looks at the room and on details\n\n Usage:\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects\n in your vicinity.\n\n Tutorial: This is a child of the default Look command, that also\n allows us to look at "details" in the room. These details are\n things to examine and offers some extra description without\n actually having to be actual database objects. It uses the\n return_detail() hook on TutorialRooms for this.\n '}
      +search_index_entry = {'aliases': 'l ls', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n looks at the room and on details\n\n Usage:\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects\n in your vicinity.\n\n Tutorial: This is a child of the default Look command, that also\n allows us to look at "details" in the room. These details are\n things to examine and offers some extra description without\n actually having to be actual database objects. It uses the\n return_detail() hook on TutorialRooms for this.\n '}
      @@ -830,7 +830,7 @@ if they fall off the bridge.

      -aliases = ['h', '?']
      +aliases = ['?', 'h']
      @@ -856,7 +856,7 @@ if they fall off the bridge.

      -search_index_entry = {'aliases': 'h ?', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}
      +search_index_entry = {'aliases': '? h', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}
      @@ -982,7 +982,7 @@ to find something.

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

      -search_index_entry = {'aliases': 'search feel around feel fiddle l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' search feel around feel fiddle 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 '}
      +search_index_entry = {'aliases': 'l feel feel around search fiddle', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l feel feel around search fiddle', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}
      diff --git a/docs/latest/api/evennia.contrib.utils.git_integration.git_integration.html b/docs/latest/api/evennia.contrib.utils.git_integration.git_integration.html index f5b007434a..bea408ff8e 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 @@ -222,7 +222,7 @@ git evennia pull - Pull the latest evennia code.

      -directory = '/tmp/tmpw_hn5gkn/fb0dedd893b6a9ca26f9f13e3344b9d78bdcd4a2/evennia'
      +directory = '/tmp/tmpy3ib186_/67db991715a0c2095c5d3a90d52a0c9a6652906e/evennia'
      @@ -283,7 +283,7 @@ git pull - Pull the latest code from your current branch.

      -directory = '/tmp/tmpw_hn5gkn/fb0dedd893b6a9ca26f9f13e3344b9d78bdcd4a2/evennia/game_template'
      +directory = '/tmp/tmpy3ib186_/67db991715a0c2095c5d3a90d52a0c9a6652906e/evennia/game_template'
      diff --git a/docs/latest/api/evennia.html b/docs/latest/api/evennia.html index 17bd1772ba..7eb6f6e5f9 100644 --- a/docs/latest/api/evennia.html +++ b/docs/latest/api/evennia.html @@ -427,6 +427,11 @@ with ‘q’, remove the break line and restart server when finished.

    • evennia.contrib.game_systems.puzzles.tests
  • +
  • evennia.contrib.game_systems.storage +
  • evennia.contrib.game_systems.turnbattle
    • evennia.contrib.game_systems.turnbattle.tb_basic
    • evennia.contrib.game_systems.turnbattle.tb_equip
    • diff --git a/docs/latest/api/evennia.utils.eveditor.html b/docs/latest/api/evennia.utils.eveditor.html index 5c6fc2cc27..3d14250635 100644 --- a/docs/latest/api/evennia.utils.eveditor.html +++ b/docs/latest/api/evennia.utils.eveditor.html @@ -356,7 +356,7 @@ indentation.

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

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

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

      -search_index_entry = {'aliases': 'abort no y n __nomatch_command a yes', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' abort no y n __nomatch_command a yes', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}
      +search_index_entry = {'aliases': 'no yes __nomatch_command a y n abort', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' no yes __nomatch_command a y n abort', '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 e00ca877e4..3eb19861a1 100644 --- a/docs/latest/api/evennia.utils.evmore.html +++ b/docs/latest/api/evennia.utils.evmore.html @@ -151,7 +151,7 @@ the caller.msg() construct every time the page is updated.

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

      -search_index_entry = {'aliases': 'e abort previous q p n next quit a top t end', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' e abort previous q p n next quit a top t end', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}
      +search_index_entry = {'aliases': 'e previous a q next n end quit top p abort t', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' e previous a q next n end quit top p abort t', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}
      diff --git a/docs/latest/genindex.html b/docs/latest/genindex.html index c94a164392..825da7fbb1 100644 --- a/docs/latest/genindex.html +++ b/docs/latest/genindex.html @@ -1171,6 +1171,16 @@
    • (evennia.contrib.game_systems.puzzles.puzzles.CmdListPuzzleRecipes attribute)
    • (evennia.contrib.game_systems.puzzles.puzzles.CmdUsePuzzleParts attribute) +
    • +
    • (evennia.contrib.game_systems.storage.storage.CmdList attribute) +
    • +
    • (evennia.contrib.game_systems.storage.storage.CmdRetrieve attribute) +
    • +
    • (evennia.contrib.game_systems.storage.storage.CmdStorage attribute) +
    • +
    • (evennia.contrib.game_systems.storage.storage.CmdStore attribute) +
    • +
    • (evennia.contrib.game_systems.storage.storage.StorageCommand attribute)
    • (evennia.contrib.game_systems.turnbattle.tb_basic.CmdAttack attribute)
    • @@ -1626,11 +1636,11 @@
    • APIRootView (evennia.web.api.root.APIRootRouter attribute)
    • appearance_template (evennia.objects.objects.DefaultObject attribute) -
    • -
    • append() (evennia.locks.lockhandler.LockHandler method)
  • at_pre_drop() (evennia.contrib.game_systems.turnbattle.tb_equip.TBEArmor method) @@ -4048,6 +4062,8 @@
  • CmdLineInput (class in evennia.utils.eveditor)
  • CmdLink (class in evennia.commands.default.building) +
  • +
  • CmdList (class in evennia.contrib.game_systems.storage.storage)
  • CmdListArmedPuzzles (class in evennia.contrib.game_systems.puzzles.puzzles)
  • @@ -4115,10 +4131,10 @@
  • CmdOffer (class in evennia.contrib.game_systems.barter.barter)
  • - - + +
  • CmdRetrieve (class in evennia.contrib.game_systems.storage.storage) +
  • CmdRSS2Chan (class in evennia.commands.default.comms)
  • CmdSaveYesNo (class in evennia.utils.eveditor) @@ -4326,6 +4344,10 @@
  • CmdStop (class in evennia.contrib.grid.slow_exit.slow_exit) +
  • +
  • CmdStorage (class in evennia.contrib.game_systems.storage.storage) +
  • +
  • CmdStore (class in evennia.contrib.game_systems.storage.storage)
  • CmdStunt (class in evennia.contrib.tutorials.evadventure.combat_twitch)
  • @@ -7213,6 +7235,27 @@ +
  • + evennia.contrib.game_systems.storage + +
  • +
  • + evennia.contrib.game_systems.storage.storage + +
  • +
  • + evennia.contrib.game_systems.storage.tests + +
  • @@ -7712,6 +7755,8 @@
  • module
  • + + - - +
  • StorageCmdSet (class in evennia.contrib.game_systems.storage.storage) +
  • +
  • StorageCommand (class in evennia.contrib.game_systems.storage.storage) +
  • Store (class in evennia.scripts.scripts)
  • store() (evennia.server.models.ServerConfig method) @@ -22435,6 +22548,8 @@
  • test_list_cmdsets() (evennia.commands.default.tests.TestBuilding method) +
  • +
  • test_list_nothing_stored() (evennia.contrib.game_systems.storage.tests.TestStorage method)
  • test_load_recipes() (evennia.contrib.game_systems.crafting.tests.TestCraftUtils method)
  • @@ -22749,6 +22864,8 @@
  • test_remove__with_obj() (evennia.contrib.tutorials.evadventure.tests.test_equipment.TestEquipment method)
  • test_remove__with_slot() (evennia.contrib.tutorials.evadventure.tests.test_equipment.TestEquipment method) +
  • +
  • test_remove_add_storage() (evennia.contrib.game_systems.storage.tests.TestStorage method)
  • test_remove_combatant() (evennia.contrib.tutorials.evadventure.tests.test_combat.EvAdventureTurnbasedCombatHandlerTest method)
  • @@ -22838,10 +22955,10 @@
  • test_sessions() (evennia.commands.default.tests.TestAccount method)
  • - - +