2020-06-13 00:36:45 +02:00
<!DOCTYPE html>
2020-06-14 21:48:02 +02:00
2020-10-15 01:31:30 +02:00
< html >
2020-06-15 21:52:33 +02:00
< head >
< meta charset = "utf-8" / >
2020-10-15 01:31:30 +02:00
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" / >
2020-06-15 21:52:33 +02:00
< title > evennia.objects.objects — Evennia 1.0-dev documentation< / title >
< link rel = "stylesheet" href = "../../../_static/nature.css" type = "text/css" / >
< link rel = "stylesheet" href = "../../../_static/pygments.css" type = "text/css" / >
< script id = "documentation_options" data-url_root = "../../../" src = "../../../_static/documentation_options.js" > < / script >
< script src = "../../../_static/jquery.js" > < / script >
< script src = "../../../_static/underscore.js" > < / script >
< script src = "../../../_static/doctools.js" > < / script >
< script src = "../../../_static/language_data.js" > < / script >
< link rel = "shortcut icon" href = "../../../_static/favicon.ico" / >
< link rel = "index" title = "Index" href = "../../../genindex.html" / >
< link rel = "search" title = "Search" href = "../../../search.html" / >
< / head > < body >
< div class = "related" role = "navigation" aria-label = "related navigation" >
< h3 > Navigation< / h3 >
< ul >
< li class = "right" style = "margin-right: 10px" >
< a href = "../../../genindex.html" title = "General Index"
accesskey="I">index< / a > < / li >
< li class = "right" >
< a href = "../../../py-modindex.html" title = "Python Module Index"
>modules< / a > |< / li >
2020-07-14 00:21:00 +02:00
< li class = "nav-item nav-item-0" > < a href = "../../../index.html" > Evennia 1.0-dev< / a > » < / li >
2020-06-15 21:52:33 +02:00
< li class = "nav-item nav-item-1" > < a href = "../../index.html" > Module code< / a > » < / li >
2020-10-15 01:31:30 +02:00
< li class = "nav-item nav-item-2" > < a href = "../../evennia.html" accesskey = "U" > evennia< / a > » < / li >
< li class = "nav-item nav-item-this" > < a href = "" > evennia.objects.objects< / a > < / li >
2020-06-15 21:52:33 +02:00
< / ul >
2021-06-23 18:58:26 +02:00
< div class = "develop" > develop branch< / div >
2020-06-15 21:52:33 +02:00
< / div >
< div class = "document" >
< div class = "documentwrapper" >
< div class = "bodywrapper" >
< div class = "body" role = "main" >
2020-06-13 00:36:45 +02:00
< h1 > Source code for evennia.objects.objects< / h1 > < div class = "highlight" > < pre >
< span > < / span > < span class = "sd" > " " " < / span >
< span class = "sd" > This module defines the basic `DefaultObject` and its children< / span >
< span class = "sd" > `DefaultCharacter`, `DefaultAccount`, `DefaultRoom` and `DefaultExit`.< / span >
< span class = "sd" > These are the (default) starting points for all in-game visible< / span >
< span class = "sd" > entities.< / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > This is the v1.0 develop version (for ref in doc building).< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "kn" > import< / span > < span class = "nn" > time< / span >
2020-12-20 14:36:24 +01:00
< span class = "kn" > from< / span > < span class = "nn" > collections< / span > < span class = "kn" > import< / span > < span class = "n" > defaultdict< / span >
2021-06-23 18:58:26 +02:00
< span class = "kn" > import< / span > < span class = "nn" > inflect< / span >
2020-12-20 14:36:24 +01:00
< span class = "kn" > from< / span > < span class = "nn" > django.conf< / span > < span class = "kn" > import< / span > < span class = "n" > settings< / span >
2021-06-23 18:58:26 +02:00
< span class = "kn" > from< / span > < span class = "nn" > django.utils.translation< / span > < span class = "kn" > import< / span > < span class = "n" > gettext< / span > < span class = "k" > as< / span > < span class = "n" > _< / span >
2020-12-20 14:36:24 +01:00
2021-06-23 18:58:26 +02:00
< span class = "kn" > from< / span > < span class = "nn" > evennia.commands< / span > < span class = "kn" > import< / span > < span class = "n" > cmdset< / span >
< span class = "kn" > from< / span > < span class = "nn" > evennia.commands.cmdsethandler< / span > < span class = "kn" > import< / span > < span class = "n" > CmdSetHandler< / span >
2020-12-20 14:36:24 +01:00
< span class = "kn" > from< / span > < span class = "nn" > evennia.objects.manager< / span > < span class = "kn" > import< / span > < span class = "n" > ObjectManager< / span >
< span class = "kn" > from< / span > < span class = "nn" > evennia.objects.models< / span > < span class = "kn" > import< / span > < span class = "n" > ObjectDB< / span >
< span class = "kn" > from< / span > < span class = "nn" > evennia.scripts.scripthandler< / span > < span class = "kn" > import< / span > < span class = "n" > ScriptHandler< / span >
2021-06-23 18:58:26 +02:00
< span class = "kn" > from< / span > < span class = "nn" > evennia.typeclasses.attributes< / span > < span class = "kn" > import< / span > < span class = "n" > ModelAttributeBackend< / span > < span class = "p" > ,< / span > < span class = "n" > NickHandler< / span >
< span class = "kn" > from< / span > < span class = "nn" > evennia.typeclasses.models< / span > < span class = "kn" > import< / span > < span class = "n" > TypeclassBase< / span >
< span class = "kn" > from< / span > < span class = "nn" > evennia.utils< / span > < span class = "kn" > import< / span > < span class = "n" > ansi< / span > < span class = "p" > ,< / span > < span class = "n" > create< / span > < span class = "p" > ,< / span > < span class = "n" > funcparser< / span > < span class = "p" > ,< / span > < span class = "n" > logger< / span > < span class = "p" > ,< / span > < span class = "n" > search< / span >
< span class = "kn" > from< / span > < span class = "nn" > evennia.utils.utils< / span > < span class = "kn" > import< / span > < span class = "p" > (< / span > < span class = "n" > class_from_module< / span > < span class = "p" > ,< / span > < span class = "n" > is_iter< / span > < span class = "p" > ,< / span > < span class = "n" > lazy_property< / span > < span class = "p" > ,< / span >
< span class = "n" > list_to_string< / span > < span class = "p" > ,< / span > < span class = "n" > make_iter< / span > < span class = "p" > ,< / span > < span class = "n" > to_str< / span > < span class = "p" > ,< / span >
< span class = "n" > variable_from_module< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "n" > _INFLECT< / span > < span class = "o" > =< / span > < span class = "n" > inflect< / span > < span class = "o" > .< / span > < span class = "n" > engine< / span > < span class = "p" > ()< / span >
< span class = "n" > _MULTISESSION_MODE< / span > < span class = "o" > =< / span > < span class = "n" > settings< / span > < span class = "o" > .< / span > < span class = "n" > MULTISESSION_MODE< / span >
< span class = "n" > _ScriptDB< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "n" > _SESSIONS< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
2021-03-07 17:53:48 +01:00
< span class = "n" > _CMDHANDLER< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
2020-06-13 00:36:45 +02:00
< span class = "n" > _AT_SEARCH_RESULT< / span > < span class = "o" > =< / span > < span class = "n" > variable_from_module< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > settings< / span > < span class = "o" > .< / span > < span class = "n" > SEARCH_AT_RESULT< / span > < span class = "o" > .< / span > < span class = "n" > rsplit< / span > < span class = "p" > (< / span > < span class = "s2" > " ." < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > ))< / span >
2021-01-30 13:29:07 +01:00
< span class = "n" > _COMMAND_DEFAULT_CLASS< / span > < span class = "o" > =< / span > < span class = "n" > class_from_module< / span > < span class = "p" > (< / span > < span class = "n" > settings< / span > < span class = "o" > .< / span > < span class = "n" > COMMAND_DEFAULT_CLASS< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "c1" > # the sessid_max is based on the length of the db_sessid csv field (excluding commas)< / span >
< span class = "n" > _SESSID_MAX< / span > < span class = "o" > =< / span > < span class = "mi" > 16< / span > < span class = "k" > if< / span > < span class = "n" > _MULTISESSION_MODE< / span > < span class = "ow" > in< / span > < span class = "p" > (< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "mi" > 3< / span > < span class = "p" > )< / span > < span class = "k" > else< / span > < span class = "mi" > 1< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > _MSG_CONTENTS_PARSER< / span > < span class = "o" > =< / span > < span class = "n" > funcparser< / span > < span class = "o" > .< / span > < span class = "n" > FuncParser< / span > < span class = "p" > (< / span >
< span class = "p" > {< / span >
< span class = "s2" > " you" < / span > < span class = "p" > :< / span > < span class = "n" > funcparser< / span > < span class = "o" > .< / span > < span class = "n" > funcparser_callable_you< / span > < span class = "p" > ,< / span >
< span class = "s2" > " You" < / span > < span class = "p" > :< / span > < span class = "n" > funcparser< / span > < span class = "o" > .< / span > < span class = "n" > funcparser_callable_You< / span > < span class = "p" > ,< / span >
< span class = "s2" > " conj" < / span > < span class = "p" > :< / span > < span class = "n" > funcparser< / span > < span class = "o" > .< / span > < span class = "n" > funcparser_callable_conjugate< / span >
< span class = "p" > }< / span >
< span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
2021-06-23 18:58:26 +02:00
< div class = "viewcode-block" id = "ObjectSessionHandler" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.ObjectSessionHandler" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > ObjectSessionHandler< / span > < span class = "p" > :< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > Handles the get/setting of the sessid comma-separated integer field< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
2020-12-20 14:36:24 +01:00
< div class = "viewcode-block" id = "ObjectSessionHandler.__init__" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.ObjectSessionHandler.__init__" > [docs]< / a > < span class = "k" > def< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > obj< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Initializes the handler.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > obj (Object): The object on which the handler is defined.< / span >
< span class = "sd" > " " " < / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > =< / span > < span class = "n" > obj< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _sessid_cache< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _recache< / span > < span class = "p" > ()< / span > < / div >
2020-07-14 00:21:00 +02:00
< span class = "k" > def< / span > < span class = "nf" > _recache< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > global< / span > < span class = "n" > _SESSIONS< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > _SESSIONS< / span > < span class = "p" > :< / span >
2020-12-20 14:36:24 +01:00
< span class = "kn" > from< / span > < span class = "nn" > evennia.server.sessionhandler< / span > < span class = "kn" > import< / span > < span class = "n" > SESSIONS< / span > < span class = "k" > as< / span > < span class = "n" > _SESSIONS< / span >
2020-06-13 00:36:45 +02:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _sessid_cache< / span > < span class = "o" > =< / span > < span class = "nb" > list< / span > < span class = "p" > (< / span >
< span class = "nb" > set< / span > < span class = "p" > (< / span > < span class = "nb" > int< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > val< / span > < span class = "ow" > in< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db_sessid< / span > < span class = "ow" > or< / span > < span class = "s2" > " " < / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > split< / span > < span class = "p" > (< / span > < span class = "s2" > " ," < / span > < span class = "p" > )< / span > < span class = "k" > if< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "nb" > any< / span > < span class = "p" > (< / span > < span class = "n" > sessid< / span > < span class = "k" > for< / span > < span class = "n" > sessid< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _sessid_cache< / span > < span class = "k" > if< / span > < span class = "n" > sessid< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > _SESSIONS< / span > < span class = "p" > ):< / span >
< span class = "c1" > # cache is out of sync with sessionhandler! Only retain the ones in the handler.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _sessid_cache< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > sessid< / span > < span class = "k" > for< / span > < span class = "n" > sessid< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _sessid_cache< / span > < span class = "k" > if< / span > < span class = "n" > sessid< / span > < span class = "ow" > in< / span > < span class = "n" > _SESSIONS< / span > < span class = "p" > ]< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db_sessid< / span > < span class = "o" > =< / span > < span class = "s2" > " ," < / span > < span class = "o" > .< / span > < span class = "n" > join< / span > < span class = "p" > (< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > val< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _sessid_cache< / span > < span class = "p" > )< / span >
2020-07-14 00:21:00 +02:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > save< / span > < span class = "p" > (< / span > < span class = "n" > update_fields< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "s2" > " db_sessid" < / span > < span class = "p" > ])< / span >
2020-06-13 00:36:45 +02:00
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "ObjectSessionHandler.get" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.ObjectSessionHandler.get" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > get< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > sessid< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Get the sessions linked to this Object.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > sessid (int, optional): A specific session id.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > sessions (list): The sessions connected to this object. If `sessid` is given,< / span >
< span class = "sd" > this is a list of one (or zero) elements.< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > Aliased to `self.all()`.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > global< / span > < span class = "n" > _SESSIONS< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > _SESSIONS< / span > < span class = "p" > :< / span >
2020-12-20 14:36:24 +01:00
< span class = "kn" > from< / span > < span class = "nn" > evennia.server.sessionhandler< / span > < span class = "kn" > import< / span > < span class = "n" > SESSIONS< / span > < span class = "k" > as< / span > < span class = "n" > _SESSIONS< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > if< / span > < span class = "n" > sessid< / span > < span class = "p" > :< / span >
< span class = "n" > sessions< / span > < span class = "o" > =< / span > < span class = "p" > (< / span >
< span class = "p" > [< / span > < span class = "n" > _SESSIONS< / span > < span class = "p" > [< / span > < span class = "n" > sessid< / span > < span class = "p" > ]< / span > < span class = "k" > if< / span > < span class = "n" > sessid< / span > < span class = "ow" > in< / span > < span class = "n" > _SESSIONS< / span > < span class = "k" > else< / span > < span class = "kc" > None< / span > < span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "n" > sessid< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _sessid_cache< / span >
< span class = "k" > else< / span > < span class = "p" > []< / span >
< span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > sessions< / span > < span class = "o" > =< / span > < span class = "p" > [< / span >
< span class = "n" > _SESSIONS< / span > < span class = "p" > [< / span > < span class = "n" > ssid< / span > < span class = "p" > ]< / span > < span class = "k" > if< / span > < span class = "n" > ssid< / span > < span class = "ow" > in< / span > < span class = "n" > _SESSIONS< / span > < span class = "k" > else< / span > < span class = "kc" > None< / span > < span class = "k" > for< / span > < span class = "n" > ssid< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _sessid_cache< / span >
< span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "kc" > None< / span > < span class = "ow" > in< / span > < span class = "n" > sessions< / span > < span class = "p" > :< / span >
< span class = "c1" > # this happens only if our cache has gone out of sync with the SessionHandler.< / span >
2021-06-23 18:58:26 +02:00
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "n" > sessid< / span > < span class = "o" > =< / span > < span class = "n" > sessid< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > sessions< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "ObjectSessionHandler.all" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.ObjectSessionHandler.all" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > all< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Alias to get(), returning all sessions.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > sessions (list): All sessions.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > ()< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "ObjectSessionHandler.add" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.ObjectSessionHandler.add" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > add< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > session< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Add session to handler.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > session (Session or int): Session or session id to add.< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > We will only add a session/sessid if this actually also exists< / span >
< span class = "sd" > in the the core sessionhandler.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > global< / span > < span class = "n" > _SESSIONS< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > _SESSIONS< / span > < span class = "p" > :< / span >
2020-12-20 14:36:24 +01:00
< span class = "kn" > from< / span > < span class = "nn" > evennia.server.sessionhandler< / span > < span class = "kn" > import< / span > < span class = "n" > SESSIONS< / span > < span class = "k" > as< / span > < span class = "n" > _SESSIONS< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > sessid< / span > < span class = "o" > =< / span > < span class = "n" > session< / span > < span class = "o" > .< / span > < span class = "n" > sessid< / span >
< span class = "k" > except< / span > < span class = "ne" > AttributeError< / span > < span class = "p" > :< / span >
< span class = "n" > sessid< / span > < span class = "o" > =< / span > < span class = "n" > session< / span >
< span class = "n" > sessid_cache< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _sessid_cache< / span >
< span class = "k" > if< / span > < span class = "n" > sessid< / span > < span class = "ow" > in< / span > < span class = "n" > _SESSIONS< / span > < span class = "ow" > and< / span > < span class = "n" > sessid< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > sessid_cache< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > sessid_cache< / span > < span class = "p" > )< / span > < span class = "o" > > =< / span > < span class = "n" > _SESSID_MAX< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span >
< span class = "n" > sessid_cache< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > sessid< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db_sessid< / span > < span class = "o" > =< / span > < span class = "s2" > " ," < / span > < span class = "o" > .< / span > < span class = "n" > join< / span > < span class = "p" > (< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > val< / span > < span class = "ow" > in< / span > < span class = "n" > sessid_cache< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > save< / span > < span class = "p" > (< / span > < span class = "n" > update_fields< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "s2" > " db_sessid" < / span > < span class = "p" > ])< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "ObjectSessionHandler.remove" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.ObjectSessionHandler.remove" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > remove< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > session< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Remove session from handler.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > session (Session or int): Session or session id to remove.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > sessid< / span > < span class = "o" > =< / span > < span class = "n" > session< / span > < span class = "o" > .< / span > < span class = "n" > sessid< / span >
< span class = "k" > except< / span > < span class = "ne" > AttributeError< / span > < span class = "p" > :< / span >
< span class = "n" > sessid< / span > < span class = "o" > =< / span > < span class = "n" > session< / span >
< span class = "n" > sessid_cache< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _sessid_cache< / span >
< span class = "k" > if< / span > < span class = "n" > sessid< / span > < span class = "ow" > in< / span > < span class = "n" > sessid_cache< / span > < span class = "p" > :< / span >
< span class = "n" > sessid_cache< / span > < span class = "o" > .< / span > < span class = "n" > remove< / span > < span class = "p" > (< / span > < span class = "n" > sessid< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db_sessid< / span > < span class = "o" > =< / span > < span class = "s2" > " ," < / span > < span class = "o" > .< / span > < span class = "n" > join< / span > < span class = "p" > (< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > val< / span > < span class = "ow" > in< / span > < span class = "n" > sessid_cache< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > save< / span > < span class = "p" > (< / span > < span class = "n" > update_fields< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "s2" > " db_sessid" < / span > < span class = "p" > ])< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "ObjectSessionHandler.clear" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.ObjectSessionHandler.clear" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > clear< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Clear all handled sessids.< / span >
< span class = "sd" > " " " < / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _sessid_cache< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db_sessid< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > save< / span > < span class = "p" > (< / span > < span class = "n" > update_fields< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "s2" > " db_sessid" < / span > < span class = "p" > ])< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "ObjectSessionHandler.count" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.ObjectSessionHandler.count" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > count< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Get amount of sessions connected.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > sesslen (int): Number of sessions handled.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _sessid_cache< / span > < span class = "p" > )< / span > < / div > < / div >
< span class = "c1" > #< / span >
< span class = "c1" > # Base class to inherit from.< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > DefaultObject< / span > < span class = "p" > (< / span > < span class = "n" > ObjectDB< / span > < span class = "p" > ,< / span > < span class = "n" > metaclass< / span > < span class = "o" > =< / span > < span class = "n" > TypeclassBase< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This is the root typeclass object, representing all entities that< / span >
< span class = "sd" > have an actual presence in-game. DefaultObjects generally have a< / span >
< span class = "sd" > location. They can also be manipulated and looked at. Game< / span >
< span class = "sd" > entities you define should inherit from DefaultObject at some distance.< / span >
< span class = "sd" > It is recommended to create children of this class using the< / span >
< span class = "sd" > `evennia.create_object()` function rather than to initialize the class< / span >
< span class = "sd" > directly - this will both set things up and efficiently save the object< / span >
< span class = "sd" > without `obj.save()` having to be called explicitly.< / span >
< span class = "sd" > " " " < / span >
2021-06-23 18:58:26 +02:00
< span class = "c1" > # Used for sorting / filtering in inventories / room contents.< / span >
< span class = "n" > _content_types< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "s2" > " object" < / span > < span class = "p" > ,)< / span >
2020-06-13 00:36:45 +02:00
< span class = "c1" > # lockstring of newly created objects, for easy overloading.< / span >
< span class = "c1" > # Will be formatted with the appropriate attributes.< / span >
2020-07-31 18:18:01 +02:00
< span class = "n" > lockstring< / span > < span class = "o" > =< / span > < span class = "s2" > " control:id(< / span > < span class = "si" > {account_id}< / span > < span class = "s2" > ) or perm(Admin);delete:id(< / span > < span class = "si" > {account_id}< / span > < span class = "s2" > ) or perm(Admin)" < / span >
2020-06-13 00:36:45 +02:00
< span class = "n" > objects< / span > < span class = "o" > =< / span > < span class = "n" > ObjectManager< / span > < span class = "p" > ()< / span >
< span class = "c1" > # on-object properties< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.cmdset" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.cmdset" > [docs]< / a > < span class = "nd" > @lazy_property< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > def< / span > < span class = "nf" > cmdset< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "n" > CmdSetHandler< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "kc" > True< / span > < span class = "p" > )< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.scripts" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.scripts" > [docs]< / a > < span class = "nd" > @lazy_property< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > def< / span > < span class = "nf" > scripts< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "n" > ScriptHandler< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.nicks" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.nicks" > [docs]< / a > < span class = "nd" > @lazy_property< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > def< / span > < span class = "nf" > nicks< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2021-06-23 18:58:26 +02:00
< span class = "k" > return< / span > < span class = "n" > NickHandler< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > ModelAttributeBackend< / span > < span class = "p" > )< / span > < / div >
2020-06-13 00:36:45 +02:00
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.sessions" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.sessions" > [docs]< / a > < span class = "nd" > @lazy_property< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > def< / span > < span class = "nf" > sessions< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "n" > ObjectSessionHandler< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < / div >
< span class = "nd" > @property< / span >
< span class = "k" > def< / span > < span class = "nf" > is_connected< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "c1" > # we get an error for objects subscribed to channels without this< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > account< / span > < span class = "p" > :< / span > < span class = "c1" > # seems sane to pass on the account< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > is_connected< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "nd" > @property< / span >
< span class = "k" > def< / span > < span class = "nf" > has_account< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Convenience property for checking if an active account is< / span >
< span class = "sd" > currently connected to this object.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > sessions< / span > < span class = "o" > .< / span > < span class = "n" > count< / span > < span class = "p" > ()< / span >
< span class = "nd" > @property< / span >
< span class = "k" > def< / span > < span class = "nf" > is_superuser< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Check if user has an account, and if so, if it is a superuser.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "p" > (< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db_account< / span >
< span class = "ow" > and< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db_account< / span > < span class = "o" > .< / span > < span class = "n" > is_superuser< / span >
< span class = "ow" > and< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db_account< / span > < span class = "o" > .< / span > < span class = "n" > attributes< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " _quell" < / span > < span class = "p" > )< / span >
< span class = "p" > )< / span >
2021-06-23 18:58:26 +02:00
< div class = "viewcode-block" id = "DefaultObject.contents_get" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.contents_get" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > contents_get< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > content_type< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Returns the contents of this object, i.e. all< / span >
< span class = "sd" > objects that has this object set as its location.< / span >
< span class = "sd" > This should be publically available.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > exclude (Object): Object to exclude from returned< / span >
< span class = "sd" > contents list< / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > content_type (str): A content_type to filter by. None for no< / span >
< span class = "sd" > filtering.< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > Returns:< / span >
< span class = "sd" > contents (list): List of contents of this Object.< / span >
< span class = "sd" > Notes:< / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > Also available as the `contents` property, minus exclusion< / span >
< span class = "sd" > and filtering.< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
2021-06-23 18:58:26 +02:00
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > contents_cache< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "n" > exclude< / span > < span class = "p" > ,< / span > < span class = "n" > content_type< / span > < span class = "o" > =< / span > < span class = "n" > content_type< / span > < span class = "p" > )< / span > < / div >
2020-06-13 00:36:45 +02:00
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.contents_set" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.contents_set" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > contents_set< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "s2" > " You cannot replace this property" < / span >
< span class = "k" > raise< / span > < span class = "ne" > AttributeError< / span > < span class = "p" > (< / span >
< span class = "s2" > " < / span > < span class = "si" > {}< / span > < span class = "s2" > .contents is read-only. Use obj.move_to or " < / span >
< span class = "s2" > " obj.location to move an object here." < / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "vm" > __class__< / span > < span class = "p" > )< / span >
< span class = "p" > )< / span > < / div >
< span class = "n" > contents< / span > < span class = "o" > =< / span > < span class = "nb" > property< / span > < span class = "p" > (< / span > < span class = "n" > contents_get< / span > < span class = "p" > ,< / span > < span class = "n" > contents_set< / span > < span class = "p" > ,< / span > < span class = "n" > contents_set< / span > < span class = "p" > )< / span >
< span class = "nd" > @property< / span >
< span class = "k" > def< / span > < span class = "nf" > exits< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Returns all exits from this object, i.e. all objects at this< / span >
< span class = "sd" > location having the property destination != `None`.< / span >
2021-06-23 18:58:26 +02:00
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "p" > [< / span > < span class = "n" > exi< / span > < span class = "k" > for< / span > < span class = "n" > exi< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > contents< / span > < span class = "k" > if< / span > < span class = "n" > exi< / span > < span class = "o" > .< / span > < span class = "n" > destination< / span > < span class = "p" > ]< / span >
< span class = "c1" > # main methods< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.get_display_name" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.get_display_name" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > get_display_name< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > looker< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Displays the name of the object in a viewer-aware manner.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > looker (TypedObject): The object or account that is looking< / span >
< span class = "sd" > at/getting inforamtion for this object.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > name (str): A string containing the name of the object,< / span >
< span class = "sd" > including the DBREF if this user is privileged to control< / span >
< span class = "sd" > said object.< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > This function could be extended to change how object names< / span >
< span class = "sd" > appear to users in character, but be wary. This function< / span >
< span class = "sd" > does not change an object' s keys or aliases when< / span >
< span class = "sd" > searching, and is expected to produce something useful for< / span >
< span class = "sd" > builders.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > locks< / span > < span class = "o" > .< / span > < span class = "n" > check_lockstring< / span > < span class = "p" > (< / span > < span class = "n" > looker< / span > < span class = "p" > ,< / span > < span class = "s2" > " perm(Builder)" < / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "s2" > " < / span > < span class = "si" > {}< / span > < span class = "s2" > (#< / span > < span class = "si" > {}< / span > < span class = "s2" > )" < / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > id< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.get_numbered_name" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.get_numbered_name" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > get_numbered_name< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > count< / span > < span class = "p" > ,< / span > < span class = "n" > looker< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Return the numbered (singular, plural) forms of this object' s key. This is by default called< / span >
< span class = "sd" > by return_appearance and is used for grouping multiple same-named of this object. Note that< / span >
< span class = "sd" > this will be called on *every* member of a group even though the plural name will be only< / span >
< span class = "sd" > shown once. Also the singular display version, such as ' an apple' , ' a tree' is determined< / span >
< span class = "sd" > from this method.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > count (int): Number of objects of this type< / span >
< span class = "sd" > looker (Object): Onlooker. Not used by default.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > key (str): Optional key to pluralize, if given, use this instead of the object' s key.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > singular (str): The singular form to display.< / span >
< span class = "sd" > plural (str): The determined plural form of the key, including the count.< / span >
2021-06-23 18:58:26 +02:00
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
2020-10-11 22:19:29 +02:00
< span class = "n" > plural_category< / span > < span class = "o" > =< / span > < span class = "s2" > " plural_key" < / span >
2020-06-13 00:36:45 +02:00
< span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " key" < / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "p" > )< / span >
< span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "n" > ansi< / span > < span class = "o" > .< / span > < span class = "n" > ANSIString< / span > < span class = "p" > (< / span > < span class = "n" > key< / span > < span class = "p" > )< / span > < span class = "c1" > # this is needed to allow inflection of colored names< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
2020-10-11 22:19:29 +02:00
< span class = "n" > plural< / span > < span class = "o" > =< / span > < span class = "n" > _INFLECT< / span > < span class = "o" > .< / span > < span class = "n" > plural< / span > < span class = "p" > (< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > count< / span > < span class = "p" > )< / span >
< span class = "n" > plural< / span > < span class = "o" > =< / span > < span class = "s2" > " < / span > < span class = "si" > {}< / span > < span class = "s2" > < / span > < span class = "si" > {}< / span > < span class = "s2" > " < / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > _INFLECT< / span > < span class = "o" > .< / span > < span class = "n" > number_to_words< / span > < span class = "p" > (< / span > < span class = "n" > count< / span > < span class = "p" > ,< / span > < span class = "n" > threshold< / span > < span class = "o" > =< / span > < span class = "mi" > 12< / span > < span class = "p" > ),< / span > < span class = "n" > plural< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > except< / span > < span class = "ne" > IndexError< / span > < span class = "p" > :< / span >
< span class = "c1" > # this is raised by inflect if the input is not a proper noun< / span >
< span class = "n" > plural< / span > < span class = "o" > =< / span > < span class = "n" > key< / span >
< span class = "n" > singular< / span > < span class = "o" > =< / span > < span class = "n" > _INFLECT< / span > < span class = "o" > .< / span > < span class = "n" > an< / span > < span class = "p" > (< / span > < span class = "n" > key< / span > < span class = "p" > )< / span >
2020-10-11 22:19:29 +02:00
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > aliases< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "n" > plural< / span > < span class = "p" > ,< / span > < span class = "n" > category< / span > < span class = "o" > =< / span > < span class = "n" > plural_category< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "c1" > # we need to wipe any old plurals/an/a in case key changed in the interrim< / span >
2020-10-11 22:19:29 +02:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > aliases< / span > < span class = "o" > .< / span > < span class = "n" > clear< / span > < span class = "p" > (< / span > < span class = "n" > category< / span > < span class = "o" > =< / span > < span class = "n" > plural_category< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > aliases< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span > < span class = "n" > plural< / span > < span class = "p" > ,< / span > < span class = "n" > category< / span > < span class = "o" > =< / span > < span class = "n" > plural_category< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "c1" > # save the singular form as an alias here too so we can display " an egg" and also< / span >
< span class = "c1" > # look at ' an egg' .< / span >
2020-10-11 22:19:29 +02:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > aliases< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span > < span class = "n" > singular< / span > < span class = "p" > ,< / span > < span class = "n" > category< / span > < span class = "o" > =< / span > < span class = "n" > plural_category< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "n" > singular< / span > < span class = "p" > ,< / span > < span class = "n" > plural< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.search" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.search" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > search< / span > < span class = "p" > (< / span >
2020-06-13 00:36:45 +02:00
< span class = "bp" > self< / span > < span class = "p" > ,< / span >
< span class = "n" > searchdata< / span > < span class = "p" > ,< / span >
< span class = "n" > global_search< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span >
< span class = "n" > use_nicks< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ,< / span >
< span class = "n" > typeclass< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > location< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > attribute_name< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > quiet< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span >
< span class = "n" > exact< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span >
< span class = "n" > candidates< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > nofound_string< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > multimatch_string< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > use_dbref< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > stacked< / span > < span class = "o" > =< / span > < span class = "mi" > 0< / span > < span class = "p" > ,< / span >
2020-06-13 00:36:45 +02:00
< span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Returns an Object matching a search string/condition< / span >
< span class = "sd" > Perform a standard object search in the database, handling< / span >
< span class = "sd" > multiple results and lack thereof gracefully. By default, only< / span >
< span class = "sd" > objects in the current `location` of `self` or its inventory are searched for.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > searchdata (str or obj): Primary search criterion. Will be matched< / span >
< span class = "sd" > against `object.key` (with `object.aliases` second) unless< / span >
< span class = "sd" > the keyword attribute_name specifies otherwise.< / span >
< span class = "sd" > **Special strings:**< / span >
< span class = "sd" > - `#< num> `: search by unique dbref. This is always< / span >
< span class = "sd" > a global search.< / span >
< span class = "sd" > - `me,self`: self-reference to this object< / span >
< span class = "sd" > - `< num> -< string> ` - can be used to differentiate< / span >
2020-11-14 11:55:52 +01:00
< span class = "sd" > between multiple same-named matches. The exact form of this input< / span >
< span class = "sd" > is given by `settings.SEARCH_MULTIMATCH_REGEX`.< / span >
2020-07-31 18:18:01 +02:00
< span class = "sd" > global_search (bool): Search all objects globally. This overrules ' location' data.< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > use_nicks (bool): Use nickname-replace (nicktype " object" ) on `searchdata`.< / span >
< span class = "sd" > typeclass (str or Typeclass, or list of either): Limit search only< / span >
< span class = "sd" > to `Objects` with this typeclass. May be a list of typeclasses< / span >
< span class = "sd" > for a broader search.< / span >
< span class = "sd" > location (Object or list): Specify a location or multiple locations< / span >
< span class = "sd" > to search. Note that this is used to query the *contents* of a< / span >
< span class = "sd" > location and will not match for the location itself -< / span >
< span class = "sd" > if you want that, don' t set this or use `candidates` to specify< / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > exactly which objects should be searched. If this nor candidates are< / span >
< span class = "sd" > given, candidates will include caller' s inventory, current location and< / span >
< span class = "sd" > all objects in the current location.< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > attribute_name (str): Define which property to search. If set, no< / span >
< span class = "sd" > key+alias search will be performed. This can be used< / span >
< span class = "sd" > to search database fields (db_ will be automatically< / span >
< span class = "sd" > prepended), and if that fails, it will try to return< / span >
< span class = "sd" > objects having Attributes with this name and value< / span >
< span class = "sd" > equal to searchdata. A special use is to search for< / span >
< span class = "sd" > " key" here if you want to do a key-search without< / span >
< span class = "sd" > including aliases.< / span >
< span class = "sd" > quiet (bool): don' t display default error messages - this tells the< / span >
< span class = "sd" > search method that the user wants to handle all errors< / span >
< span class = "sd" > themselves. It also changes the return value type, see< / span >
< span class = "sd" > below.< / span >
< span class = "sd" > exact (bool): if unset (default) - prefers to match to beginning of< / span >
< span class = "sd" > string rather than not matching at all. If set, requires< / span >
< span class = "sd" > exact matching of entire string.< / span >
< span class = "sd" > candidates (list of objects): this is an optional custom list of objects< / span >
< span class = "sd" > to search (filter) between. It is ignored if `global_search`< / span >
< span class = "sd" > is given. If not set, this list will automatically be defined< / span >
< span class = "sd" > to include the location, the contents of location and the< / span >
< span class = "sd" > caller' s contents (inventory).< / span >
< span class = "sd" > nofound_string (str): optional custom string for not-found error message.< / span >
< span class = "sd" > multimatch_string (str): optional custom string for multimatch error header.< / span >
< span class = "sd" > use_dbref (bool or None, optional): If `True`, allow to enter e.g. a query " #123" < / span >
< span class = "sd" > to find an object (globally) by its database-id 123. If `False`, the string " #123" < / span >
< span class = "sd" > will be treated like a normal string. If `None` (default), the ability to query by< / span >
< span class = "sd" > #dbref is turned on if `self` has the permission ' Builder' and is turned off< / span >
< span class = "sd" > otherwise.< / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > stacked (int, optional): If > 0, multimatches will be analyzed to determine if they< / span >
< span class = "sd" > only contains identical objects; these are then assumed ' stacked' and no multi-match< / span >
< span class = "sd" > error will be generated, instead `stacked` number of matches will be returned. If< / span >
< span class = "sd" > `stacked` is larger than number of matches, returns that number of matches. If< / span >
< span class = "sd" > the found stack is a mix of objects, return None and handle the multi-match< / span >
< span class = "sd" > error depending on the value of `quiet`.< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > Returns:< / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > Object: If finding a match an `quiet=False`< / span >
< span class = "sd" > None: If not finding a unique match and `quiet=False`.< / span >
< span class = "sd" > list: With 0, 1 or more matching objects if `quiet=True`< / span >
< span class = "sd" > list: With 2 or more matching objects if `stacked` is a positive integer and< / span >
< span class = "sd" > the matched stack has only object-copies.< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > Notes:< / span >
< span class = "sd" > To find Accounts, use eg. `evennia.account_search`. If< / span >
< span class = "sd" > `quiet=False`, error messages will be handled by< / span >
< span class = "sd" > `settings.SEARCH_AT_RESULT` and echoed automatically (on< / span >
< span class = "sd" > error, return will be `None`). If `quiet=True`, the error< / span >
< span class = "sd" > messaging is assumed to be handled by the caller.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > is_string< / span > < span class = "o" > =< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > searchdata< / span > < span class = "p" > ,< / span > < span class = "nb" > str< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > is_string< / span > < span class = "p" > :< / span >
< span class = "c1" > # searchdata is a string; wrap some common self-references< / span >
< span class = "k" > if< / span > < span class = "n" > searchdata< / span > < span class = "o" > .< / span > < span class = "n" > lower< / span > < span class = "p" > ()< / span > < span class = "ow" > in< / span > < span class = "p" > (< / span > < span class = "s2" > " here" < / span > < span class = "p" > ,):< / span >
< span class = "k" > return< / span > < span class = "p" > [< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "p" > ]< / span > < span class = "k" > if< / span > < span class = "n" > quiet< / span > < span class = "k" > else< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span >
< span class = "k" > if< / span > < span class = "n" > searchdata< / span > < span class = "o" > .< / span > < span class = "n" > lower< / span > < span class = "p" > ()< / span > < span class = "ow" > in< / span > < span class = "p" > (< / span > < span class = "s2" > " me" < / span > < span class = "p" > ,< / span > < span class = "s2" > " self" < / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "p" > [< / span > < span class = "bp" > self< / span > < span class = "p" > ]< / span > < span class = "k" > if< / span > < span class = "n" > quiet< / span > < span class = "k" > else< / span > < span class = "bp" > self< / span >
< span class = "k" > if< / span > < span class = "n" > use_dbref< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > use_dbref< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > locks< / span > < span class = "o" > .< / span > < span class = "n" > check_lockstring< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s2" > " _dummy:perm(Builder)" < / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > use_nicks< / span > < span class = "p" > :< / span >
< span class = "c1" > # do nick-replacement on search< / span >
< span class = "n" > searchdata< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > nicks< / span > < span class = "o" > .< / span > < span class = "n" > nickreplace< / span > < span class = "p" > (< / span >
< span class = "n" > searchdata< / span > < span class = "p" > ,< / span > < span class = "n" > categories< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "s2" > " object" < / span > < span class = "p" > ,< / span > < span class = "s2" > " account" < / span > < span class = "p" > ),< / span > < span class = "n" > include_account< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span >
< span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > global_search< / span > < span class = "ow" > or< / span > < span class = "p" > (< / span >
< span class = "n" > is_string< / span >
< span class = "ow" > and< / span > < span class = "n" > searchdata< / span > < span class = "o" > .< / span > < span class = "n" > startswith< / span > < span class = "p" > (< / span > < span class = "s2" > " #" < / span > < span class = "p" > )< / span >
< span class = "ow" > and< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > searchdata< / span > < span class = "p" > )< / span > < span class = "o" > > < / span > < span class = "mi" > 1< / span >
< span class = "ow" > and< / span > < span class = "n" > searchdata< / span > < span class = "p" > [< / span > < span class = "mi" > 1< / span > < span class = "p" > :]< / span > < span class = "o" > .< / span > < span class = "n" > isdigit< / span > < span class = "p" > ()< / span >
< span class = "p" > ):< / span >
< span class = "c1" > # only allow exact matching if searching the entire database< / span >
< span class = "c1" > # or unique #dbrefs< / span >
< span class = "n" > exact< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span >
< span class = "n" > candidates< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > elif< / span > < span class = "n" > candidates< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "c1" > # no custom candidates given - get them automatically< / span >
< span class = "k" > if< / span > < span class = "n" > location< / span > < span class = "p" > :< / span >
< span class = "c1" > # location(s) were given< / span >
< span class = "n" > candidates< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "k" > for< / span > < span class = "n" > obj< / span > < span class = "ow" > in< / span > < span class = "n" > make_iter< / span > < span class = "p" > (< / span > < span class = "n" > location< / span > < span class = "p" > ):< / span >
< span class = "n" > candidates< / span > < span class = "o" > .< / span > < span class = "n" > extend< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > contents< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "c1" > # local search. Candidates are taken from< / span >
< span class = "c1" > # self.contents, self.location and< / span >
< span class = "c1" > # self.location.contents< / span >
< span class = "n" > location< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span >
< span class = "n" > candidates< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > contents< / span >
< span class = "k" > if< / span > < span class = "n" > location< / span > < span class = "p" > :< / span >
< span class = "n" > candidates< / span > < span class = "o" > =< / span > < span class = "n" > candidates< / span > < span class = "o" > +< / span > < span class = "p" > [< / span > < span class = "n" > location< / span > < span class = "p" > ]< / span > < span class = "o" > +< / span > < span class = "n" > location< / span > < span class = "o" > .< / span > < span class = "n" > contents< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "c1" > # normally we don' t need this since we are< / span >
< span class = "c1" > # included in location.contents< / span >
< span class = "n" > candidates< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span >
< span class = "n" > results< / span > < span class = "o" > =< / span > < span class = "n" > ObjectDB< / span > < span class = "o" > .< / span > < span class = "n" > objects< / span > < span class = "o" > .< / span > < span class = "n" > object_search< / span > < span class = "p" > (< / span >
< span class = "n" > searchdata< / span > < span class = "p" > ,< / span >
< span class = "n" > attribute_name< / span > < span class = "o" > =< / span > < span class = "n" > attribute_name< / span > < span class = "p" > ,< / span >
< span class = "n" > typeclass< / span > < span class = "o" > =< / span > < span class = "n" > typeclass< / span > < span class = "p" > ,< / span >
< span class = "n" > candidates< / span > < span class = "o" > =< / span > < span class = "n" > candidates< / span > < span class = "p" > ,< / span >
< span class = "n" > exact< / span > < span class = "o" > =< / span > < span class = "n" > exact< / span > < span class = "p" > ,< / span >
< span class = "n" > use_dbref< / span > < span class = "o" > =< / span > < span class = "n" > use_dbref< / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > nresults< / span > < span class = "o" > =< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > results< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > stacked< / span > < span class = "o" > > < / span > < span class = "mi" > 0< / span > < span class = "ow" > and< / span > < span class = "n" > nresults< / span > < span class = "o" > > < / span > < span class = "mi" > 1< / span > < span class = "p" > :< / span >
< span class = "c1" > # handle stacks, disable multimatch errors< / span >
< span class = "n" > nstack< / span > < span class = "o" > =< / span > < span class = "n" > nresults< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > exact< / span > < span class = "p" > :< / span >
< span class = "c1" > # we re-run exact match agains one of the matches to< / span >
< span class = "c1" > # make sure we were not catching partial matches not belonging< / span >
< span class = "c1" > # to the stack< / span >
< span class = "n" > nstack< / span > < span class = "o" > =< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > ObjectDB< / span > < span class = "o" > .< / span > < span class = "n" > objects< / span > < span class = "o" > .< / span > < span class = "n" > get_objs_with_key_or_alias< / span > < span class = "p" > (< / span >
< span class = "n" > results< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span >
< span class = "n" > exact< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ,< / span >
< span class = "n" > candidates< / span > < span class = "o" > =< / span > < span class = "nb" > list< / span > < span class = "p" > (< / span > < span class = "n" > results< / span > < span class = "p" > ),< / span >
< span class = "n" > typeclasses< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > typeclass< / span > < span class = "p" > ]< / span > < span class = "k" > if< / span > < span class = "n" > typeclass< / span > < span class = "k" > else< / span > < span class = "kc" > None< / span >
< span class = "p" > ))< / span >
< span class = "k" > if< / span > < span class = "n" > nstack< / span > < span class = "o" > ==< / span > < span class = "n" > nresults< / span > < span class = "p" > :< / span >
< span class = "c1" > # a valid stack, return multiple results< / span >
< span class = "k" > return< / span > < span class = "nb" > list< / span > < span class = "p" > (< / span > < span class = "n" > results< / span > < span class = "p" > )[:< / span > < span class = "n" > stacked< / span > < span class = "p" > ]< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > if< / span > < span class = "n" > quiet< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "c1" > # don' t auto-handle error messaging< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "nb" > list< / span > < span class = "p" > (< / span > < span class = "n" > results< / span > < span class = "p" > )< / span >
2021-06-23 18:58:26 +02:00
< span class = "c1" > # handle error messages< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "n" > _AT_SEARCH_RESULT< / span > < span class = "p" > (< / span >
< span class = "n" > results< / span > < span class = "p" > ,< / span >
< span class = "bp" > self< / span > < span class = "p" > ,< / span >
< span class = "n" > query< / span > < span class = "o" > =< / span > < span class = "n" > searchdata< / span > < span class = "p" > ,< / span >
< span class = "n" > nofound_string< / span > < span class = "o" > =< / span > < span class = "n" > nofound_string< / span > < span class = "p" > ,< / span >
< span class = "n" > multimatch_string< / span > < span class = "o" > =< / span > < span class = "n" > multimatch_string< / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.search_account" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.search_account" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > search_account< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > searchdata< / span > < span class = "p" > ,< / span > < span class = "n" > quiet< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Simple shortcut wrapper to search for accounts, not characters.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > searchdata (str): Search criterion - the key or dbref of the account< / span >
< span class = "sd" > to search for. If this is " here" or " me" , search< / span >
< span class = "sd" > for the account connected to this object.< / span >
< span class = "sd" > quiet (bool): Returns the results as a list rather than< / span >
< span class = "sd" > echo eventual standard error messages. Default `False`.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > result (Account, None or list): Just what is returned depends on< / span >
< span class = "sd" > the `quiet` setting:< / span >
< span class = "sd" > - `quiet=True`: No match or multumatch auto-echoes errors< / span >
< span class = "sd" > to self.msg, then returns `None`. The esults are passed< / span >
< span class = "sd" > through `settings.SEARCH_AT_RESULT` and< / span >
< span class = "sd" > `settings.SEARCH_AT_MULTIMATCH_INPUT`. If there is a< / span >
< span class = "sd" > unique match, this will be returned.< / span >
< span class = "sd" > - `quiet=True`: No automatic error messaging is done, and< / span >
< span class = "sd" > what is returned is always a list with 0, 1 or more< / span >
< span class = "sd" > matching Accounts.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > searchdata< / span > < span class = "p" > ,< / span > < span class = "nb" > str< / span > < span class = "p" > ):< / span >
< span class = "c1" > # searchdata is a string; wrap some common self-references< / span >
< span class = "k" > if< / span > < span class = "n" > searchdata< / span > < span class = "o" > .< / span > < span class = "n" > lower< / span > < span class = "p" > ()< / span > < span class = "ow" > in< / span > < span class = "p" > (< / span > < span class = "s2" > " me" < / span > < span class = "p" > ,< / span > < span class = "s2" > " self" < / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "p" > [< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > account< / span > < span class = "p" > ]< / span > < span class = "k" > if< / span > < span class = "n" > quiet< / span > < span class = "k" > else< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > account< / span >
< span class = "n" > results< / span > < span class = "o" > =< / span > < span class = "n" > search< / span > < span class = "o" > .< / span > < span class = "n" > search_account< / span > < span class = "p" > (< / span > < span class = "n" > searchdata< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > quiet< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "n" > results< / span >
< span class = "k" > return< / span > < span class = "n" > _AT_SEARCH_RESULT< / span > < span class = "p" > (< / span > < span class = "n" > results< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > query< / span > < span class = "o" > =< / span > < span class = "n" > searchdata< / span > < span class = "p" > )< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.execute_cmd" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.execute_cmd" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > execute_cmd< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > raw_string< / span > < span class = "p" > ,< / span > < span class = "n" > session< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Do something as this object. This is never called normally,< / span >
< span class = "sd" > it' s only used when wanting specifically to let an object be< / span >
< span class = "sd" > the caller of a command. It makes use of nicks of eventual< / span >
< span class = "sd" > connected accounts as well.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > raw_string (string): Raw command input< / span >
< span class = "sd" > session (Session, optional): Session to< / span >
< span class = "sd" > return results to< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > Other keyword arguments will be added to the found command< / span >
< span class = "sd" > object instace as variables before it executes. This is< / span >
< span class = "sd" > unused by default Evennia but may be used to set flags and< / span >
< span class = "sd" > change operating paramaters for commands at run-time.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > defer (Deferred): This is an asynchronous Twisted object that< / span >
< span class = "sd" > will not fire until the command has actually finished< / span >
< span class = "sd" > executing. To overload this one needs to attach< / span >
< span class = "sd" > callback functions to it, with addCallback(function).< / span >
< span class = "sd" > This function will be called with an eventual return< / span >
< span class = "sd" > value from the command execution. This return is not< / span >
< span class = "sd" > used at all by Evennia by default, but might be useful< / span >
< span class = "sd" > for coders intending to implement some sort of nested< / span >
< span class = "sd" > command structure.< / span >
< span class = "sd" > " " " < / span >
2021-03-07 17:53:48 +01:00
< span class = "c1" > # break circular import issues< / span >
< span class = "k" > global< / span > < span class = "n" > _CMDHANDLER< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > _CMDHANDLER< / span > < span class = "p" > :< / span >
< span class = "kn" > from< / span > < span class = "nn" > evennia.commands.cmdhandler< / span > < span class = "kn" > import< / span > < span class = "n" > cmdhandler< / span > < span class = "k" > as< / span > < span class = "n" > _CMDHANDLER< / span >
2020-06-13 00:36:45 +02:00
< span class = "c1" > # nick replacement - we require full-word matching.< / span >
< span class = "c1" > # do text encoding conversion< / span >
< span class = "n" > raw_string< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > nicks< / span > < span class = "o" > .< / span > < span class = "n" > nickreplace< / span > < span class = "p" > (< / span >
< span class = "n" > raw_string< / span > < span class = "p" > ,< / span > < span class = "n" > categories< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "s2" > " inputline" < / span > < span class = "p" > ,< / span > < span class = "s2" > " channel" < / span > < span class = "p" > ),< / span > < span class = "n" > include_account< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span >
< span class = "p" > )< / span >
2021-03-07 17:53:48 +01:00
< span class = "k" > return< / span > < span class = "n" > _CMDHANDLER< / span > < span class = "p" > (< / span >
2020-06-13 00:36:45 +02:00
< span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > raw_string< / span > < span class = "p" > ,< / span > < span class = "n" > callertype< / span > < span class = "o" > =< / span > < span class = "s2" > " object" < / span > < span class = "p" > ,< / span > < span class = "n" > session< / span > < span class = "o" > =< / span > < span class = "n" > session< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span >
< span class = "p" > )< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.msg" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.msg" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > msg< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > text< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > session< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > options< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Emits something to a session attached to the object.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > text (str or tuple, optional): The message to send. This< / span >
< span class = "sd" > is treated internally like any send-command, so its< / span >
< span class = "sd" > value can be a tuple if sending multiple arguments to< / span >
< span class = "sd" > the `text` oob command.< / span >
< span class = "sd" > from_obj (obj or list, optional): object that is sending. If< / span >
< span class = "sd" > given, at_msg_send will be called. This value will be< / span >
< span class = "sd" > passed on to the protocol. If iterable, will execute hook< / span >
< span class = "sd" > on all entities in it.< / span >
< span class = "sd" > session (Session or list, optional): Session or list of< / span >
< span class = "sd" > Sessions to relay data to, if any. If set, will force send< / span >
< span class = "sd" > to these sessions. If unset, who receives the message< / span >
< span class = "sd" > depends on the MULTISESSION_MODE.< / span >
< span class = "sd" > options (dict, optional): Message-specific option-value< / span >
< span class = "sd" > pairs. These will be applied at the protocol level.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > any (string or tuples): All kwarg keys not listed above< / span >
< span class = "sd" > will be treated as send-command names and their arguments< / span >
< span class = "sd" > (which can be a string or a tuple).< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > `at_msg_receive` will be called on this Object.< / span >
< span class = "sd" > All extra kwargs will be passed on to the protocol.< / span >
< span class = "sd" > " " " < / span >
< span class = "c1" > # try send hooks< / span >
< span class = "k" > if< / span > < span class = "n" > from_obj< / span > < span class = "p" > :< / span >
< span class = "k" > for< / span > < span class = "n" > obj< / span > < span class = "ow" > in< / span > < span class = "n" > make_iter< / span > < span class = "p" > (< / span > < span class = "n" > from_obj< / span > < span class = "p" > ):< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > at_msg_send< / span > < span class = "p" > (< / span > < span class = "n" > text< / span > < span class = "o" > =< / span > < span class = "n" > text< / span > < span class = "p" > ,< / span > < span class = "n" > to_obj< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "p" > :< / span >
< span class = "n" > logger< / span > < span class = "o" > .< / span > < span class = "n" > log_trace< / span > < span class = "p" > ()< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " options" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > options< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
2021-04-25 00:29:47 +02:00
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > at_msg_receive< / span > < span class = "p" > (< / span > < span class = "n" > text< / span > < span class = "o" > =< / span > < span class = "n" > text< / span > < span class = "p" > ,< / span > < span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "n" > from_obj< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "c1" > # if at_msg_receive returns false, we abort message to this object< / span >
< span class = "k" > return< / span >
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "p" > :< / span >
< span class = "n" > logger< / span > < span class = "o" > .< / span > < span class = "n" > log_trace< / span > < span class = "p" > ()< / span >
< span class = "k" > if< / span > < span class = "n" > text< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "p" > (< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > text< / span > < span class = "p" > ,< / span > < span class = "nb" > str< / span > < span class = "p" > )< / span > < span class = "ow" > or< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > text< / span > < span class = "p" > ,< / span > < span class = "nb" > tuple< / span > < span class = "p" > )):< / span >
< span class = "c1" > # sanitize text before sending across the wire< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > text< / span > < span class = "o" > =< / span > < span class = "n" > to_str< / span > < span class = "p" > (< / span > < span class = "n" > text< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "p" > :< / span >
< span class = "n" > text< / span > < span class = "o" > =< / span > < span class = "nb" > repr< / span > < span class = "p" > (< / span > < span class = "n" > text< / span > < span class = "p" > )< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " text" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > text< / span >
< span class = "c1" > # relay to session(s)< / span >
< span class = "n" > sessions< / span > < span class = "o" > =< / span > < span class = "n" > make_iter< / span > < span class = "p" > (< / span > < span class = "n" > session< / span > < span class = "p" > )< / span > < span class = "k" > if< / span > < span class = "n" > session< / span > < span class = "k" > else< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > sessions< / span > < span class = "o" > .< / span > < span class = "n" > all< / span > < span class = "p" > ()< / span >
< span class = "k" > for< / span > < span class = "n" > session< / span > < span class = "ow" > in< / span > < span class = "n" > sessions< / span > < span class = "p" > :< / span >
< span class = "n" > session< / span > < span class = "o" > .< / span > < span class = "n" > data_out< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.for_contents" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.for_contents" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > for_contents< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > func< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Runs a function on every object contained within this one.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > func (callable): Function to call. This must have the< / span >
< span class = "sd" > formal call sign func(obj, **kwargs), where obj is the< / span >
< span class = "sd" > object currently being processed and `**kwargs` are< / span >
< span class = "sd" > passed on from the call to `for_contents`.< / span >
< span class = "sd" > exclude (list, optional): A list of object not to call the< / span >
< span class = "sd" > function on.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > Keyword arguments will be passed to the function for all objects.< / span >
2021-06-23 18:58:26 +02:00
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "n" > contents< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > contents< / span >
< span class = "k" > if< / span > < span class = "n" > exclude< / span > < span class = "p" > :< / span >
< span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "n" > make_iter< / span > < span class = "p" > (< / span > < span class = "n" > exclude< / span > < span class = "p" > )< / span >
< span class = "n" > contents< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > obj< / span > < span class = "k" > for< / span > < span class = "n" > obj< / span > < span class = "ow" > in< / span > < span class = "n" > contents< / span > < span class = "k" > if< / span > < span class = "n" > obj< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > exclude< / span > < span class = "p" > ]< / span >
< span class = "k" > for< / span > < span class = "n" > obj< / span > < span class = "ow" > in< / span > < span class = "n" > contents< / span > < span class = "p" > :< / span >
< span class = "n" > func< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.msg_contents" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.msg_contents" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > msg_contents< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > text< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > mapping< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Emits a message to all objects inside this object.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > text (str or tuple): Message to send. If a tuple, this should be< / span >
< span class = "sd" > on the valid OOB outmessage form `(message, {kwargs})`,< / span >
< span class = "sd" > where kwargs are optional data passed to the `text`< / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > outputfunc. The message will be parsed for `{key}` formatting and< / span >
< span class = "sd" > `$You/$you()/$You(key)` and `$conj(verb)` inline function callables.< / span >
< span class = "sd" > The `key` is taken from the `mapping` kwarg {" key" : object, ...}`.< / span >
< span class = "sd" > The `mapping[key].get_display_name(looker=recipient)` will be called< / span >
< span class = "sd" > for that key for every recipient of the string.< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > exclude (list, optional): A list of objects not to send to.< / span >
< span class = "sd" > from_obj (Object, optional): An object designated as the< / span >
< span class = "sd" > " sender" of the message. See `DefaultObject.msg()` for< / span >
< span class = "sd" > more info.< / span >
< span class = "sd" > mapping (dict, optional): A mapping of formatting keys< / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > `{" key" :< object> , " key2" :< object2> ,...}.< / span >
< span class = "sd" > The keys must either match `{key}` or `$You(key)/$you(key)` markers< / span >
< span class = "sd" > in the `text` string. If `< object> ` doesn' t have a `get_display_name`< / span >
< span class = "sd" > method, it will be returned as a string. If not set, a key `you` will< / span >
< span class = "sd" > be auto-added to point to `from_obj` if given, otherwise to `self`.< / span >
< span class = "sd" > **kwargs: Keyword arguments will be passed on to `obj.msg()` for all< / span >
< span class = "sd" > messaged objects.< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > Notes:< / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > For ' actor-stance' reporting (You say/Name says), use the< / span >
< span class = "sd" > `$You()/$you()/$You(key)` and `$conj(verb)` (verb-conjugation)< / span >
< span class = "sd" > inline callables. This will use the respective `get_display_name()`< / span >
< span class = "sd" > for all onlookers except for `from_obj or self`, which will become< / span >
< span class = "sd" > ' You/you' . If you use `$You/you(key)`, the key must be in `mapping`.< / span >
< span class = "sd" > For ' director-stance' reporting (Name says/Name says), use {key}< / span >
< span class = "sd" > syntax directly. For both `{key}` and `You/you(key)`,< / span >
< span class = "sd" > `mapping[key].get_display_name(looker=recipient)` may be called< / span >
< span class = "sd" > depending on who the recipient is.< / span >
< span class = "sd" > Examples:< / span >
< span class = "sd" > Let' s assume< / span >
< span class = "sd" > - `player1.key -> " Player1" `,< / span >
< span class = "sd" > `player1.get_display_name(looker=player2) -> " The First girl" `< / span >
< span class = "sd" > - `player2.key -> " Player2" `,< / span >
< span class = "sd" > `player2.get_display_name(looker=player1) -> " The Second girl" `< / span >
< span class = "sd" > Actor-stance:< / span >
< span class = "sd" > ::< / span >
< span class = "sd" > char.location.msg_contents(< / span >
< span class = "sd" > " $You() $conj(attack) $you(defender)." ,< / span >
< span class = "sd" > mapping={" defender" : player2})< / span >
< span class = "sd" > - player1 will see `You attack The Second girl.`< / span >
< span class = "sd" > - player2 will see ' The First girl attacks you.' < / span >
2020-06-13 00:36:45 +02:00
2021-06-23 18:58:26 +02:00
< span class = "sd" > Director-stance:< / span >
< span class = "sd" > ::< / span >
2020-06-13 00:36:45 +02:00
2021-06-23 18:58:26 +02:00
< span class = "sd" > char.location.msg_contents(< / span >
< span class = "sd" > " {attacker} attacks {defender}." ,< / span >
< span class = "sd" > mapping={" attacker:player1, " defender" :player2})< / span >
2020-06-13 00:36:45 +02:00
2021-06-23 18:58:26 +02:00
< span class = "sd" > - player1 will see: ' Player1 attacks The Second girl.' < / span >
< span class = "sd" > - player2 will see: ' The First girl attacks Player2' < / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "c1" > # we also accept an outcommand on the form (message, {kwargs})< / span >
< span class = "n" > is_outcmd< / span > < span class = "o" > =< / span > < span class = "n" > text< / span > < span class = "ow" > and< / span > < span class = "n" > is_iter< / span > < span class = "p" > (< / span > < span class = "n" > text< / span > < span class = "p" > )< / span >
< span class = "n" > inmessage< / span > < span class = "o" > =< / span > < span class = "n" > text< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span > < span class = "k" > if< / span > < span class = "n" > is_outcmd< / span > < span class = "k" > else< / span > < span class = "n" > text< / span >
< span class = "n" > outkwargs< / span > < span class = "o" > =< / span > < span class = "n" > text< / span > < span class = "p" > [< / span > < span class = "mi" > 1< / span > < span class = "p" > ]< / span > < span class = "k" > if< / span > < span class = "n" > is_outcmd< / span > < span class = "ow" > and< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > text< / span > < span class = "p" > )< / span > < span class = "o" > > < / span > < span class = "mi" > 1< / span > < span class = "k" > else< / span > < span class = "p" > {}< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > mapping< / span > < span class = "o" > =< / span > < span class = "n" > mapping< / span > < span class = "ow" > or< / span > < span class = "p" > {}< / span >
< span class = "n" > you< / span > < span class = "o" > =< / span > < span class = "n" > from_obj< / span > < span class = "ow" > or< / span > < span class = "bp" > self< / span >
< span class = "k" > if< / span > < span class = "s1" > ' you' < / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > mapping< / span > < span class = "p" > :< / span >
< span class = "n" > mapping< / span > < span class = "p" > [< / span > < span class = "n" > you< / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > you< / span >
2020-06-13 00:36:45 +02:00
< span class = "n" > contents< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > contents< / span >
< span class = "k" > if< / span > < span class = "n" > exclude< / span > < span class = "p" > :< / span >
< span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "n" > make_iter< / span > < span class = "p" > (< / span > < span class = "n" > exclude< / span > < span class = "p" > )< / span >
< span class = "n" > contents< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > obj< / span > < span class = "k" > for< / span > < span class = "n" > obj< / span > < span class = "ow" > in< / span > < span class = "n" > contents< / span > < span class = "k" > if< / span > < span class = "n" > obj< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > exclude< / span > < span class = "p" > ]< / span >
2021-06-23 18:58:26 +02:00
< span class = "k" > for< / span > < span class = "n" > receiver< / span > < span class = "ow" > in< / span > < span class = "n" > contents< / span > < span class = "p" > :< / span >
< span class = "c1" > # actor-stance replacements< / span >
< span class = "n" > inmessage< / span > < span class = "o" > =< / span > < span class = "n" > _MSG_CONTENTS_PARSER< / span > < span class = "o" > .< / span > < span class = "n" > parse< / span > < span class = "p" > (< / span >
< span class = "n" > inmessage< / span > < span class = "p" > ,< / span > < span class = "n" > raise_errors< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ,< / span > < span class = "n" > return_string< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ,< / span >
< span class = "n" > caller< / span > < span class = "o" > =< / span > < span class = "n" > you< / span > < span class = "p" > ,< / span > < span class = "n" > receiver< / span > < span class = "o" > =< / span > < span class = "n" > receiver< / span > < span class = "p" > ,< / span > < span class = "n" > mapping< / span > < span class = "o" > =< / span > < span class = "n" > mapping< / span > < span class = "p" > )< / span >
< span class = "c1" > # director-stance replacements< / span >
< span class = "n" > outmessage< / span > < span class = "o" > =< / span > < span class = "n" > inmessage< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span >
< span class = "o" > **< / span > < span class = "p" > {< / span > < span class = "n" > key< / span > < span class = "p" > :< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "n" > looker< / span > < span class = "o" > =< / span > < span class = "n" > receiver< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "s2" > " get_display_name" < / span > < span class = "p" > )< / span > < span class = "k" > else< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > )< / span >
< span class = "k" > for< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > obj< / span > < span class = "ow" > in< / span > < span class = "n" > mapping< / span > < span class = "o" > .< / span > < span class = "n" > items< / span > < span class = "p" > ()})< / span >
< span class = "n" > receiver< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "n" > text< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "n" > outmessage< / span > < span class = "p" > ,< / span > < span class = "n" > outkwargs< / span > < span class = "p" > ),< / span > < span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "n" > from_obj< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span > < / div >
2020-06-13 00:36:45 +02:00
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.move_to" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.move_to" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > move_to< / span > < span class = "p" > (< / span >
2020-06-13 00:36:45 +02:00
< span class = "bp" > self< / span > < span class = "p" > ,< / span >
< span class = "n" > destination< / span > < span class = "p" > ,< / span >
< span class = "n" > quiet< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span >
< span class = "n" > emit_to_obj< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > use_destination< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ,< / span >
< span class = "n" > to_none< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span >
< span class = "n" > move_hooks< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ,< / span >
< span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ,< / span >
< span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Moves this object to a new location.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > destination (Object): Reference to the object to move to. This< / span >
< span class = "sd" > can also be an exit object, in which case the< / span >
< span class = "sd" > destination property is used as destination.< / span >
< span class = "sd" > quiet (bool): If true, turn off the calling of the emit hooks< / span >
< span class = "sd" > (announce_move_to/from etc)< / span >
< span class = "sd" > emit_to_obj (Object): object to receive error messages< / span >
< span class = "sd" > use_destination (bool): Default is for objects to use the " destination" < / span >
< span class = "sd" > property of destinations as the target to move to. Turning off this< / span >
< span class = "sd" > keyword allows objects to move " inside" exit objects.< / span >
< span class = "sd" > to_none (bool): Allow destination to be None. Note that no hooks are run when< / span >
< span class = "sd" > moving to a None location. If you want to run hooks, run them manually< / span >
< span class = "sd" > (and make sure they can manage None locations).< / span >
< span class = "sd" > move_hooks (bool): If False, turn off the calling of move-related hooks< / span >
< span class = "sd" > (at_before/after_move etc) with quiet=True, this is as quiet a move< / span >
< span class = "sd" > as can be done.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > Passed on to announce_move_to and announce_move_from hooks.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > result (bool): True/False depending on if there were problems with the move.< / span >
< span class = "sd" > This method may also return various error messages to the< / span >
< span class = "sd" > `emit_to_obj`.< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > No access checks are done in this method, these should be handled before< / span >
< span class = "sd" > calling `move_to`.< / span >
< span class = "sd" > The `DefaultObject` hooks called (if `move_hooks=True`) are, in order:< / span >
< span class = "sd" > 1. `self.at_before_move(destination)` (if this returns False, move is aborted)< / span >
< span class = "sd" > 2. `source_location.at_object_leave(self, destination)`< / span >
< span class = "sd" > 3. `self.announce_move_from(destination)`< / span >
< span class = "sd" > 4. (move happens here)< / span >
< span class = "sd" > 5. `self.announce_move_to(source_location)`< / span >
< span class = "sd" > 6. `destination.at_object_receive(self, source_location)`< / span >
< span class = "sd" > 7. `self.at_after_move(source_location)`< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > def< / span > < span class = "nf" > logerr< / span > < span class = "p" > (< / span > < span class = "n" > string< / span > < span class = "o" > =< / span > < span class = "s2" > " " < / span > < span class = "p" > ,< / span > < span class = "n" > err< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " Simple log helper method" " " < / span >
< span class = "n" > logger< / span > < span class = "o" > .< / span > < span class = "n" > log_trace< / span > < span class = "p" > ()< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "si" > %s%s< / span > < span class = "s2" > " < / span > < span class = "o" > %< / span > < span class = "p" > (< / span > < span class = "n" > string< / span > < span class = "p" > ,< / span > < span class = "s2" > " " < / span > < span class = "k" > if< / span > < span class = "n" > err< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "k" > else< / span > < span class = "s2" > " (< / span > < span class = "si" > %s< / span > < span class = "s2" > )" < / span > < span class = "o" > %< / span > < span class = "n" > err< / span > < span class = "p" > ))< / span >
< span class = "k" > return< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > errtxt< / span > < span class = "o" > =< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " Couldn' t perform move (< / span > < span class = "si" > {err}< / span > < span class = "s2" > ). Contact an admin." < / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > emit_to_obj< / span > < span class = "p" > :< / span >
< span class = "n" > emit_to_obj< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > destination< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "n" > to_none< / span > < span class = "p" > :< / span >
< span class = "c1" > # immediately move to None. There can be no hooks called since< / span >
< span class = "c1" > # there is no destination to call them with.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > return< / span > < span class = "kc" > True< / span >
< span class = "n" > emit_to_obj< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " The destination doesn' t exist." < / span > < span class = "p" > ))< / span >
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "k" > if< / span > < span class = "n" > destination< / span > < span class = "o" > .< / span > < span class = "n" > destination< / span > < span class = "ow" > and< / span > < span class = "n" > use_destination< / span > < span class = "p" > :< / span >
< span class = "c1" > # traverse exits< / span >
< span class = "n" > destination< / span > < span class = "o" > =< / span > < span class = "n" > destination< / span > < span class = "o" > .< / span > < span class = "n" > destination< / span >
< span class = "c1" > # Before the move, call eventual pre-commands.< / span >
< span class = "k" > if< / span > < span class = "n" > move_hooks< / span > < span class = "p" > :< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > at_before_move< / span > < span class = "p" > (< / span > < span class = "n" > destination< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "k" > as< / span > < span class = "n" > err< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > logerr< / span > < span class = "p" > (< / span > < span class = "n" > errtxt< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > err< / span > < span class = "o" > =< / span > < span class = "s2" > " at_before_move()" < / span > < span class = "p" > ),< / span > < span class = "n" > err< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "c1" > # Save the old location< / span >
< span class = "n" > source_location< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span >
< span class = "c1" > # Call hook on source location< / span >
< span class = "k" > if< / span > < span class = "n" > move_hooks< / span > < span class = "ow" > and< / span > < span class = "n" > source_location< / span > < span class = "p" > :< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > source_location< / span > < span class = "o" > .< / span > < span class = "n" > at_object_leave< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > destination< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "k" > as< / span > < span class = "n" > err< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > logerr< / span > < span class = "p" > (< / span > < span class = "n" > errtxt< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > err< / span > < span class = "o" > =< / span > < span class = "s2" > " at_object_leave()" < / span > < span class = "p" > ),< / span > < span class = "n" > err< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > quiet< / span > < span class = "p" > :< / span >
< span class = "c1" > # tell the old room we are leaving< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > announce_move_from< / span > < span class = "p" > (< / span > < span class = "n" > destination< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "k" > as< / span > < span class = "n" > err< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > logerr< / span > < span class = "p" > (< / span > < span class = "n" > errtxt< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > err< / span > < span class = "o" > =< / span > < span class = "s2" > " at_announce_move()" < / span > < span class = "p" > ),< / span > < span class = "n" > err< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "c1" > # Perform move< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > =< / span > < span class = "n" > destination< / span >
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "k" > as< / span > < span class = "n" > err< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > logerr< / span > < span class = "p" > (< / span > < span class = "n" > errtxt< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > err< / span > < span class = "o" > =< / span > < span class = "s2" > " location change" < / span > < span class = "p" > ),< / span > < span class = "n" > err< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > quiet< / span > < span class = "p" > :< / span >
< span class = "c1" > # Tell the new room we are there.< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > announce_move_to< / span > < span class = "p" > (< / span > < span class = "n" > source_location< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "k" > as< / span > < span class = "n" > err< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > logerr< / span > < span class = "p" > (< / span > < span class = "n" > errtxt< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > err< / span > < span class = "o" > =< / span > < span class = "s2" > " announce_move_to()" < / span > < span class = "p" > ),< / span > < span class = "n" > err< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "k" > if< / span > < span class = "n" > move_hooks< / span > < span class = "p" > :< / span >
< span class = "c1" > # Perform eventual extra commands on the receiving location< / span >
< span class = "c1" > # (the object has already arrived at this point)< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > destination< / span > < span class = "o" > .< / span > < span class = "n" > at_object_receive< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > source_location< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "k" > as< / span > < span class = "n" > err< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > logerr< / span > < span class = "p" > (< / span > < span class = "n" > errtxt< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > err< / span > < span class = "o" > =< / span > < span class = "s2" > " at_object_receive()" < / span > < span class = "p" > ),< / span > < span class = "n" > err< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "c1" > # Execute eventual extra commands on this object after moving it< / span >
< span class = "c1" > # (usually calling ' look' )< / span >
< span class = "k" > if< / span > < span class = "n" > move_hooks< / span > < span class = "p" > :< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > at_after_move< / span > < span class = "p" > (< / span > < span class = "n" > source_location< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "k" > as< / span > < span class = "n" > err< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > logerr< / span > < span class = "p" > (< / span > < span class = "n" > errtxt< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > err< / span > < span class = "o" > =< / span > < span class = "s2" > " at_after_move" < / span > < span class = "p" > ),< / span > < span class = "n" > err< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "k" > return< / span > < span class = "kc" > True< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.clear_exits" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.clear_exits" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > clear_exits< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Destroys all of the exits and any exits pointing to this< / span >
< span class = "sd" > object as a destination.< / span >
2021-06-23 18:58:26 +02:00
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "k" > for< / span > < span class = "n" > out_exit< / span > < span class = "ow" > in< / span > < span class = "p" > [< / span > < span class = "n" > exi< / span > < span class = "k" > for< / span > < span class = "n" > exi< / span > < span class = "ow" > in< / span > < span class = "n" > ObjectDB< / span > < span class = "o" > .< / span > < span class = "n" > objects< / span > < span class = "o" > .< / span > < span class = "n" > get_contents< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "k" > if< / span > < span class = "n" > exi< / span > < span class = "o" > .< / span > < span class = "n" > db_destination< / span > < span class = "p" > ]:< / span >
< span class = "n" > out_exit< / span > < span class = "o" > .< / span > < span class = "n" > delete< / span > < span class = "p" > ()< / span >
< span class = "k" > for< / span > < span class = "n" > in_exit< / span > < span class = "ow" > in< / span > < span class = "n" > ObjectDB< / span > < span class = "o" > .< / span > < span class = "n" > objects< / span > < span class = "o" > .< / span > < span class = "n" > filter< / span > < span class = "p" > (< / span > < span class = "n" > db_destination< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "n" > in_exit< / span > < span class = "o" > .< / span > < span class = "n" > delete< / span > < span class = "p" > ()< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.clear_contents" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.clear_contents" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > clear_contents< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Moves all objects (accounts/things) to their home location or< / span >
< span class = "sd" > to default home.< / span >
2021-06-23 18:58:26 +02:00
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "c1" > # Gather up everything that thinks this is its location.< / span >
< span class = "n" > default_home_id< / span > < span class = "o" > =< / span > < span class = "nb" > int< / span > < span class = "p" > (< / span > < span class = "n" > settings< / span > < span class = "o" > .< / span > < span class = "n" > DEFAULT_HOME< / span > < span class = "o" > .< / span > < span class = "n" > lstrip< / span > < span class = "p" > (< / span > < span class = "s2" > " #" < / span > < span class = "p" > ))< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > default_home< / span > < span class = "o" > =< / span > < span class = "n" > ObjectDB< / span > < span class = "o" > .< / span > < span class = "n" > objects< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "nb" > id< / span > < span class = "o" > =< / span > < span class = "n" > default_home_id< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > default_home< / span > < span class = "o" > .< / span > < span class = "n" > dbid< / span > < span class = "o" > ==< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > dbid< / span > < span class = "p" > :< / span >
< span class = "c1" > # we are deleting default home!< / span >
< span class = "n" > default_home< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > string< / span > < span class = "o" > =< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " Could not find default home ' (#< / span > < span class = "si" > {dbid}< / span > < span class = "s2" > )' ." < / span > < span class = "p" > )< / span >
< span class = "n" > logger< / span > < span class = "o" > .< / span > < span class = "n" > log_err< / span > < span class = "p" > (< / span > < span class = "n" > string< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > dbid< / span > < span class = "o" > =< / span > < span class = "n" > default_home_id< / span > < span class = "p" > ))< / span >
2020-06-13 00:36:45 +02:00
< span class = "n" > default_home< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > for< / span > < span class = "n" > obj< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > contents< / span > < span class = "p" > :< / span >
< span class = "n" > home< / span > < span class = "o" > =< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > home< / span >
< span class = "c1" > # Obviously, we can' t send it back to here.< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > home< / span > < span class = "ow" > or< / span > < span class = "p" > (< / span > < span class = "n" > home< / span > < span class = "ow" > and< / span > < span class = "n" > home< / span > < span class = "o" > .< / span > < span class = "n" > dbid< / span > < span class = "o" > ==< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > dbid< / span > < span class = "p" > ):< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > home< / span > < span class = "o" > =< / span > < span class = "n" > default_home< / span >
< span class = "n" > home< / span > < span class = "o" > =< / span > < span class = "n" > default_home< / span >
< span class = "c1" > # If for some reason it' s still None...< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > home< / span > < span class = "p" > :< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " Something went wrong! You are dumped into nowhere. Contact an admin." < / span > < span class = "p" > ))< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > logger< / span > < span class = "o" > .< / span > < span class = "n" > log_err< / span > < span class = "p" > (< / span > < span class = "s2" > " Missing default home - ' < / span > < span class = "si" > {name}< / span > < span class = "s2" > (#< / span > < span class = "si" > {dbid}< / span > < span class = "s2" > )' now " < / span >
< span class = "s2" > " has a null location." < / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > name< / span > < span class = "o" > =< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "n" > dbid< / span > < span class = "o" > =< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > dbid< / span > < span class = "p" > ))< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span >
< span class = "k" > if< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > has_account< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "n" > home< / span > < span class = "p" > :< / span >
< span class = "n" > string< / span > < span class = "o" > =< / span > < span class = "s2" > " Your current location has ceased to exist," < / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > string< / span > < span class = "o" > +=< / span > < span class = "s2" > " moving you to (#< / span > < span class = "si" > {dbid}< / span > < span class = "s2" > )." < / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "n" > string< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > dbid< / span > < span class = "o" > =< / span > < span class = "n" > home< / span > < span class = "o" > .< / span > < span class = "n" > dbid< / span > < span class = "p" > ))< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "c1" > # Famous last words: The account should never see this.< / span >
< span class = "n" > string< / span > < span class = "o" > =< / span > < span class = "s2" > " This place should not exist ... contact an admin." < / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "n" > string< / span > < span class = "p" > ))< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > move_to< / span > < span class = "p" > (< / span > < span class = "n" > home< / span > < span class = "p" > )< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.create" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.create" > [docs]< / a > < span class = "nd" > @classmethod< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > def< / span > < span class = "nf" > create< / span > < span class = "p" > (< / span > < span class = "bp" > cls< / span > < span class = "p" > ,< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > account< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Creates a basic object with default parameters, unless otherwise< / span >
< span class = "sd" > specified or extended.< / span >
< span class = "sd" > Provides a friendlier interface to the utils.create_object() function.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > key (str): Name of the new object.< / span >
< span class = "sd" > account (Account): Account to attribute this object to.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > description (str): Brief description for this object.< / span >
< span class = "sd" > ip (str): IP address of creator (for object auditing).< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > object (Object): A newly created object of the given typeclass.< / span >
< span class = "sd" > errors (list): A list of errors in string form, if any.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > errors< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "n" > obj< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "c1" > # Get IP address of creator, if available< / span >
< span class = "n" > ip< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " ip" < / span > < span class = "p" > ,< / span > < span class = "s2" > " " < / span > < span class = "p" > )< / span >
< span class = "c1" > # If no typeclass supplied, use this class< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " typeclass" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " typeclass" < / span > < span class = "p" > ,< / span > < span class = "bp" > cls< / span > < span class = "p" > )< / span >
< span class = "c1" > # Set the supplied key as the name of the intended object< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " key" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > key< / span >
< span class = "c1" > # Get a supplied description, if any< / span >
< span class = "n" > description< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " description" < / span > < span class = "p" > ,< / span > < span class = "s2" > " " < / span > < span class = "p" > )< / span >
< span class = "c1" > # Create a sane lockstring if one wasn' t supplied< / span >
< span class = "n" > lockstring< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " locks" < / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > account< / span > < span class = "ow" > and< / span > < span class = "ow" > not< / span > < span class = "n" > lockstring< / span > < span class = "p" > :< / span >
< span class = "n" > lockstring< / span > < span class = "o" > =< / span > < span class = "bp" > cls< / span > < span class = "o" > .< / span > < span class = "n" > lockstring< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > account_id< / span > < span class = "o" > =< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > id< / span > < span class = "p" > )< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " locks" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > lockstring< / span >
< span class = "c1" > # Create object< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > obj< / span > < span class = "o" > =< / span > < span class = "n" > create< / span > < span class = "o" > .< / span > < span class = "n" > create_object< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "c1" > # Record creator id and creation IP< / span >
< span class = "k" > if< / span > < span class = "n" > ip< / span > < span class = "p" > :< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > creator_ip< / span > < span class = "o" > =< / span > < span class = "n" > ip< / span >
< span class = "k" > if< / span > < span class = "n" > account< / span > < span class = "p" > :< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > creator_id< / span > < span class = "o" > =< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > id< / span >
< span class = "c1" > # Set description if there is none, or update it if provided< / span >
< span class = "k" > if< / span > < span class = "n" > description< / span > < span class = "ow" > or< / span > < span class = "ow" > not< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > desc< / span > < span class = "p" > :< / span >
< span class = "n" > desc< / span > < span class = "o" > =< / span > < span class = "n" > description< / span > < span class = "k" > if< / span > < span class = "n" > description< / span > < span class = "k" > else< / span > < span class = "s2" > " You see nothing special." < / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > desc< / span > < span class = "o" > =< / span > < span class = "n" > desc< / span >
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "k" > as< / span > < span class = "n" > e< / span > < span class = "p" > :< / span >
< span class = "n" > errors< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "s2" > " An error occurred while creating this ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' object." < / span > < span class = "o" > %< / span > < span class = "n" > key< / span > < span class = "p" > )< / span >
< span class = "n" > logger< / span > < span class = "o" > .< / span > < span class = "n" > log_err< / span > < span class = "p" > (< / span > < span class = "n" > e< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "n" > errors< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.copy" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.copy" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > copy< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > new_key< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Makes an identical copy of this object, identical except for a< / span >
< span class = "sd" > new dbref in the database. If you want to customize the copy< / span >
< span class = "sd" > by changing some settings, use ObjectDB.object.copy_object()< / span >
< span class = "sd" > directly.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > new_key (string): New key/name of copied object. If new_key is not< / span >
< span class = "sd" > specified, the copy will be named < old_key> _copy by default.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > copy (Object): A copy of this object.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > def< / span > < span class = "nf" > find_clone_key< / span > < span class = "p" > ():< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Append 01, 02 etc to obj.key. Checks next higher number in the< / span >
< span class = "sd" > same location, then adds the next number available< / span >
< span class = "sd" > returns the new clone name on the form keyXX< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > key< / span >
< span class = "n" > num< / span > < span class = "o" > =< / span > < span class = "nb" > sum< / span > < span class = "p" > (< / span >
< span class = "mi" > 1< / span >
< span class = "k" > for< / span > < span class = "n" > obj< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > .< / span > < span class = "n" > contents< / span >
< span class = "k" > if< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "o" > .< / span > < span class = "n" > startswith< / span > < span class = "p" > (< / span > < span class = "n" > key< / span > < span class = "p" > )< / span > < span class = "ow" > and< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "o" > .< / span > < span class = "n" > lstrip< / span > < span class = "p" > (< / span > < span class = "n" > key< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > isdigit< / span > < span class = "p" > ()< / span >
< span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "s2" > " < / span > < span class = "si" > %s%03i< / span > < span class = "s2" > " < / span > < span class = "o" > %< / span > < span class = "p" > (< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > num< / span > < span class = "p" > )< / span >
< span class = "n" > new_key< / span > < span class = "o" > =< / span > < span class = "n" > new_key< / span > < span class = "ow" > or< / span > < span class = "n" > find_clone_key< / span > < span class = "p" > ()< / span >
< span class = "n" > new_obj< / span > < span class = "o" > =< / span > < span class = "n" > ObjectDB< / span > < span class = "o" > .< / span > < span class = "n" > objects< / span > < span class = "o" > .< / span > < span class = "n" > copy_object< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > new_key< / span > < span class = "o" > =< / span > < span class = "n" > new_key< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > at_object_post_copy< / span > < span class = "p" > (< / span > < span class = "n" > new_obj< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > new_obj< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_object_post_copy" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_object_post_copy" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_object_post_copy< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > new_obj< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > Called by DefaultObject.copy(). Meant to be overloaded. In case there' s extra data not< / span >
< span class = "sd" > covered by .copy(), this can be used to deal with it.< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > Args:< / span >
< span class = "sd" > new_obj (Object): The new Copy of this object.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > None< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.delete" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.delete" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > delete< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Deletes this object. Before deletion, this method makes sure< / span >
< span class = "sd" > to move all contained objects to their respective home< / span >
< span class = "sd" > locations, as well as clean up all exits to/from the object.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > noerror (bool): Returns whether or not the delete completed< / span >
< span class = "sd" > successfully or not.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > global< / span > < span class = "n" > _ScriptDB< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > _ScriptDB< / span > < span class = "p" > :< / span >
2020-12-20 14:36:24 +01:00
< span class = "kn" > from< / span > < span class = "nn" > evennia.scripts.models< / span > < span class = "kn" > import< / span > < span class = "n" > ScriptDB< / span > < span class = "k" > as< / span > < span class = "n" > _ScriptDB< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span > < span class = "ow" > or< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > at_object_delete< / span > < span class = "p" > ():< / span >
< span class = "c1" > # This object has already been deleted,< / span >
< span class = "c1" > # or the pre-delete check return False< / span >
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "c1" > # See if we need to kick the account off.< / span >
< span class = "k" > for< / span > < span class = "n" > session< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > sessions< / span > < span class = "o" > .< / span > < span class = "n" > all< / span > < span class = "p" > ():< / span >
< span class = "n" > session< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " Your character < / span > < span class = "si" > {key}< / span > < span class = "s2" > has been destroyed." < / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "p" > ))< / span >
< span class = "c1" > # no need to disconnect, Account just jumps to OOC mode.< / span >
< span class = "c1" > # sever the connection (important!)< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > account< / span > < span class = "p" > :< / span >
< span class = "c1" > # Remove the object from playable characters list< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > _playable_characters< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > _playable_characters< / span > < span class = "o" > =< / span > < span class = "p" > [< / span >
< span class = "n" > x< / span > < span class = "k" > for< / span > < span class = "n" > x< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > _playable_characters< / span > < span class = "k" > if< / span > < span class = "n" > x< / span > < span class = "o" > !=< / span > < span class = "bp" > self< / span >
< span class = "p" > ]< / span >
< span class = "k" > for< / span > < span class = "n" > session< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > sessions< / span > < span class = "o" > .< / span > < span class = "n" > all< / span > < span class = "p" > ():< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > unpuppet_object< / span > < span class = "p" > (< / span > < span class = "n" > session< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > account< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > for< / span > < span class = "n" > script< / span > < span class = "ow" > in< / span > < span class = "n" > _ScriptDB< / span > < span class = "o" > .< / span > < span class = "n" > objects< / span > < span class = "o" > .< / span > < span class = "n" > get_all_scripts_on_obj< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > script< / span > < span class = "o" > .< / span > < span class = "n" > delete< / span > < span class = "p" > ()< / span >
2020-06-13 00:36:45 +02:00
< span class = "c1" > # Destroy any exits to and from this room, if any< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > clear_exits< / span > < span class = "p" > ()< / span >
< span class = "c1" > # Clear out any non-exit objects located within the object< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > clear_contents< / span > < span class = "p" > ()< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > attributes< / span > < span class = "o" > .< / span > < span class = "n" > clear< / span > < span class = "p" > ()< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > nicks< / span > < span class = "o" > .< / span > < span class = "n" > clear< / span > < span class = "p" > ()< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > aliases< / span > < span class = "o" > .< / span > < span class = "n" > clear< / span > < span class = "p" > ()< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "c1" > # this updates contents_cache for our location< / span >
< span class = "c1" > # Perform the deletion of the object< / span >
< span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > delete< / span > < span class = "p" > ()< / span >
< span class = "k" > return< / span > < span class = "kc" > True< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.access" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.access" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > access< / span > < span class = "p" > (< / span >
2020-06-13 00:36:45 +02:00
< span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > accessing_obj< / span > < span class = "p" > ,< / span > < span class = "n" > access_type< / span > < span class = "o" > =< / span > < span class = "s2" > " read" < / span > < span class = "p" > ,< / span > < span class = "n" > default< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span > < span class = "n" > no_superuser_bypass< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span >
< span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Determines if another object has permission to access this object< / span >
< span class = "sd" > in whatever way.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > accessing_obj (Object): Object trying to access this one.< / span >
< span class = "sd" > access_type (str, optional): Type of access sought.< / span >
< span class = "sd" > default (bool, optional): What to return if no lock of access_type was found.< / span >
< span class = "sd" > no_superuser_bypass (bool, optional): If `True`, don' t skip< / span >
< span class = "sd" > lock check for superuser (be careful with this one).< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > Passed on to the at_access hook along with the result of the access check.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > result< / span > < span class = "o" > =< / span > < span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > access< / span > < span class = "p" > (< / span >
< span class = "n" > accessing_obj< / span > < span class = "p" > ,< / span >
< span class = "n" > access_type< / span > < span class = "o" > =< / span > < span class = "n" > access_type< / span > < span class = "p" > ,< / span >
< span class = "n" > default< / span > < span class = "o" > =< / span > < span class = "n" > default< / span > < span class = "p" > ,< / span >
< span class = "n" > no_superuser_bypass< / span > < span class = "o" > =< / span > < span class = "n" > no_superuser_bypass< / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > at_access< / span > < span class = "p" > (< / span > < span class = "n" > result< / span > < span class = "p" > ,< / span > < span class = "n" > accessing_obj< / span > < span class = "p" > ,< / span > < span class = "n" > access_type< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > result< / span > < / div >
< span class = "c1" > #< / span >
< span class = "c1" > # Hook methods< / span >
< span class = "c1" > #< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_first_save" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_first_save" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_first_save< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This is called by the typeclass system whenever an instance of< / span >
< span class = "sd" > this class is saved for the first time. It is a generic hook< / span >
< span class = "sd" > for calling the startup hooks for the various game entities.< / span >
< span class = "sd" > When overloading you generally don' t overload this but< / span >
< span class = "sd" > overload the hooks called by this method.< / span >
< span class = "sd" > " " " < / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > basetype_setup< / span > < span class = "p" > ()< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > at_object_creation< / span > < span class = "p" > ()< / span >
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s2" > " _createdict" < / span > < span class = "p" > ):< / span >
< span class = "c1" > # this will only be set if the utils.create function< / span >
< span class = "c1" > # was used to create the object. We want the create< / span >
< span class = "c1" > # call' s kwargs to override the values set by hooks.< / span >
< span class = "n" > cdict< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _createdict< / span >
< span class = "n" > updates< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > cdict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " key" < / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db_key< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db_key< / span > < span class = "o" > =< / span > < span class = "s2" > " #< / span > < span class = "si" > %i< / span > < span class = "s2" > " < / span > < span class = "o" > %< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > dbid< / span >
< span class = "n" > updates< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "s2" > " db_key" < / span > < span class = "p" > )< / span >
< span class = "k" > elif< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "o" > !=< / span > < span class = "n" > cdict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " key" < / span > < span class = "p" > ):< / span >
< span class = "n" > updates< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "s2" > " db_key" < / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db_key< / span > < span class = "o" > =< / span > < span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " key" < / span > < span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "n" > cdict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " location" < / span > < span class = "p" > )< / span > < span class = "ow" > and< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > !=< / span > < span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " location" < / span > < span class = "p" > ]:< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db_location< / span > < span class = "o" > =< / span > < span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " location" < / span > < span class = "p" > ]< / span >
< span class = "n" > updates< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "s2" > " db_location" < / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > cdict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " home" < / span > < span class = "p" > )< / span > < span class = "ow" > and< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > home< / span > < span class = "o" > !=< / span > < span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " home" < / span > < span class = "p" > ]:< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > home< / span > < span class = "o" > =< / span > < span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " home" < / span > < span class = "p" > ]< / span >
< span class = "n" > updates< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "s2" > " db_home" < / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > cdict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " destination" < / span > < span class = "p" > )< / span > < span class = "ow" > and< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > destination< / span > < span class = "o" > !=< / span > < span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " destination" < / span > < span class = "p" > ]:< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > destination< / span > < span class = "o" > =< / span > < span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " destination" < / span > < span class = "p" > ]< / span >
< span class = "n" > updates< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "s2" > " db_destination" < / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > updates< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > save< / span > < span class = "p" > (< / span > < span class = "n" > update_fields< / span > < span class = "o" > =< / span > < span class = "n" > updates< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > cdict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " permissions" < / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > permissions< / span > < span class = "o" > .< / span > < span class = "n" > batch_add< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " permissions" < / span > < span class = "p" > ])< / span >
< span class = "k" > if< / span > < span class = "n" > cdict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " locks" < / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > locks< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span > < span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " locks" < / span > < span class = "p" > ])< / span >
< span class = "k" > if< / span > < span class = "n" > cdict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " aliases" < / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > aliases< / span > < span class = "o" > .< / span > < span class = "n" > batch_add< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " aliases" < / span > < span class = "p" > ])< / span >
< span class = "k" > if< / span > < span class = "n" > cdict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " location" < / span > < span class = "p" > ):< / span >
< span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " location" < / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > at_object_receive< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > at_after_move< / span > < span class = "p" > (< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > cdict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " tags" < / span > < span class = "p" > ):< / span >
< span class = "c1" > # this should be a list of tags, tuples (key, category) or (key, category, data)< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > tags< / span > < span class = "o" > .< / span > < span class = "n" > batch_add< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " tags" < / span > < span class = "p" > ])< / span >
< span class = "k" > if< / span > < span class = "n" > cdict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " attributes" < / span > < span class = "p" > ):< / span >
< span class = "c1" > # this should be tuples (key, val, ...)< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > attributes< / span > < span class = "o" > .< / span > < span class = "n" > batch_add< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " attributes" < / span > < span class = "p" > ])< / span >
< span class = "k" > if< / span > < span class = "n" > cdict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " nattributes" < / span > < span class = "p" > ):< / span >
< span class = "c1" > # this should be a dict of nattrname:value< / span >
< span class = "k" > for< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "ow" > in< / span > < span class = "n" > cdict< / span > < span class = "p" > [< / span > < span class = "s2" > " nattributes" < / span > < span class = "p" > ]:< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > nattributes< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "k" > del< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _createdict< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > basetype_posthook_setup< / span > < span class = "p" > ()< / span > < / div >
< span class = "c1" > # hooks called by the game engine #< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.basetype_setup" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.basetype_setup" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > basetype_setup< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This sets up the default properties of an Object, just before< / span >
< span class = "sd" > the more general at_object_creation.< / span >
< span class = "sd" > You normally don' t need to change this unless you change some< / span >
< span class = "sd" > fundamental things like names of permission groups.< / span >
< span class = "sd" > " " " < / span >
< span class = "c1" > # the default security setup fallback for a generic< / span >
< span class = "c1" > # object. Overload in child for a custom setup. Also creation< / span >
< span class = "c1" > # commands may set this (create an item and you should be its< / span >
< span class = "c1" > # controller, for example)< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > locks< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span >
< span class = "s2" > " ;" < / span > < span class = "o" > .< / span > < span class = "n" > join< / span > < span class = "p" > (< / span >
< span class = "p" > [< / span >
< span class = "s2" > " control:perm(Developer)" < / span > < span class = "p" > ,< / span > < span class = "c1" > # edit locks/permissions, delete< / span >
< span class = "s2" > " examine:perm(Builder)" < / span > < span class = "p" > ,< / span > < span class = "c1" > # examine properties< / span >
< span class = "s2" > " view:all()" < / span > < span class = "p" > ,< / span > < span class = "c1" > # look at object (visibility)< / span >
< span class = "s2" > " edit:perm(Admin)" < / span > < span class = "p" > ,< / span > < span class = "c1" > # edit properties/attributes< / span >
< span class = "s2" > " delete:perm(Admin)" < / span > < span class = "p" > ,< / span > < span class = "c1" > # delete object< / span >
< span class = "s2" > " get:all()" < / span > < span class = "p" > ,< / span > < span class = "c1" > # pick up object< / span >
< span class = "s2" > " drop:holds()" < / span > < span class = "p" > ,< / span > < span class = "c1" > # drop only that which you hold< / span >
< span class = "s2" > " call:true()" < / span > < span class = "p" > ,< / span > < span class = "c1" > # allow to call commands on this object< / span >
< span class = "s2" > " tell:perm(Admin)" < / span > < span class = "p" > ,< / span > < span class = "c1" > # allow emits to this object< / span >
< span class = "s2" > " puppet:pperm(Developer)" < / span > < span class = "p" > ,< / span >
< span class = "p" > ]< / span >
< span class = "p" > )< / span >
< span class = "p" > )< / span > < span class = "c1" > # lock down puppeting only to staff by default< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.basetype_posthook_setup" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.basetype_posthook_setup" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > basetype_posthook_setup< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called once, after basetype_setup and at_object_creation. This< / span >
< span class = "sd" > should generally not be overloaded unless you are redefining< / span >
< span class = "sd" > how a room/exit/object works. It allows for basetype-like< / span >
< span class = "sd" > setup after the object is created. An example of this is< / span >
< span class = "sd" > EXITs, who need to know keys, aliases, locks etc to set up< / span >
< span class = "sd" > their exit-cmdsets.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_object_creation" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_object_creation" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_object_creation< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called once, when this object is first created. This is the< / span >
< span class = "sd" > normal hook to overload for most object types.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_object_delete" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_object_delete" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_object_delete< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called just before the database object is permanently< / span >
< span class = "sd" > delete()d from the database. If this method returns False,< / span >
< span class = "sd" > deletion is aborted.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "kc" > True< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_init" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_init" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_init< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This is always called whenever this object is initiated --< / span >
< span class = "sd" > that is, whenever it its typeclass is cached from memory. This< / span >
< span class = "sd" > happens on-demand first time the object is used or activated< / span >
< span class = "sd" > in some way after being created but also after each server< / span >
< span class = "sd" > restart or reload.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_cmdset_get" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_cmdset_get" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_cmdset_get< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called just before cmdsets on this object are requested by the< / span >
< span class = "sd" > command handler. If changes need to be done on the fly to the< / span >
< span class = "sd" > cmdset before passing them on to the cmdhandler, this is the< / span >
< span class = "sd" > place to do it. This is called also if the object currently< / span >
< span class = "sd" > have no cmdsets.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > caller (Session, Object or Account): The caller requesting< / span >
< span class = "sd" > this cmdset.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_pre_puppet" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_pre_puppet" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_pre_puppet< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > account< / span > < span class = "p" > ,< / span > < span class = "n" > session< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called just before an Account connects to this object to puppet< / span >
< span class = "sd" > it.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > account (Account): This is the connecting account.< / span >
< span class = "sd" > session (Session): Session controlling the connection.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_post_puppet" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_post_puppet" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_post_puppet< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called just after puppeting has been completed and all< / span >
< span class = "sd" > Account< -> Object links have been established.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Note:< / span >
< span class = "sd" > You can use `self.account` and `self.sessions.get()` to get< / span >
< span class = "sd" > account and sessions at this point; the last entry in the< / span >
< span class = "sd" > list from `self.sessions.get()` is the latest Session< / span >
< span class = "sd" > puppeting this Object.< / span >
< span class = "sd" > " " " < / span >
2020-12-20 14:36:24 +01:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "sa" > f< / span > < span class = "s2" > " You become |w< / span > < span class = "si" > {< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "si" > }< / span > < span class = "s2" > |n." < / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > _last_puppet< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_pre_unpuppet" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_pre_unpuppet" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_pre_unpuppet< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called just before beginning to un-connect a puppeting from< / span >
< span class = "sd" > this Account.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Note:< / span >
< span class = "sd" > You can use `self.account` and `self.sessions.get()` to get< / span >
< span class = "sd" > account and sessions at this point; the last entry in the< / span >
< span class = "sd" > list from `self.sessions.get()` is the latest Session< / span >
< span class = "sd" > puppeting this Object.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_post_unpuppet" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_post_unpuppet" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_post_unpuppet< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > account< / span > < span class = "p" > ,< / span > < span class = "n" > session< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called just after the Account successfully disconnected from< / span >
< span class = "sd" > this object, severing all connections.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > account (Account): The account object that just disconnected< / span >
< span class = "sd" > from this object.< / span >
< span class = "sd" > session (Session): Session id controlling the connection that< / span >
< span class = "sd" > just disconnected.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_server_reload" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_server_reload" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_server_reload< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This hook is called whenever the server is shutting down for< / span >
< span class = "sd" > restart/reboot. If you want to, for example, save non-persistent< / span >
< span class = "sd" > properties across a restart, this is the place to do it.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_server_shutdown" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_server_shutdown" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_server_shutdown< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This hook is called whenever the server is shutting down fully< / span >
< span class = "sd" > (i.e. not for a restart).< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_access" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_access" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_access< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > result< / span > < span class = "p" > ,< / span > < span class = "n" > accessing_obj< / span > < span class = "p" > ,< / span > < span class = "n" > access_type< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This is called with the result of an access call, along with< / span >
< span class = "sd" > any kwargs used for that call. The return of this method does< / span >
< span class = "sd" > not affect the result of the lock check. It can be used e.g. to< / span >
< span class = "sd" > customize error messages in a central location or other effects< / span >
< span class = "sd" > based on the access result.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > result (bool): The outcome of the access call.< / span >
< span class = "sd" > accessing_obj (Object or Account): The entity trying to gain access.< / span >
< span class = "sd" > access_type (str): The type of access that was requested.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > Not used by default, added for possible expandability in a< / span >
< span class = "sd" > game.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
< span class = "c1" > # hooks called when moving the object< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_before_move" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_before_move" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_before_move< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > destination< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called just before starting to move this object to< / span >
< span class = "sd" > destination.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > destination (Object): The object we are moving to< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > shouldmove (bool): If we should move or not.< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > If this method returns False/None, the move is cancelled< / span >
< span class = "sd" > before it is even started.< / span >
< span class = "sd" > " " " < / span >
< span class = "c1" > # return has_perm(self, destination, " can_move" )< / span >
< span class = "k" > return< / span > < span class = "kc" > True< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.announce_move_from" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.announce_move_from" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > announce_move_from< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > destination< / span > < span class = "p" > ,< / span > < span class = "n" > msg< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > mapping< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called if the move is to be announced. This is< / span >
< span class = "sd" > called while we are still standing in the old< / span >
< span class = "sd" > location.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > destination (Object): The place we are going to.< / span >
< span class = "sd" > msg (str, optional): a replacement message.< / span >
< span class = "sd" > mapping (dict, optional): additional mapping objects.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > You can override this method and call its parent with a< / span >
< span class = "sd" > message to simply change the default message. In the string,< / span >
< span class = "sd" > you can use the following as mappings (between braces):< / span >
< span class = "sd" > object: the object which is moving.< / span >
< span class = "sd" > exit: the exit from which the object is moving (if found).< / span >
< span class = "sd" > origin: the location of the object before the move.< / span >
< span class = "sd" > destination: the location of the object after moving.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span >
< span class = "k" > if< / span > < span class = "n" > msg< / span > < span class = "p" > :< / span >
< span class = "n" > string< / span > < span class = "o" > =< / span > < span class = "n" > msg< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > string< / span > < span class = "o" > =< / span > < span class = "s2" > " < / span > < span class = "si" > {object}< / span > < span class = "s2" > is leaving < / span > < span class = "si" > {origin}< / span > < span class = "s2" > , heading for < / span > < span class = "si" > {destination}< / span > < span class = "s2" > ." < / span >
< span class = "n" > location< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span >
< span class = "n" > exits< / span > < span class = "o" > =< / span > < span class = "p" > [< / span >
< span class = "n" > o< / span > < span class = "k" > for< / span > < span class = "n" > o< / span > < span class = "ow" > in< / span > < span class = "n" > location< / span > < span class = "o" > .< / span > < span class = "n" > contents< / span > < span class = "k" > if< / span > < span class = "n" > o< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "ow" > is< / span > < span class = "n" > location< / span > < span class = "ow" > and< / span > < span class = "n" > o< / span > < span class = "o" > .< / span > < span class = "n" > destination< / span > < span class = "ow" > is< / span > < span class = "n" > destination< / span >
< span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > mapping< / span > < span class = "p" > :< / span >
< span class = "n" > mapping< / span > < span class = "o" > =< / span > < span class = "p" > {}< / span >
< span class = "n" > mapping< / span > < span class = "o" > .< / span > < span class = "n" > update< / span > < span class = "p" > (< / span >
< span class = "p" > {< / span >
< span class = "s2" > " object" < / span > < span class = "p" > :< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span >
< span class = "s2" > " exit" < / span > < span class = "p" > :< / span > < span class = "n" > exits< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span > < span class = "k" > if< / span > < span class = "n" > exits< / span > < span class = "k" > else< / span > < span class = "s2" > " somewhere" < / span > < span class = "p" > ,< / span >
< span class = "s2" > " origin" < / span > < span class = "p" > :< / span > < span class = "n" > location< / span > < span class = "ow" > or< / span > < span class = "s2" > " nowhere" < / span > < span class = "p" > ,< / span >
< span class = "s2" > " destination" < / span > < span class = "p" > :< / span > < span class = "n" > destination< / span > < span class = "ow" > or< / span > < span class = "s2" > " nowhere" < / span > < span class = "p" > ,< / span >
< span class = "p" > }< / span >
< span class = "p" > )< / span >
2021-04-25 00:29:47 +02:00
< span class = "n" > location< / span > < span class = "o" > .< / span > < span class = "n" > msg_contents< / span > < span class = "p" > (< / span > < span class = "n" > string< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,),< / span > < span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > mapping< / span > < span class = "o" > =< / span > < span class = "n" > mapping< / span > < span class = "p" > )< / span > < / div >
2020-06-13 00:36:45 +02:00
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.announce_move_to" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.announce_move_to" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > announce_move_to< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > source_location< / span > < span class = "p" > ,< / span > < span class = "n" > msg< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > mapping< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called after the move if the move was not quiet. At this point< / span >
< span class = "sd" > we are standing in the new location.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > source_location (Object): The place we came from< / span >
< span class = "sd" > msg (str, optional): the replacement message if location.< / span >
< span class = "sd" > mapping (dict, optional): additional mapping objects.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > You can override this method and call its parent with a< / span >
< span class = "sd" > message to simply change the default message. In the string,< / span >
< span class = "sd" > you can use the following as mappings (between braces):< / span >
< span class = "sd" > object: the object which is moving.< / span >
< span class = "sd" > exit: the exit from which the object is moving (if found).< / span >
< span class = "sd" > origin: the location of the object before the move.< / span >
< span class = "sd" > destination: the location of the object after moving.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > source_location< / span > < span class = "ow" > and< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > .< / span > < span class = "n" > has_account< / span > < span class = "p" > :< / span >
< span class = "c1" > # This was created from nowhere and added to an account' s< / span >
< span class = "c1" > # inventory; it' s probably the result of a create command.< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > string< / span > < span class = "o" > =< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " You now have < / span > < span class = "si" > {name}< / span > < span class = "s2" > in your possession." < / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span >
< span class = "n" > name< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "p" > ))< / span >
2020-06-13 00:36:45 +02:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "n" > string< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span >
< span class = "k" > if< / span > < span class = "n" > source_location< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "n" > msg< / span > < span class = "p" > :< / span >
< span class = "n" > string< / span > < span class = "o" > =< / span > < span class = "n" > msg< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > string< / span > < span class = "o" > =< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "si" > {object}< / span > < span class = "s2" > arrives to < / span > < span class = "si" > {destination}< / span > < span class = "s2" > from < / span > < span class = "si" > {origin}< / span > < span class = "s2" > ." < / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > else< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > string< / span > < span class = "o" > =< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "si" > {object}< / span > < span class = "s2" > arrives to < / span > < span class = "si" > {destination}< / span > < span class = "s2" > ." < / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "n" > origin< / span > < span class = "o" > =< / span > < span class = "n" > source_location< / span >
< span class = "n" > destination< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span >
< span class = "n" > exits< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "k" > if< / span > < span class = "n" > origin< / span > < span class = "p" > :< / span >
< span class = "n" > exits< / span > < span class = "o" > =< / span > < span class = "p" > [< / span >
< span class = "n" > o< / span >
< span class = "k" > for< / span > < span class = "n" > o< / span > < span class = "ow" > in< / span > < span class = "n" > destination< / span > < span class = "o" > .< / span > < span class = "n" > contents< / span >
< span class = "k" > if< / span > < span class = "n" > o< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "ow" > is< / span > < span class = "n" > destination< / span > < span class = "ow" > and< / span > < span class = "n" > o< / span > < span class = "o" > .< / span > < span class = "n" > destination< / span > < span class = "ow" > is< / span > < span class = "n" > origin< / span >
< span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > mapping< / span > < span class = "p" > :< / span >
< span class = "n" > mapping< / span > < span class = "o" > =< / span > < span class = "p" > {}< / span >
< span class = "n" > mapping< / span > < span class = "o" > .< / span > < span class = "n" > update< / span > < span class = "p" > (< / span >
< span class = "p" > {< / span >
< span class = "s2" > " object" < / span > < span class = "p" > :< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span >
< span class = "s2" > " exit" < / span > < span class = "p" > :< / span > < span class = "n" > exits< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span > < span class = "k" > if< / span > < span class = "n" > exits< / span > < span class = "k" > else< / span > < span class = "s2" > " somewhere" < / span > < span class = "p" > ,< / span >
< span class = "s2" > " origin" < / span > < span class = "p" > :< / span > < span class = "n" > origin< / span > < span class = "ow" > or< / span > < span class = "s2" > " nowhere" < / span > < span class = "p" > ,< / span >
< span class = "s2" > " destination" < / span > < span class = "p" > :< / span > < span class = "n" > destination< / span > < span class = "ow" > or< / span > < span class = "s2" > " nowhere" < / span > < span class = "p" > ,< / span >
< span class = "p" > }< / span >
< span class = "p" > )< / span >
2021-04-25 00:29:47 +02:00
< span class = "n" > destination< / span > < span class = "o" > .< / span > < span class = "n" > msg_contents< / span > < span class = "p" > (< / span > < span class = "n" > string< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,),< / span > < span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > mapping< / span > < span class = "o" > =< / span > < span class = "n" > mapping< / span > < span class = "p" > )< / span > < / div >
2020-06-13 00:36:45 +02:00
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_after_move" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_after_move" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_after_move< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > source_location< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called after move has completed, regardless of quiet mode or< / span >
< span class = "sd" > not. Allows changes to the object due to the location it is< / span >
< span class = "sd" > now in.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > source_location (Object): Wwhere we came from. This may be `None`.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_object_leave" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_object_leave" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_object_leave< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > moved_obj< / span > < span class = "p" > ,< / span > < span class = "n" > target_location< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called just before an object leaves from inside this object< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > moved_obj (Object): The object leaving< / span >
< span class = "sd" > target_location (Object): Where `moved_obj` is going.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_object_receive" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_object_receive" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_object_receive< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > moved_obj< / span > < span class = "p" > ,< / span > < span class = "n" > source_location< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called after an object has been moved into this object.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > moved_obj (Object): The object moved into this one< / span >
< span class = "sd" > source_location (Object): Where `moved_object` came from.< / span >
< span class = "sd" > Note that this could be `None`.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_traverse" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_traverse" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_traverse< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > traversing_object< / span > < span class = "p" > ,< / span > < span class = "n" > target_location< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This hook is responsible for handling the actual traversal,< / span >
< span class = "sd" > normally by calling< / span >
< span class = "sd" > `traversing_object.move_to(target_location)`. It is normally< / span >
< span class = "sd" > only implemented by Exit objects. If it returns False (usually< / span >
< span class = "sd" > because `move_to` returned False), `at_after_traverse` below< / span >
< span class = "sd" > should not be called and instead `at_failed_traverse` should be< / span >
< span class = "sd" > called.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > traversing_object (Object): Object traversing us.< / span >
< span class = "sd" > target_location (Object): Where target is going.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_after_traverse" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_after_traverse" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_after_traverse< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > traversing_object< / span > < span class = "p" > ,< / span > < span class = "n" > source_location< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called just after an object successfully used this object to< / span >
< span class = "sd" > traverse to another object (i.e. this object is a type of< / span >
< span class = "sd" > Exit)< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > traversing_object (Object): The object traversing us.< / span >
< span class = "sd" > source_location (Object): Where `traversing_object` came from.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > The target location should normally be available as `self.destination`.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_failed_traverse" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_failed_traverse" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_failed_traverse< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > traversing_object< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This is called if an object fails to traverse this object for< / span >
< span class = "sd" > some reason.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > traversing_object (Object): The object that failed traversing us.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > Using the default exits, this hook will not be called if an< / span >
< span class = "sd" > Attribute `err_traverse` is defined - this will in that case be< / span >
< span class = "sd" > read for an error string instead.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_msg_receive" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_msg_receive" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_msg_receive< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > text< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This hook is called whenever someone sends a message to this< / span >
< span class = "sd" > object using the `msg` method.< / span >
< span class = "sd" > Note that from_obj may be None if the sender did not include< / span >
< span class = "sd" > itself as an argument to the obj.msg() call - so you have to< / span >
< span class = "sd" > check for this. .< / span >
< span class = "sd" > Consider this a pre-processing method before msg is passed on< / span >
< span class = "sd" > to the user session. If this method returns False, the msg< / span >
< span class = "sd" > will not be passed on.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > text (str, optional): The message received.< / span >
< span class = "sd" > from_obj (any, optional): The object sending the message.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > This includes any keywords sent to the `msg` method.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > receive (bool): If this message should be received.< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > If this method returns False, the `msg` operation< / span >
< span class = "sd" > will abort without sending the message.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "kc" > True< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_msg_send" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_msg_send" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_msg_send< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > text< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > to_obj< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This is a hook that is called when *this* object sends a< / span >
< span class = "sd" > message to another object with `obj.msg(text, to_obj=obj)`.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > text (str, optional): Text to send.< / span >
< span class = "sd" > to_obj (any, optional): The object to send to.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > Keywords passed from msg()< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > Since this method is executed by `from_obj`, if no `from_obj`< / span >
< span class = "sd" > was passed to `DefaultCharacter.msg` this hook will never< / span >
< span class = "sd" > get called.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
< span class = "c1" > # hooks called by the default cmdset.< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.return_appearance" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.return_appearance" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > return_appearance< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > looker< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This formats a description. It is the hook a ' look' command< / span >
< span class = "sd" > should call.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > looker (Object): Object doing the looking.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > " " " < / span >
2021-06-23 18:58:26 +02:00
< span class = "k" > def< / span > < span class = "nf" > filter_visible< / span > < span class = "p" > (< / span > < span class = "n" > obj_list< / span > < span class = "p" > ):< / span >
< span class = "c1" > # Helper method to determine if objects are visible to the looker.< / span >
< span class = "k" > return< / span > < span class = "p" > [< / span > < span class = "n" > obj< / span > < span class = "k" > for< / span > < span class = "n" > obj< / span > < span class = "ow" > in< / span > < span class = "n" > obj_list< / span > < span class = "k" > if< / span > < span class = "n" > obj< / span > < span class = "o" > !=< / span > < span class = "n" > looker< / span > < span class = "ow" > and< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > access< / span > < span class = "p" > (< / span > < span class = "n" > looker< / span > < span class = "p" > ,< / span > < span class = "s2" > " view" < / span > < span class = "p" > )]< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > looker< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "s2" > " " < / span >
2021-06-23 18:58:26 +02:00
2020-06-13 00:36:45 +02:00
< span class = "c1" > # get and identify all objects< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > exits_list< / span > < span class = "o" > =< / span > < span class = "n" > filter_visible< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > contents_get< / span > < span class = "p" > (< / span > < span class = "n" > content_type< / span > < span class = "o" > =< / span > < span class = "s2" > " exit" < / span > < span class = "p" > ))< / span >
< span class = "n" > users_list< / span > < span class = "o" > =< / span > < span class = "n" > filter_visible< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > contents_get< / span > < span class = "p" > (< / span > < span class = "n" > content_type< / span > < span class = "o" > =< / span > < span class = "s2" > " character" < / span > < span class = "p" > ))< / span >
< span class = "n" > things_list< / span > < span class = "o" > =< / span > < span class = "n" > filter_visible< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > contents_get< / span > < span class = "p" > (< / span > < span class = "n" > content_type< / span > < span class = "o" > =< / span > < span class = "s2" > " object" < / span > < span class = "p" > ))< / span >
< span class = "n" > things< / span > < span class = "o" > =< / span > < span class = "n" > defaultdict< / span > < span class = "p" > (< / span > < span class = "nb" > list< / span > < span class = "p" > )< / span >
< span class = "k" > for< / span > < span class = "n" > thing< / span > < span class = "ow" > in< / span > < span class = "n" > things_list< / span > < span class = "p" > :< / span >
< span class = "n" > things< / span > < span class = "p" > [< / span > < span class = "n" > thing< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > thing< / span > < span class = "p" > )< / span >
< span class = "n" > users< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "sa" > f< / span > < span class = "s2" > " |c< / span > < span class = "si" > {< / span > < span class = "n" > user< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "si" > }< / span > < span class = "s2" > |n" < / span > < span class = "k" > for< / span > < span class = "n" > user< / span > < span class = "ow" > in< / span > < span class = "n" > users_list< / span > < span class = "p" > ]< / span >
< span class = "n" > exits< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > ex< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "k" > for< / span > < span class = "n" > ex< / span > < span class = "ow" > in< / span > < span class = "n" > exits_list< / span > < span class = "p" > ]< / span >
2020-06-13 00:36:45 +02:00
< span class = "c1" > # get description, build string< / span >
< span class = "n" > string< / span > < span class = "o" > =< / span > < span class = "s2" > " |c< / span > < span class = "si" > %s< / span > < span class = "s2" > |n< / span > < span class = "se" > \n< / span > < span class = "s2" > " < / span > < span class = "o" > %< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "n" > looker< / span > < span class = "p" > )< / span >
< span class = "n" > desc< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > desc< / span >
< span class = "k" > if< / span > < span class = "n" > desc< / span > < span class = "p" > :< / span >
< span class = "n" > string< / span > < span class = "o" > +=< / span > < span class = "s2" > " < / span > < span class = "si" > %s< / span > < span class = "s2" > " < / span > < span class = "o" > %< / span > < span class = "n" > desc< / span >
< span class = "k" > if< / span > < span class = "n" > exits< / span > < span class = "p" > :< / span >
< span class = "n" > string< / span > < span class = "o" > +=< / span > < span class = "s2" > " < / span > < span class = "se" > \n< / span > < span class = "s2" > |wExits:|n " < / span > < span class = "o" > +< / span > < span class = "n" > list_to_string< / span > < span class = "p" > (< / span > < span class = "n" > exits< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > users< / span > < span class = "ow" > or< / span > < span class = "n" > things< / span > < span class = "p" > :< / span >
< span class = "c1" > # handle pluralization of things (never pluralize users)< / span >
< span class = "n" > thing_strings< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "k" > for< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > itemlist< / span > < span class = "ow" > in< / span > < span class = "nb" > sorted< / span > < span class = "p" > (< / span > < span class = "n" > things< / span > < span class = "o" > .< / span > < span class = "n" > items< / span > < span class = "p" > ()):< / span >
< span class = "n" > nitem< / span > < span class = "o" > =< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > itemlist< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > nitem< / span > < span class = "o" > ==< / span > < span class = "mi" > 1< / span > < span class = "p" > :< / span >
< span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > _< / span > < span class = "o" > =< / span > < span class = "n" > itemlist< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > get_numbered_name< / span > < span class = "p" > (< / span > < span class = "n" > nitem< / span > < span class = "p" > ,< / span > < span class = "n" > looker< / span > < span class = "p" > ,< / span > < span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "n" > key< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > item< / span > < span class = "o" > .< / span > < span class = "n" > get_numbered_name< / span > < span class = "p" > (< / span > < span class = "n" > nitem< / span > < span class = "p" > ,< / span > < span class = "n" > looker< / span > < span class = "p" > ,< / span > < span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "n" > key< / span > < span class = "p" > )[< / span > < span class = "mi" > 1< / span > < span class = "p" > ]< / span > < span class = "k" > for< / span > < span class = "n" > item< / span > < span class = "ow" > in< / span > < span class = "n" > itemlist< / span > < span class = "p" > ][< / span >
< span class = "mi" > 0< / span >
< span class = "p" > ]< / span >
< span class = "n" > thing_strings< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > key< / span > < span class = "p" > )< / span >
< span class = "n" > string< / span > < span class = "o" > +=< / span > < span class = "s2" > " < / span > < span class = "se" > \n< / span > < span class = "s2" > |wYou see:|n " < / span > < span class = "o" > +< / span > < span class = "n" > list_to_string< / span > < span class = "p" > (< / span > < span class = "n" > users< / span > < span class = "o" > +< / span > < span class = "n" > thing_strings< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > string< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_look" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_look" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_look< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > target< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called when this object performs a look. It allows to< / span >
< span class = "sd" > customize just what this means. It will not itself< / span >
< span class = "sd" > send any data.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > target (Object): The target being looked at. This is< / span >
< span class = "sd" > commonly an object or the current location. It will< / span >
< span class = "sd" > be checked for the " view" type access.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call. This will be passed into< / span >
< span class = "sd" > return_appearance, get_display_name and at_desc but is not used< / span >
< span class = "sd" > by default.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > lookstring (str): A ready-processed look string< / span >
< span class = "sd" > potentially ready to return to the looker.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > target< / span > < span class = "o" > .< / span > < span class = "n" > access< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s2" > " view" < / span > < span class = "p" > ):< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "s2" > " Could not view ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' ." < / span > < span class = "o" > %< / span > < span class = "n" > target< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "ne" > AttributeError< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "s2" > " Could not view ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' ." < / span > < span class = "o" > %< / span > < span class = "n" > target< / span > < span class = "o" > .< / span > < span class = "n" > key< / span >
< span class = "n" > description< / span > < span class = "o" > =< / span > < span class = "n" > target< / span > < span class = "o" > .< / span > < span class = "n" > return_appearance< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "c1" > # the target' s at_desc() method.< / span >
< span class = "c1" > # this must be the last reference to target so it may delete itself when acted on.< / span >
< span class = "n" > target< / span > < span class = "o" > .< / span > < span class = "n" > at_desc< / span > < span class = "p" > (< / span > < span class = "n" > looker< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > description< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_desc" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_desc" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_desc< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > looker< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This is called whenever someone looks at this object.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > looker (Object, optional): The object requesting the description.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_before_get" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_before_get" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_before_get< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > getter< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called by the default `get` command before this object has been< / span >
< span class = "sd" > picked up.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > getter (Object): The object about to get this object.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > shouldget (bool): If the object should be gotten or not.< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > If this method returns False/None, the getting is cancelled< / span >
< span class = "sd" > before it is even started.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "kc" > True< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_get" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_get" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_get< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > getter< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called by the default `get` command when this object has been< / span >
< span class = "sd" > picked up.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > getter (Object): The object getting this object.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > This hook cannot stop the pickup from happening. Use< / span >
< span class = "sd" > permissions or the at_before_get() hook for that.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_before_give" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_before_give" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_before_give< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > giver< / span > < span class = "p" > ,< / span > < span class = "n" > getter< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called by the default `give` command before this object has been< / span >
< span class = "sd" > given.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > giver (Object): The object about to give this object.< / span >
< span class = "sd" > getter (Object): The object about to get this object.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > shouldgive (bool): If the object should be given or not.< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > If this method returns False/None, the giving is cancelled< / span >
< span class = "sd" > before it is even started.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "kc" > True< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_give" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_give" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_give< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > giver< / span > < span class = "p" > ,< / span > < span class = "n" > getter< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called by the default `give` command when this object has been< / span >
< span class = "sd" > given.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > giver (Object): The object giving this object.< / span >
< span class = "sd" > getter (Object): The object getting this object.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > This hook cannot stop the give from happening. Use< / span >
< span class = "sd" > permissions or the at_before_give() hook for that.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_before_drop" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_before_drop" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_before_drop< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > dropper< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called by the default `drop` command before this object has been< / span >
< span class = "sd" > dropped.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > dropper (Object): The object which will drop this object.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > shoulddrop (bool): If the object should be dropped or not.< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > If this method returns False/None, the dropping is cancelled< / span >
< span class = "sd" > before it is even started.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > locks< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " drop" < / span > < span class = "p" > ):< / span >
< span class = "c1" > # TODO: This if-statment will be removed in Evennia 1.0< / span >
< span class = "k" > return< / span > < span class = "kc" > True< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > access< / span > < span class = "p" > (< / span > < span class = "n" > dropper< / span > < span class = "p" > ,< / span > < span class = "s2" > " drop" < / span > < span class = "p" > ,< / span > < span class = "n" > default< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ):< / span >
2020-12-20 14:36:24 +01:00
< span class = "n" > dropper< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "sa" > f< / span > < span class = "s2" > " You cannot drop < / span > < span class = "si" > {< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "n" > dropper< / span > < span class = "p" > )< / span > < span class = "si" > }< / span > < span class = "s2" > " < / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "k" > return< / span > < span class = "kc" > True< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_drop" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_drop" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_drop< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > dropper< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called by the default `drop` command when this object has been< / span >
< span class = "sd" > dropped.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > dropper (Object): The object which just dropped this object.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > This hook cannot stop the drop from happening. Use< / span >
< span class = "sd" > permissions or the at_before_drop() hook for that.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > pass< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_before_say" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_before_say" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_before_say< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > message< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Before the object says something.< / span >
< span class = "sd" > This hook is by default used by the ' say' and ' whisper' < / span >
< span class = "sd" > commands as used by this command it is called before the text< / span >
< span class = "sd" > is said/whispered and can be used to customize the outgoing< / span >
< span class = "sd" > text from the object. Returning `None` aborts the command.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > message (str): The suggested say/whisper text spoken by self.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > whisper (bool): If True, this is a whisper rather than< / span >
< span class = "sd" > a say. This is sent by the whisper command by default.< / span >
< span class = "sd" > Other verbal commands could use this hook in similar< / span >
< span class = "sd" > ways.< / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > receivers (Object or iterable): If set, this is the target or targets for the< / span >
< span class = "sd" > say/whisper.< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > Returns:< / span >
< span class = "sd" > message (str): The (possibly modified) text to be spoken.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "n" > message< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultObject.at_say" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_say" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_say< / span > < span class = "p" > (< / span >
2020-06-13 00:36:45 +02:00
< span class = "bp" > self< / span > < span class = "p" > ,< / span >
< span class = "n" > message< / span > < span class = "p" > ,< / span >
< span class = "n" > msg_self< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > msg_location< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > receivers< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > msg_receivers< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ,< / span >
< span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Display the actual say (or whisper) of self.< / span >
< span class = "sd" > This hook should display the actual say/whisper of the object in its< / span >
< span class = "sd" > location. It should both alert the object (self) and its< / span >
< span class = "sd" > location that some text is spoken. The overriding of messages or< / span >
< span class = "sd" > `mapping` allows for simple customization of the hook without< / span >
< span class = "sd" > re-writing it completely.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > message (str): The message to convey.< / span >
< span class = "sd" > msg_self (bool or str, optional): If boolean True, echo `message` to self. If a string,< / span >
< span class = "sd" > return that message. If False or unset, don' t echo to self.< / span >
< span class = "sd" > msg_location (str, optional): The message to echo to self' s location.< / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > receivers (Object or iterable, optional): An eventual receiver or receivers of the< / span >
< span class = "sd" > message (by default only used by whispers).< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > msg_receivers(str): Specific message to pass to the receiver(s). This will parsed< / span >
< span class = "sd" > with the {receiver} placeholder replaced with the given receiver.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > whisper (bool): If this is a whisper rather than a say. Kwargs< / span >
< span class = "sd" > can be used by other verbal commands in a similar way.< / span >
< span class = "sd" > mapping (dict): Pass an additional mapping to the message.< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > Messages can contain {} markers. These are substituted against the values< / span >
< span class = "sd" > passed in the `mapping` argument.< / span >
< span class = "sd" > msg_self = ' You say: " {speech}" ' < / span >
< span class = "sd" > msg_location = ' {object} says: " {speech}" ' < / span >
< span class = "sd" > msg_receivers = ' {object} whispers: " {speech}" ' < / span >
< span class = "sd" > Supported markers by default:< / span >
< span class = "sd" > {self}: text to self-reference with (default ' You' )< / span >
< span class = "sd" > {speech}: the text spoken/whispered by self.< / span >
< span class = "sd" > {object}: the object speaking.< / span >
< span class = "sd" > {receiver}: replaced with a single receiver only for strings meant for a specific< / span >
< span class = "sd" > receiver (otherwise ' None' ).< / span >
< span class = "sd" > {all_receivers}: comma-separated list of all receivers,< / span >
< span class = "sd" > if more than one, otherwise same as receiver< / span >
< span class = "sd" > {location}: the location where object is.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > msg_type< / span > < span class = "o" > =< / span > < span class = "s2" > " say" < / span >
< span class = "k" > if< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " whisper" < / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > ):< / span >
< span class = "c1" > # whisper mode< / span >
< span class = "n" > msg_type< / span > < span class = "o" > =< / span > < span class = "s2" > " whisper" < / span >
< span class = "n" > msg_self< / span > < span class = "o" > =< / span > < span class = "p" > (< / span >
2021-05-29 13:55:45 +02:00
< span class = "s1" > ' < / span > < span class = "si" > {self}< / span > < span class = "s1" > whisper to < / span > < span class = "si" > {all_receivers}< / span > < span class = "s1" > , " |n< / span > < span class = "si" > {speech}< / span > < span class = "s1" > |n" ' < / span >
2021-06-23 18:58:26 +02:00
< span class = "k" > if< / span > < span class = "n" > msg_self< / span > < span class = "ow" > is< / span > < span class = "kc" > True< / span > < span class = "k" > else< / span > < span class = "n" > msg_self< / span >
2020-06-13 00:36:45 +02:00
< span class = "p" > )< / span >
2020-10-11 22:19:29 +02:00
< span class = "n" > msg_receivers< / span > < span class = "o" > =< / span > < span class = "n" > msg_receivers< / span > < span class = "ow" > or< / span > < span class = "s1" > ' < / span > < span class = "si" > {object}< / span > < span class = "s1" > whispers: " |n< / span > < span class = "si" > {speech}< / span > < span class = "s1" > |n" ' < / span >
2020-06-13 00:36:45 +02:00
< span class = "n" > msg_location< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
2020-10-11 22:19:29 +02:00
< span class = "n" > msg_self< / span > < span class = "o" > =< / span > < span class = "s1" > ' < / span > < span class = "si" > {self}< / span > < span class = "s1" > say, " |n< / span > < span class = "si" > {speech}< / span > < span class = "s1" > |n" ' < / span > < span class = "k" > if< / span > < span class = "n" > msg_self< / span > < span class = "ow" > is< / span > < span class = "kc" > True< / span > < span class = "k" > else< / span > < span class = "n" > msg_self< / span >
2020-06-13 00:36:45 +02:00
< span class = "n" > msg_location< / span > < span class = "o" > =< / span > < span class = "n" > msg_location< / span > < span class = "ow" > or< / span > < span class = "s1" > ' < / span > < span class = "si" > {object}< / span > < span class = "s1" > says, " < / span > < span class = "si" > {speech}< / span > < span class = "s1" > " ' < / span >
< span class = "n" > msg_receivers< / span > < span class = "o" > =< / span > < span class = "n" > msg_receivers< / span > < span class = "ow" > or< / span > < span class = "n" > message< / span >
< span class = "n" > custom_mapping< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " mapping" < / span > < span class = "p" > ,< / span > < span class = "p" > {})< / span >
< span class = "n" > receivers< / span > < span class = "o" > =< / span > < span class = "n" > make_iter< / span > < span class = "p" > (< / span > < span class = "n" > receivers< / span > < span class = "p" > )< / span > < span class = "k" > if< / span > < span class = "n" > receivers< / span > < span class = "k" > else< / span > < span class = "kc" > None< / span >
< span class = "n" > location< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span >
< span class = "k" > if< / span > < span class = "n" > msg_self< / span > < span class = "p" > :< / span >
< span class = "n" > self_mapping< / span > < span class = "o" > =< / span > < span class = "p" > {< / span >
< span class = "s2" > " self" < / span > < span class = "p" > :< / span > < span class = "s2" > " You" < / span > < span class = "p" > ,< / span >
< span class = "s2" > " object" < / span > < span class = "p" > :< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ),< / span >
< span class = "s2" > " location" < / span > < span class = "p" > :< / span > < span class = "n" > location< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "k" > if< / span > < span class = "n" > location< / span > < span class = "k" > else< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "s2" > " receiver" < / span > < span class = "p" > :< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "s2" > " all_receivers" < / span > < span class = "p" > :< / span > < span class = "s2" > " , " < / span > < span class = "o" > .< / span > < span class = "n" > join< / span > < span class = "p" > (< / span > < span class = "n" > recv< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > recv< / span > < span class = "ow" > in< / span > < span class = "n" > receivers< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > receivers< / span >
< span class = "k" > else< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "s2" > " speech" < / span > < span class = "p" > :< / span > < span class = "n" > message< / span > < span class = "p" > ,< / span >
< span class = "p" > }< / span >
< span class = "n" > self_mapping< / span > < span class = "o" > .< / span > < span class = "n" > update< / span > < span class = "p" > (< / span > < span class = "n" > custom_mapping< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "n" > text< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "n" > msg_self< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "n" > self_mapping< / span > < span class = "p" > ),< / span > < span class = "p" > {< / span > < span class = "s2" > " type" < / span > < span class = "p" > :< / span > < span class = "n" > msg_type< / span > < span class = "p" > }),< / span > < span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > receivers< / span > < span class = "ow" > and< / span > < span class = "n" > msg_receivers< / span > < span class = "p" > :< / span >
< span class = "n" > receiver_mapping< / span > < span class = "o" > =< / span > < span class = "p" > {< / span >
< span class = "s2" > " self" < / span > < span class = "p" > :< / span > < span class = "s2" > " You" < / span > < span class = "p" > ,< / span >
< span class = "s2" > " object" < / span > < span class = "p" > :< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "s2" > " location" < / span > < span class = "p" > :< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "s2" > " receiver" < / span > < span class = "p" > :< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "s2" > " all_receivers" < / span > < span class = "p" > :< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "s2" > " speech" < / span > < span class = "p" > :< / span > < span class = "n" > message< / span > < span class = "p" > ,< / span >
< span class = "p" > }< / span >
< span class = "k" > for< / span > < span class = "n" > receiver< / span > < span class = "ow" > in< / span > < span class = "n" > make_iter< / span > < span class = "p" > (< / span > < span class = "n" > receivers< / span > < span class = "p" > ):< / span >
< span class = "n" > individual_mapping< / span > < span class = "o" > =< / span > < span class = "p" > {< / span >
< span class = "s2" > " object" < / span > < span class = "p" > :< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "n" > receiver< / span > < span class = "p" > ),< / span >
< span class = "s2" > " location" < / span > < span class = "p" > :< / span > < span class = "n" > location< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "n" > receiver< / span > < span class = "p" > ),< / span >
< span class = "s2" > " receiver" < / span > < span class = "p" > :< / span > < span class = "n" > receiver< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "n" > receiver< / span > < span class = "p" > ),< / span >
< span class = "s2" > " all_receivers" < / span > < span class = "p" > :< / span > < span class = "s2" > " , " < / span > < span class = "o" > .< / span > < span class = "n" > join< / span > < span class = "p" > (< / span > < span class = "n" > recv< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "n" > recv< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > recv< / span > < span class = "ow" > in< / span > < span class = "n" > receivers< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > receivers< / span >
< span class = "k" > else< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "p" > }< / span >
< span class = "n" > receiver_mapping< / span > < span class = "o" > .< / span > < span class = "n" > update< / span > < span class = "p" > (< / span > < span class = "n" > individual_mapping< / span > < span class = "p" > )< / span >
< span class = "n" > receiver_mapping< / span > < span class = "o" > .< / span > < span class = "n" > update< / span > < span class = "p" > (< / span > < span class = "n" > custom_mapping< / span > < span class = "p" > )< / span >
< span class = "n" > receiver< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span >
< span class = "n" > text< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "n" > msg_receivers< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "n" > receiver_mapping< / span > < span class = "p" > ),< / span > < span class = "p" > {< / span > < span class = "s2" > " type" < / span > < span class = "p" > :< / span > < span class = "n" > msg_type< / span > < span class = "p" > }),< / span >
< span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "ow" > and< / span > < span class = "n" > msg_location< / span > < span class = "p" > :< / span >
< span class = "n" > location_mapping< / span > < span class = "o" > =< / span > < span class = "p" > {< / span >
< span class = "s2" > " self" < / span > < span class = "p" > :< / span > < span class = "s2" > " You" < / span > < span class = "p" > ,< / span >
< span class = "s2" > " object" < / span > < span class = "p" > :< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span >
< span class = "s2" > " location" < / span > < span class = "p" > :< / span > < span class = "n" > location< / span > < span class = "p" > ,< / span >
< span class = "s2" > " all_receivers" < / span > < span class = "p" > :< / span > < span class = "s2" > " , " < / span > < span class = "o" > .< / span > < span class = "n" > join< / span > < span class = "p" > (< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > recv< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > recv< / span > < span class = "ow" > in< / span > < span class = "n" > receivers< / span > < span class = "p" > )< / span > < span class = "k" > if< / span > < span class = "n" > receivers< / span > < span class = "k" > else< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "s2" > " receiver" < / span > < span class = "p" > :< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "s2" > " speech" < / span > < span class = "p" > :< / span > < span class = "n" > message< / span > < span class = "p" > ,< / span >
< span class = "p" > }< / span >
< span class = "n" > location_mapping< / span > < span class = "o" > .< / span > < span class = "n" > update< / span > < span class = "p" > (< / span > < span class = "n" > custom_mapping< / span > < span class = "p" > )< / span >
< span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "k" > if< / span > < span class = "n" > msg_self< / span > < span class = "p" > :< / span >
< span class = "n" > exclude< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > receivers< / span > < span class = "p" > :< / span >
< span class = "n" > exclude< / span > < span class = "o" > .< / span > < span class = "n" > extend< / span > < span class = "p" > (< / span > < span class = "n" > receivers< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > .< / span > < span class = "n" > msg_contents< / span > < span class = "p" > (< / span >
< span class = "n" > text< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "n" > msg_location< / span > < span class = "p" > ,< / span > < span class = "p" > {< / span > < span class = "s2" > " type" < / span > < span class = "p" > :< / span > < span class = "n" > msg_type< / span > < span class = "p" > }),< / span >
< span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span >
< span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "n" > exclude< / span > < span class = "p" > ,< / span >
< span class = "n" > mapping< / span > < span class = "o" > =< / span > < span class = "n" > location_mapping< / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span > < / div > < / div >
< span class = "c1" > #< / span >
< span class = "c1" > # Base Character object< / span >
< span class = "c1" > #< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultCharacter" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > DefaultCharacter< / span > < span class = "p" > (< / span > < span class = "n" > DefaultObject< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This implements an Object puppeted by a Session - that is,< / span >
< span class = "sd" > a character avatar controlled by an account.< / span >
< span class = "sd" > " " " < / span >
2021-06-23 18:58:26 +02:00
< span class = "c1" > # Tuple of types used for indexing inventory contents. Characters generally wouldn' t be in< / span >
< span class = "c1" > # anyone' s inventory, but this also governs displays in room contents.< / span >
< span class = "n" > _content_types< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "s2" > " character" < / span > < span class = "p" > ,)< / span >
2020-06-13 00:36:45 +02:00
< span class = "c1" > # lockstring of newly created rooms, for easy overloading.< / span >
< span class = "c1" > # Will be formatted with the appropriate attributes.< / span >
2020-07-31 18:18:01 +02:00
< span class = "n" > lockstring< / span > < span class = "o" > =< / span > < span class = "p" > (< / span >
< span class = "s2" > " puppet:id(< / span > < span class = "si" > {character_id}< / span > < span class = "s2" > ) or pid(< / span > < span class = "si" > {account_id}< / span > < span class = "s2" > ) or perm(Developer) or pperm(Developer);" < / span >
< span class = "s2" > " delete:id(< / span > < span class = "si" > {account_id}< / span > < span class = "s2" > ) or perm(Admin)" < / span >
< span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultCharacter.create" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.create" > [docs]< / a > < span class = "nd" > @classmethod< / span >
2020-07-31 18:18:01 +02:00
< span class = "k" > def< / span > < span class = "nf" > create< / span > < span class = "p" > (< / span > < span class = "bp" > cls< / span > < span class = "p" > ,< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > account< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Creates a basic Character with default parameters, unless otherwise< / span >
< span class = "sd" > specified or extended.< / span >
< span class = "sd" > Provides a friendlier interface to the utils.create_character() function.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > key (str): Name of the new Character.< / span >
2020-07-31 18:18:01 +02:00
< span class = "sd" > account (obj, optional): Account to associate this Character with.< / span >
< span class = "sd" > If unset supplying None-- it will< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > change the default lockset and skip creator attribution.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > description (str): Brief description for this object.< / span >
< span class = "sd" > ip (str): IP address of creator (for object auditing).< / span >
< span class = "sd" > All other kwargs will be passed into the create_object call.< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > character (Object): A newly created Character of the given typeclass.< / span >
< span class = "sd" > errors (list): A list of errors in string form, if any.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > errors< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "n" > obj< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "c1" > # Get IP address of creator, if available< / span >
< span class = "n" > ip< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " ip" < / span > < span class = "p" > ,< / span > < span class = "s2" > " " < / span > < span class = "p" > )< / span >
< span class = "c1" > # If no typeclass supplied, use this class< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " typeclass" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " typeclass" < / span > < span class = "p" > ,< / span > < span class = "bp" > cls< / span > < span class = "p" > )< / span >
2021-06-23 18:58:26 +02:00
< span class = "c1" > # Normalize to latin characters and validate, if necessary, the supplied key< / span >
< span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "bp" > cls< / span > < span class = "o" > .< / span > < span class = "n" > normalize_name< / span > < span class = "p" > (< / span > < span class = "n" > key< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > cls< / span > < span class = "o" > .< / span > < span class = "n" > validate_name< / span > < span class = "p" > (< / span > < span class = "n" > key< / span > < span class = "p" > ):< / span >
< span class = "n" > errors< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " Invalid character name." < / span > < span class = "p" > ))< / span >
< span class = "k" > return< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "n" > errors< / span >
2020-06-13 00:36:45 +02:00
< span class = "c1" > # Set the supplied key as the name of the intended object< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " key" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > key< / span >
< span class = "c1" > # Get permissions< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " permissions" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " permissions" < / span > < span class = "p" > ,< / span > < span class = "n" > settings< / span > < span class = "o" > .< / span > < span class = "n" > PERMISSION_ACCOUNT_DEFAULT< / span > < span class = "p" > )< / span >
< span class = "c1" > # Get description if provided< / span >
< span class = "n" > description< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " description" < / span > < span class = "p" > ,< / span > < span class = "s2" > " " < / span > < span class = "p" > )< / span >
< span class = "c1" > # Get locks if provided< / span >
< span class = "n" > locks< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " locks" < / span > < span class = "p" > ,< / span > < span class = "s2" > " " < / span > < span class = "p" > )< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "c1" > # Check to make sure account does not have too many chars< / span >
< span class = "k" > if< / span > < span class = "n" > account< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > characters< / span > < span class = "p" > )< / span > < span class = "o" > > =< / span > < span class = "n" > settings< / span > < span class = "o" > .< / span > < span class = "n" > MAX_NR_CHARACTERS< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > errors< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " There are too many characters associated with this account." < / span > < span class = "p" > ))< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > return< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "n" > errors< / span >
< span class = "c1" > # Create the Character< / span >
< span class = "n" > obj< / span > < span class = "o" > =< / span > < span class = "n" > create< / span > < span class = "o" > .< / span > < span class = "n" > create_object< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "c1" > # Record creator id and creation IP< / span >
< span class = "k" > if< / span > < span class = "n" > ip< / span > < span class = "p" > :< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > creator_ip< / span > < span class = "o" > =< / span > < span class = "n" > ip< / span >
< span class = "k" > if< / span > < span class = "n" > account< / span > < span class = "p" > :< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > creator_id< / span > < span class = "o" > =< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > id< / span >
< span class = "k" > if< / span > < span class = "n" > obj< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > characters< / span > < span class = "p" > :< / span >
< span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > _playable_characters< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > )< / span >
< span class = "c1" > # Add locks< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > locks< / span > < span class = "ow" > and< / span > < span class = "n" > account< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "c1" > # Allow only the character itself and the creator account to puppet this character< / span >
< span class = "c1" > # (and Developers).< / span >
2020-06-13 00:36:45 +02:00
< span class = "n" > locks< / span > < span class = "o" > =< / span > < span class = "bp" > cls< / span > < span class = "o" > .< / span > < span class = "n" > lockstring< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "p" > {< / span > < span class = "s2" > " character_id" < / span > < span class = "p" > :< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > id< / span > < span class = "p" > ,< / span > < span class = "s2" > " account_id" < / span > < span class = "p" > :< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > id< / span > < span class = "p" > })< / span >
< span class = "k" > elif< / span > < span class = "ow" > not< / span > < span class = "n" > locks< / span > < span class = "ow" > and< / span > < span class = "ow" > not< / span > < span class = "n" > account< / span > < span class = "p" > :< / span >
< span class = "n" > locks< / span > < span class = "o" > =< / span > < span class = "bp" > cls< / span > < span class = "o" > .< / span > < span class = "n" > lockstring< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "p" > {< / span > < span class = "s2" > " character_id" < / span > < span class = "p" > :< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > id< / span > < span class = "p" > ,< / span > < span class = "s2" > " account_id" < / span > < span class = "p" > :< / span > < span class = "o" > -< / span > < span class = "mi" > 1< / span > < span class = "p" > })< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > locks< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span > < span class = "n" > locks< / span > < span class = "p" > )< / span >
< span class = "c1" > # If no description is set, set a default description< / span >
< span class = "k" > if< / span > < span class = "n" > description< / span > < span class = "ow" > or< / span > < span class = "ow" > not< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > desc< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > desc< / span > < span class = "o" > =< / span > < span class = "n" > description< / span > < span class = "k" > if< / span > < span class = "n" > description< / span > < span class = "k" > else< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " This is a character." < / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "k" > as< / span > < span class = "n" > e< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > errors< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "sa" > f< / span > < span class = "s2" > " An error occurred while creating object ' < / span > < span class = "si" > {< / span > < span class = "n" > key< / span > < span class = "si" > }< / span > < span class = "s2" > object." < / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "n" > logger< / span > < span class = "o" > .< / span > < span class = "n" > log_err< / span > < span class = "p" > (< / span > < span class = "n" > e< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "n" > errors< / span > < / div >
2021-06-23 18:58:26 +02:00
< div class = "viewcode-block" id = "DefaultCharacter.normalize_name" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.normalize_name" > [docs]< / a > < span class = "nd" > @classmethod< / span >
< span class = "k" > def< / span > < span class = "nf" > normalize_name< / span > < span class = "p" > (< / span > < span class = "bp" > cls< / span > < span class = "p" > ,< / span > < span class = "n" > name< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Normalize the character name prior to creating. Note that this should be refactored to< / span >
< span class = "sd" > support i18n for non-latin scripts, but as we (currently) have no bug reports requesting< / span >
< span class = "sd" > better support of non-latin character sets, requiring character names to be latinified is an< / span >
< span class = "sd" > acceptable option.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > name (str) : The name of the character< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > latin_name (str) : A valid name.< / span >
< span class = "sd" > " " " < / span >
< span class = "kn" > from< / span > < span class = "nn" > evennia.utils.utils< / span > < span class = "kn" > import< / span > < span class = "n" > latinify< / span >
< span class = "n" > latin_name< / span > < span class = "o" > =< / span > < span class = "n" > latinify< / span > < span class = "p" > (< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "n" > default< / span > < span class = "o" > =< / span > < span class = "s2" > " X" < / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > latin_name< / span > < / div >
< div class = "viewcode-block" id = "DefaultCharacter.validate_name" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.validate_name" > [docs]< / a > < span class = "nd" > @classmethod< / span >
< span class = "k" > def< / span > < span class = "nf" > validate_name< / span > < span class = "p" > (< / span > < span class = "bp" > cls< / span > < span class = "p" > ,< / span > < span class = "n" > name< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " Validate the character name prior to creating. Overload this function to add custom validators< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > name (str) : The name of the character< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > valid (bool) : True if character creation should continue; False if it should fail< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "kc" > True< / span > < span class = "c1" > # Default validator does not perform any operations< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultCharacter.basetype_setup" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.basetype_setup" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > basetype_setup< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Setup character-specific security.< / span >
< span class = "sd" > You should normally not need to overload this, but if you do,< / span >
< span class = "sd" > make sure to reproduce at least the two last commands in this< / span >
< span class = "sd" > method (unless you want to fundamentally change how a< / span >
< span class = "sd" > Character object works).< / span >
< span class = "sd" > " " " < / span >
< span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > basetype_setup< / span > < span class = "p" > ()< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > locks< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span >
< span class = "s2" > " ;" < / span > < span class = "o" > .< / span > < span class = "n" > join< / span > < span class = "p" > ([< / span > < span class = "s2" > " get:false()" < / span > < span class = "p" > ,< / span > < span class = "s2" > " call:false()" < / span > < span class = "p" > ])< / span > < span class = "c1" > # noone can pick up the character< / span >
< span class = "p" > )< / span > < span class = "c1" > # no commands can be called on character from outside< / span >
< span class = "c1" > # add the default cmdset< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > cmdset< / span > < span class = "o" > .< / span > < span class = "n" > add_default< / span > < span class = "p" > (< / span > < span class = "n" > settings< / span > < span class = "o" > .< / span > < span class = "n" > CMDSET_CHARACTER< / span > < span class = "p" > ,< / span > < span class = "n" > permanent< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > )< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultCharacter.at_after_move" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.at_after_move" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_after_move< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > source_location< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > We make sure to look around after a move.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > .< / span > < span class = "n" > access< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s2" > " view" < / span > < span class = "p" > ):< / span >
2021-07-23 00:25:23 +02:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "n" > text< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > at_look< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "p" > ),< / span > < span class = "p" > {< / span > < span class = "s2" > " type" < / span > < span class = "p" > :< / span > < span class = "s2" > " look" < / span > < span class = "p" > }))< / span > < / div >
2020-06-13 00:36:45 +02:00
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultCharacter.at_pre_puppet" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.at_pre_puppet" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_pre_puppet< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > account< / span > < span class = "p" > ,< / span > < span class = "n" > session< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Return the character from storage in None location in `at_post_unpuppet`.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > account (Account): This is the connecting account.< / span >
< span class = "sd" > session (Session): Session controlling the connection.< / span >
2021-06-23 18:58:26 +02:00
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "p" > (< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span >
< span class = "p" > ):< / span > < span class = "c1" > # Make sure character' s location is never None before being puppeted.< / span >
< span class = "c1" > # Return to last location (or home, which should always exist),< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > prelogout_location< / span > < span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > prelogout_location< / span > < span class = "k" > else< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > home< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > .< / span > < span class = "n" > at_object_receive< / span > < span class = "p" > (< / span >
< span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span >
< span class = "p" > )< / span > < span class = "c1" > # and trigger the location' s reception hook.< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "p" > :< / span > < span class = "c1" > # If the character is verified to be somewhere,< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > prelogout_location< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "c1" > # save location again to be sure.< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " |r< / span > < span class = "si" > {obj}< / span > < span class = "s2" > has no location and no home is set.|n" < / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "p" > ),< / span >
< span class = "n" > session< / span > < span class = "o" > =< / span > < span class = "n" > session< / span >
2020-06-13 00:36:45 +02:00
< span class = "p" > )< / span > < span class = "c1" > # Note to set home.< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultCharacter.at_post_puppet" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.at_post_puppet" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_post_puppet< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called just after puppeting has been completed and all< / span >
< span class = "sd" > Account< -> Object links have been established.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Note:< / span >
< span class = "sd" > You can use `self.account` and `self.sessions.get()` to get< / span >
< span class = "sd" > account and sessions at this point; the last entry in the< / span >
< span class = "sd" > list from `self.sessions.get()` is the latest Session< / span >
< span class = "sd" > puppeting this Object.< / span >
< span class = "sd" > " " " < / span >
2021-06-23 18:58:26 +02:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "se" > \n< / span > < span class = "s2" > You become |c< / span > < span class = "si" > {name}< / span > < span class = "s2" > |n.< / span > < span class = "se" > \n< / span > < span class = "s2" > " < / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > name< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "p" > ))< / span >
2020-06-13 00:36:45 +02:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > ((< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > at_look< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "p" > ),< / span > < span class = "p" > {< / span > < span class = "s2" > " type" < / span > < span class = "p" > :< / span > < span class = "s2" > " look" < / span > < span class = "p" > }),< / span > < span class = "n" > options< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > message< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "n" > from_obj< / span > < span class = "p" > ):< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "si" > {name}< / span > < span class = "s2" > has entered the game." < / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > name< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > )),< / span >
< span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "n" > from_obj< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > .< / span > < span class = "n" > for_contents< / span > < span class = "p" > (< / span > < span class = "n" > message< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "bp" > self< / span > < span class = "p" > ],< / span > < span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultCharacter.at_post_unpuppet" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultCharacter.at_post_unpuppet" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_post_unpuppet< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > account< / span > < span class = "p" > ,< / span > < span class = "n" > session< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > We stove away the character when the account goes ooc/logs off,< / span >
< span class = "sd" > otherwise the character object will remain in the room also< / span >
< span class = "sd" > after the account logged off (" headless" , so to say).< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > account (Account): The account object that just disconnected< / span >
< span class = "sd" > from this object.< / span >
< span class = "sd" > session (Session): Session controlling the connection that< / span >
< span class = "sd" > just disconnected.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > sessions< / span > < span class = "o" > .< / span > < span class = "n" > count< / span > < span class = "p" > ():< / span >
< span class = "c1" > # only remove this char from grid if no sessions control it anymore.< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "p" > :< / span >
< span class = "k" > def< / span > < span class = "nf" > message< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "n" > from_obj< / span > < span class = "p" > ):< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "si" > {name}< / span > < span class = "s2" > has left the game." < / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "n" > name< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > )),< / span >
< span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "n" > from_obj< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > .< / span > < span class = "n" > for_contents< / span > < span class = "p" > (< / span > < span class = "n" > message< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "bp" > self< / span > < span class = "p" > ],< / span > < span class = "n" > from_obj< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > prelogout_location< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < / div >
< span class = "nd" > @property< / span >
< span class = "k" > def< / span > < span class = "nf" > idle_time< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Returns the idle time of the least idle session in seconds. If< / span >
< span class = "sd" > no sessions are connected it returns nothing.< / span >
2021-06-23 18:58:26 +02:00
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "n" > idle< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > session< / span > < span class = "o" > .< / span > < span class = "n" > cmd_last_visible< / span > < span class = "k" > for< / span > < span class = "n" > session< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > sessions< / span > < span class = "o" > .< / span > < span class = "n" > all< / span > < span class = "p" > ()]< / span >
< span class = "k" > if< / span > < span class = "n" > idle< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "n" > time< / span > < span class = "o" > .< / span > < span class = "n" > time< / span > < span class = "p" > ()< / span > < span class = "o" > -< / span > < span class = "nb" > float< / span > < span class = "p" > (< / span > < span class = "nb" > max< / span > < span class = "p" > (< / span > < span class = "n" > idle< / span > < span class = "p" > ))< / span >
< span class = "k" > return< / span > < span class = "kc" > None< / span >
< span class = "nd" > @property< / span >
< span class = "k" > def< / span > < span class = "nf" > connection_time< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Returns the maximum connection time of all connected sessions< / span >
< span class = "sd" > in seconds. Returns nothing if there are no sessions.< / span >
2021-06-23 18:58:26 +02:00
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "n" > conn< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > session< / span > < span class = "o" > .< / span > < span class = "n" > conn_time< / span > < span class = "k" > for< / span > < span class = "n" > session< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > sessions< / span > < span class = "o" > .< / span > < span class = "n" > all< / span > < span class = "p" > ()]< / span >
< span class = "k" > if< / span > < span class = "n" > conn< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "n" > time< / span > < span class = "o" > .< / span > < span class = "n" > time< / span > < span class = "p" > ()< / span > < span class = "o" > -< / span > < span class = "nb" > float< / span > < span class = "p" > (< / span > < span class = "nb" > min< / span > < span class = "p" > (< / span > < span class = "n" > conn< / span > < span class = "p" > ))< / span >
< span class = "k" > return< / span > < span class = "kc" > None< / span > < / div >
< span class = "c1" > #< / span >
< span class = "c1" > # Base Room object< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultRoom" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultRoom" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > DefaultRoom< / span > < span class = "p" > (< / span > < span class = "n" > DefaultObject< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This is the base room object. It' s just like any Object except its< / span >
< span class = "sd" > location is always `None`.< / span >
< span class = "sd" > " " " < / span >
2021-06-23 18:58:26 +02:00
< span class = "c1" > # A tuple of strings used for indexing this object inside an inventory.< / span >
< span class = "c1" > # Generally, a room isn' t expected to HAVE a location, but maybe in some games?< / span >
< span class = "n" > _content_types< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "s2" > " room" < / span > < span class = "p" > ,)< / span >
2020-06-13 00:36:45 +02:00
< span class = "c1" > # lockstring of newly created rooms, for easy overloading.< / span >
< span class = "c1" > # Will be formatted with the {id} of the creating object.< / span >
< span class = "n" > lockstring< / span > < span class = "o" > =< / span > < span class = "p" > (< / span >
< span class = "s2" > " control:id(< / span > < span class = "si" > {id}< / span > < span class = "s2" > ) or perm(Admin); " < / span >
< span class = "s2" > " delete:id(< / span > < span class = "si" > {id}< / span > < span class = "s2" > ) or perm(Admin); " < / span >
< span class = "s2" > " edit:id(< / span > < span class = "si" > {id}< / span > < span class = "s2" > ) or perm(Admin)" < / span >
< span class = "p" > )< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultRoom.create" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultRoom.create" > [docs]< / a > < span class = "nd" > @classmethod< / span >
2020-07-31 18:18:01 +02:00
< span class = "k" > def< / span > < span class = "nf" > create< / span > < span class = "p" > (< / span > < span class = "bp" > cls< / span > < span class = "p" > ,< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > account< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Creates a basic Room with default parameters, unless otherwise< / span >
< span class = "sd" > specified or extended.< / span >
< span class = "sd" > Provides a friendlier interface to the utils.create_object() function.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > key (str): Name of the new Room.< / span >
2020-07-31 18:18:01 +02:00
< span class = "sd" > account (obj, optional): Account to associate this Room with. If< / span >
< span class = "sd" > given, it will be given specific control/edit permissions to this< / span >
< span class = "sd" > object (along with normal Admin perms). If not given, default< / span >
2020-06-13 00:36:45 +02:00
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > description (str): Brief description for this object.< / span >
< span class = "sd" > ip (str): IP address of creator (for object auditing).< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > room (Object): A newly created Room of the given typeclass.< / span >
< span class = "sd" > errors (list): A list of errors in string form, if any.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > errors< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "n" > obj< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "c1" > # Get IP address of creator, if available< / span >
< span class = "n" > ip< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " ip" < / span > < span class = "p" > ,< / span > < span class = "s2" > " " < / span > < span class = "p" > )< / span >
< span class = "c1" > # If no typeclass supplied, use this class< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " typeclass" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " typeclass" < / span > < span class = "p" > ,< / span > < span class = "bp" > cls< / span > < span class = "p" > )< / span >
< span class = "c1" > # Set the supplied key as the name of the intended object< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " key" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > key< / span >
< span class = "c1" > # Get who to send errors to< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " report_to" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " report_to" < / span > < span class = "p" > ,< / span > < span class = "n" > account< / span > < span class = "p" > )< / span >
< span class = "c1" > # Get description, if provided< / span >
< span class = "n" > description< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " description" < / span > < span class = "p" > ,< / span > < span class = "s2" > " " < / span > < span class = "p" > )< / span >
2020-07-31 18:18:01 +02:00
< span class = "c1" > # get locks if provided< / span >
< span class = "n" > locks< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " locks" < / span > < span class = "p" > ,< / span > < span class = "s2" > " " < / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "c1" > # Create the Room< / span >
< span class = "n" > obj< / span > < span class = "o" > =< / span > < span class = "n" > create< / span > < span class = "o" > .< / span > < span class = "n" > create_object< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
2020-07-31 18:18:01 +02:00
< span class = "c1" > # Add locks< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > locks< / span > < span class = "ow" > and< / span > < span class = "n" > account< / span > < span class = "p" > :< / span >
< span class = "n" > locks< / span > < span class = "o" > =< / span > < span class = "bp" > cls< / span > < span class = "o" > .< / span > < span class = "n" > lockstring< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "p" > {< / span > < span class = "s2" > " id" < / span > < span class = "p" > :< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > id< / span > < span class = "p" > })< / span >
< span class = "k" > elif< / span > < span class = "ow" > not< / span > < span class = "n" > locks< / span > < span class = "ow" > and< / span > < span class = "ow" > not< / span > < span class = "n" > account< / span > < span class = "p" > :< / span >
2021-07-23 00:25:23 +02:00
< span class = "n" > locks< / span > < span class = "o" > =< / span > < span class = "bp" > cls< / span > < span class = "o" > .< / span > < span class = "n" > lockstring< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "p" > {< / span > < span class = "s2" > " id" < / span > < span class = "p" > :< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > id< / span > < span class = "p" > })< / span >
2020-07-31 18:18:01 +02:00
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > locks< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span > < span class = "n" > locks< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "c1" > # Record creator id and creation IP< / span >
< span class = "k" > if< / span > < span class = "n" > ip< / span > < span class = "p" > :< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > creator_ip< / span > < span class = "o" > =< / span > < span class = "n" > ip< / span >
< span class = "k" > if< / span > < span class = "n" > account< / span > < span class = "p" > :< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > creator_id< / span > < span class = "o" > =< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > id< / span >
< span class = "c1" > # If no description is set, set a default description< / span >
< span class = "k" > if< / span > < span class = "n" > description< / span > < span class = "ow" > or< / span > < span class = "ow" > not< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > desc< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > desc< / span > < span class = "o" > =< / span > < span class = "n" > description< / span > < span class = "k" > if< / span > < span class = "n" > description< / span > < span class = "k" > else< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " This is a room." < / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "k" > as< / span > < span class = "n" > e< / span > < span class = "p" > :< / span >
< span class = "n" > errors< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "s2" > " An error occurred while creating this ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' object." < / span > < span class = "o" > %< / span > < span class = "n" > key< / span > < span class = "p" > )< / span >
< span class = "n" > logger< / span > < span class = "o" > .< / span > < span class = "n" > log_err< / span > < span class = "p" > (< / span > < span class = "n" > e< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "n" > errors< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultRoom.basetype_setup" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultRoom.basetype_setup" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > basetype_setup< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Simple room setup setting locks to make sure the room< / span >
< span class = "sd" > cannot be picked up.< / span >
< span class = "sd" > " " " < / span >
< span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > basetype_setup< / span > < span class = "p" > ()< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > locks< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span >
< span class = "s2" > " ;" < / span > < span class = "o" > .< / span > < span class = "n" > join< / span > < span class = "p" > ([< / span > < span class = "s2" > " get:false()" < / span > < span class = "p" > ,< / span > < span class = "s2" > " puppet:false()" < / span > < span class = "p" > ])< / span >
< span class = "p" > )< / span > < span class = "c1" > # would be weird to puppet a room ...< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < / div > < / div >
< span class = "c1" > #< / span >
< span class = "c1" > # Default Exit command, used by the base exit object< / span >
< span class = "c1" > #< / span >
2021-01-30 13:29:07 +01:00
< div class = "viewcode-block" id = "ExitCommand" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.ExitCommand" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > ExitCommand< / span > < span class = "p" > (< / span > < span class = "n" > _COMMAND_DEFAULT_CLASS< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This is a command that simply cause the caller to traverse< / span >
< span class = "sd" > the object it is attached to.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > obj< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "ExitCommand.func" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.ExitCommand.func" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > func< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Default exit traverse if no syscommand is defined.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > access< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > caller< / span > < span class = "p" > ,< / span > < span class = "s2" > " traverse" < / span > < span class = "p" > ):< / span >
< span class = "c1" > # we may traverse the exit.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > at_traverse< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > caller< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > destination< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "c1" > # exit is locked< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > err_traverse< / span > < span class = "p" > :< / span >
< span class = "c1" > # if exit has a better error message, let' s use it.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > caller< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > err_traverse< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "c1" > # No shorthand error message. Call hook.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > at_failed_traverse< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > caller< / span > < span class = "p" > )< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "ExitCommand.get_extra_info" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.ExitCommand.get_extra_info" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > get_extra_info< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > caller< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Shows a bit of information on where the exit leads.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > caller (Object): The object (usually a character) that entered an ambiguous command.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Returns:< / span >
2021-06-23 18:58:26 +02:00
< span class = "sd" > A string with identifying information to disambiguate the command, conventionally with a< / span >
< span class = "sd" > preceding space.< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > destination< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "s2" > " (exit to < / span > < span class = "si" > %s< / span > < span class = "s2" > )" < / span > < span class = "o" > %< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > destination< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "n" > caller< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "s2" > " (< / span > < span class = "si" > %s< / span > < span class = "s2" > )" < / span > < span class = "o" > %< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > get_display_name< / span > < span class = "p" > (< / span > < span class = "n" > caller< / span > < span class = "p" > )< / span > < / div > < / div >
< span class = "c1" > #< / span >
< span class = "c1" > # Base Exit object< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultExit" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultExit" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > DefaultExit< / span > < span class = "p" > (< / span > < span class = "n" > DefaultObject< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This is the base exit object - it connects a location to another.< / span >
< span class = "sd" > This is done by the exit assigning a " command" on itself with the< / span >
< span class = "sd" > same name as the exit object (to do this we need to remember to< / span >
< span class = "sd" > re-create the command when the object is cached since it must be< / span >
< span class = "sd" > created dynamically depending on what the exit is called). This< / span >
< span class = "sd" > command (which has a high priority) will thus allow us to traverse< / span >
< span class = "sd" > exits simply by giving the exit-object' s name on its own.< / span >
< span class = "sd" > " " " < / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > _content_types< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "s2" > " exit" < / span > < span class = "p" > ,)< / span >
2020-06-13 00:36:45 +02:00
< span class = "n" > exit_command< / span > < span class = "o" > =< / span > < span class = "n" > ExitCommand< / span >
< span class = "n" > priority< / span > < span class = "o" > =< / span > < span class = "mi" > 101< / span >
< span class = "c1" > # lockstring of newly created exits, for easy overloading.< / span >
< span class = "c1" > # Will be formatted with the {id} of the creating object.< / span >
< span class = "n" > lockstring< / span > < span class = "o" > =< / span > < span class = "p" > (< / span >
< span class = "s2" > " control:id(< / span > < span class = "si" > {id}< / span > < span class = "s2" > ) or perm(Admin); " < / span >
< span class = "s2" > " delete:id(< / span > < span class = "si" > {id}< / span > < span class = "s2" > ) or perm(Admin); " < / span >
< span class = "s2" > " edit:id(< / span > < span class = "si" > {id}< / span > < span class = "s2" > ) or perm(Admin)" < / span >
< span class = "p" > )< / span >
< span class = "c1" > # Helper classes and methods to implement the Exit. These need not< / span >
< span class = "c1" > # be overloaded unless one want to change the foundation for how< / span >
< span class = "c1" > # Exits work. See the end of the class for hook methods to overload.< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultExit.create_exit_cmdset" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultExit.create_exit_cmdset" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > create_exit_cmdset< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > exidbobj< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Helper function for creating an exit command set + command.< / span >
< span class = "sd" > The command of this cmdset has the same name as the Exit< / span >
< span class = "sd" > object and allows the exit to react when the account enter the< / span >
< span class = "sd" > exit' s name, triggering the movement between rooms.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > exidbobj (Object): The DefaultExit object to base the command on.< / span >
< span class = "sd" > " " " < / span >
< span class = "c1" > # create an exit command. We give the properties here,< / span >
< span class = "c1" > # to always trigger metaclass preparations< / span >
< span class = "n" > cmd< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > exit_command< / span > < span class = "p" > (< / span >
< span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "n" > exidbobj< / span > < span class = "o" > .< / span > < span class = "n" > db_key< / span > < span class = "o" > .< / span > < span class = "n" > strip< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > lower< / span > < span class = "p" > (),< / span >
< span class = "n" > aliases< / span > < span class = "o" > =< / span > < span class = "n" > exidbobj< / span > < span class = "o" > .< / span > < span class = "n" > aliases< / span > < span class = "o" > .< / span > < span class = "n" > all< / span > < span class = "p" > (),< / span >
< span class = "n" > locks< / span > < span class = "o" > =< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > exidbobj< / span > < span class = "o" > .< / span > < span class = "n" > locks< / span > < span class = "p" > ),< / span >
< span class = "n" > auto_help< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span >
< span class = "n" > destination< / span > < span class = "o" > =< / span > < span class = "n" > exidbobj< / span > < span class = "o" > .< / span > < span class = "n" > db_destination< / span > < span class = "p" > ,< / span >
< span class = "n" > arg_regex< / span > < span class = "o" > =< / span > < span class = "sa" > r< / span > < span class = "s2" > " ^$" < / span > < span class = "p" > ,< / span >
< span class = "n" > is_exit< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ,< / span >
< span class = "n" > obj< / span > < span class = "o" > =< / span > < span class = "n" > exidbobj< / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span >
< span class = "c1" > # create a cmdset< / span >
< span class = "n" > exit_cmdset< / span > < span class = "o" > =< / span > < span class = "n" > cmdset< / span > < span class = "o" > .< / span > < span class = "n" > CmdSet< / span > < span class = "p" > (< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "n" > exit_cmdset< / span > < span class = "o" > .< / span > < span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "s2" > " ExitCmdSet" < / span >
< span class = "n" > exit_cmdset< / span > < span class = "o" > .< / span > < span class = "n" > priority< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > priority< / span >
< span class = "n" > exit_cmdset< / span > < span class = "o" > .< / span > < span class = "n" > duplicates< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span >
< span class = "c1" > # add command to cmdset< / span >
< span class = "n" > exit_cmdset< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span > < span class = "n" > cmd< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > exit_cmdset< / span > < / div >
< span class = "c1" > # Command hooks< / span >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultExit.create" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultExit.create" > [docs]< / a > < span class = "nd" > @classmethod< / span >
2020-07-31 18:18:01 +02:00
< span class = "k" > def< / span > < span class = "nf" > create< / span > < span class = "p" > (< / span > < span class = "bp" > cls< / span > < span class = "p" > ,< / span > < span class = "n" > key< / span > < span class = "p" > ,< / span > < span class = "n" > source< / span > < span class = "p" > ,< / span > < span class = "n" > dest< / span > < span class = "p" > ,< / span > < span class = "n" > account< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Creates a basic Exit with default parameters, unless otherwise< / span >
< span class = "sd" > specified or extended.< / span >
< span class = "sd" > Provides a friendlier interface to the utils.create_object() function.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > key (str): Name of the new Exit, as it should appear from the< / span >
< span class = "sd" > source room.< / span >
< span class = "sd" > account (obj): Account to associate this Exit with.< / span >
< span class = "sd" > source (Room): The room to create this exit in.< / span >
< span class = "sd" > dest (Room): The room to which this exit should go.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > description (str): Brief description for this object.< / span >
< span class = "sd" > ip (str): IP address of creator (for object auditing).< / span >
< span class = "sd" > Returns:< / span >
< span class = "sd" > exit (Object): A newly created Room of the given typeclass.< / span >
< span class = "sd" > errors (list): A list of errors in string form, if any.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > errors< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "n" > obj< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "c1" > # Get IP address of creator, if available< / span >
< span class = "n" > ip< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " ip" < / span > < span class = "p" > ,< / span > < span class = "s2" > " " < / span > < span class = "p" > )< / span >
< span class = "c1" > # If no typeclass supplied, use this class< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " typeclass" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " typeclass" < / span > < span class = "p" > ,< / span > < span class = "bp" > cls< / span > < span class = "p" > )< / span >
< span class = "c1" > # Set the supplied key as the name of the intended object< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " key" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > key< / span >
< span class = "c1" > # Get who to send errors to< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " report_to" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " report_to" < / span > < span class = "p" > ,< / span > < span class = "n" > account< / span > < span class = "p" > )< / span >
< span class = "c1" > # Set to/from rooms< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " location" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > source< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " destination" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > dest< / span >
< span class = "n" > description< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s2" > " description" < / span > < span class = "p" > ,< / span > < span class = "s2" > " " < / span > < span class = "p" > )< / span >
2020-07-31 18:18:01 +02:00
< span class = "n" > locks< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s2" > " locks" < / span > < span class = "p" > ,< / span > < span class = "s2" > " " < / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "c1" > # Create the Exit< / span >
< span class = "n" > obj< / span > < span class = "o" > =< / span > < span class = "n" > create< / span > < span class = "o" > .< / span > < span class = "n" > create_object< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "c1" > # Set appropriate locks< / span >
2020-07-31 18:18:01 +02:00
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > locks< / span > < span class = "ow" > and< / span > < span class = "n" > account< / span > < span class = "p" > :< / span >
< span class = "n" > locks< / span > < span class = "o" > =< / span > < span class = "bp" > cls< / span > < span class = "o" > .< / span > < span class = "n" > lockstring< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "p" > {< / span > < span class = "s2" > " id" < / span > < span class = "p" > :< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > id< / span > < span class = "p" > })< / span >
< span class = "k" > elif< / span > < span class = "ow" > not< / span > < span class = "n" > locks< / span > < span class = "ow" > and< / span > < span class = "ow" > not< / span > < span class = "n" > account< / span > < span class = "p" > :< / span >
< span class = "n" > locks< / span > < span class = "o" > =< / span > < span class = "bp" > cls< / span > < span class = "o" > .< / span > < span class = "n" > lockstring< / span > < span class = "o" > .< / span > < span class = "n" > format< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "p" > {< / span > < span class = "s2" > " id" < / span > < span class = "p" > :< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > id< / span > < span class = "p" > })< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > locks< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span > < span class = "n" > locks< / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "c1" > # Record creator id and creation IP< / span >
< span class = "k" > if< / span > < span class = "n" > ip< / span > < span class = "p" > :< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > creator_ip< / span > < span class = "o" > =< / span > < span class = "n" > ip< / span >
< span class = "k" > if< / span > < span class = "n" > account< / span > < span class = "p" > :< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > creator_id< / span > < span class = "o" > =< / span > < span class = "n" > account< / span > < span class = "o" > .< / span > < span class = "n" > id< / span >
< span class = "c1" > # If no description is set, set a default description< / span >
< span class = "k" > if< / span > < span class = "n" > description< / span > < span class = "ow" > or< / span > < span class = "ow" > not< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > desc< / span > < span class = "p" > :< / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > desc< / span > < span class = "o" > =< / span > < span class = "n" > description< / span > < span class = "k" > if< / span > < span class = "n" > description< / span > < span class = "k" > else< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " This is an exit." < / span > < span class = "p" > )< / span >
2020-06-13 00:36:45 +02:00
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "k" > as< / span > < span class = "n" > e< / span > < span class = "p" > :< / span >
< span class = "n" > errors< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "s2" > " An error occurred while creating this ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' object." < / span > < span class = "o" > %< / span > < span class = "n" > key< / span > < span class = "p" > )< / span >
< span class = "n" > logger< / span > < span class = "o" > .< / span > < span class = "n" > log_err< / span > < span class = "p" > (< / span > < span class = "n" > e< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "n" > errors< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultExit.basetype_setup" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultExit.basetype_setup" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > basetype_setup< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Setup exit-security< / span >
< span class = "sd" > You should normally not need to overload this - if you do make< / span >
< span class = "sd" > sure you include all the functionality in this method.< / span >
< span class = "sd" > " " " < / span >
< span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > basetype_setup< / span > < span class = "p" > ()< / span >
< span class = "c1" > # setting default locks (overload these in at_object_creation()< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > locks< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span >
< span class = "s2" > " ;" < / span > < span class = "o" > .< / span > < span class = "n" > join< / span > < span class = "p" > (< / span >
< span class = "p" > [< / span >
< span class = "s2" > " puppet:false()" < / span > < span class = "p" > ,< / span > < span class = "c1" > # would be weird to puppet an exit ...< / span >
< span class = "s2" > " traverse:all()" < / span > < span class = "p" > ,< / span > < span class = "c1" > # who can pass through exit by default< / span >
< span class = "s2" > " get:false()" < / span > < span class = "p" > ,< / span > < span class = "c1" > # noone can pick up the exit< / span >
< span class = "p" > ]< / span >
< span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "c1" > # an exit should have a destination (this is replaced at creation time)< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > destination< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > location< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultExit.at_cmdset_get" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultExit.at_cmdset_get" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_cmdset_get< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Called just before cmdsets on this object are requested by the< / span >
< span class = "sd" > command handler. If changes need to be done on the fly to the< / span >
< span class = "sd" > cmdset before passing them on to the cmdhandler, this is the< / span >
< span class = "sd" > place to do it. This is called also if the object currently< / span >
< span class = "sd" > has no cmdsets.< / span >
2020-10-13 00:23:58 +02:00
< span class = "sd" > Keyword Args:< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > force_init (bool): If `True`, force a re-build of the cmdset< / span >
< span class = "sd" > (for example to update aliases).< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "s2" > " force_init" < / span > < span class = "ow" > in< / span > < span class = "n" > kwargs< / span > < span class = "ow" > or< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > cmdset< / span > < span class = "o" > .< / span > < span class = "n" > has_cmdset< / span > < span class = "p" > (< / span > < span class = "s2" > " ExitCmdSet" < / span > < span class = "p" > ,< / span > < span class = "n" > must_be_default< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ):< / span >
< span class = "c1" > # we are resetting, or no exit-cmdset was set. Create one dynamically.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > cmdset< / span > < span class = "o" > .< / span > < span class = "n" > add_default< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > create_exit_cmdset< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ),< / span > < span class = "n" > permanent< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultExit.at_init" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultExit.at_init" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_init< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This is called when this objects is re-loaded from cache. When< / span >
< span class = "sd" > that happens, we make sure to remove any old ExitCmdSet cmdset< / span >
< span class = "sd" > (this most commonly occurs when renaming an existing exit)< / span >
< span class = "sd" > " " " < / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > cmdset< / span > < span class = "o" > .< / span > < span class = "n" > remove_default< / span > < span class = "p" > ()< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultExit.at_traverse" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultExit.at_traverse" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_traverse< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > traversing_object< / span > < span class = "p" > ,< / span > < span class = "n" > target_location< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > This implements the actual traversal. The traverse lock has< / span >
< span class = "sd" > already been checked (in the Exit command) at this point.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > traversing_object (Object): Object traversing us.< / span >
< span class = "sd" > target_location (Object): Where target is going.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > source_location< / span > < span class = "o" > =< / span > < span class = "n" > traversing_object< / span > < span class = "o" > .< / span > < span class = "n" > location< / span >
< span class = "k" > if< / span > < span class = "n" > traversing_object< / span > < span class = "o" > .< / span > < span class = "n" > move_to< / span > < span class = "p" > (< / span > < span class = "n" > target_location< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > at_after_traverse< / span > < span class = "p" > (< / span > < span class = "n" > traversing_object< / span > < span class = "p" > ,< / span > < span class = "n" > source_location< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > err_traverse< / span > < span class = "p" > :< / span >
< span class = "c1" > # if exit has a better error message, let' s use it.< / span >
< span class = "n" > traversing_object< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "o" > .< / span > < span class = "n" > err_traverse< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "c1" > # No shorthand error message. Call hook.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > at_failed_traverse< / span > < span class = "p" > (< / span > < span class = "n" > traversing_object< / span > < span class = "p" > )< / span > < / div >
2020-07-14 00:21:00 +02:00
< div class = "viewcode-block" id = "DefaultExit.at_failed_traverse" > < a class = "viewcode-back" href = "../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultExit.at_failed_traverse" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > at_failed_traverse< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > traversing_object< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2020-06-13 00:36:45 +02:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Overloads the default hook to implement a simple default error message.< / span >
< span class = "sd" > Args:< / span >
< span class = "sd" > traversing_object (Object): The object that failed traversing us.< / span >
< span class = "sd" > **kwargs (dict): Arbitrary, optional arguments for users< / span >
< span class = "sd" > overriding the call (unused by default).< / span >
< span class = "sd" > Notes:< / span >
< span class = "sd" > Using the default exits, this hook will not be called if an< / span >
< span class = "sd" > Attribute `err_traverse` is defined - this will in that case be< / span >
< span class = "sd" > read for an error string instead.< / span >
< span class = "sd" > " " " < / span >
2021-06-23 18:58:26 +02:00
< span class = "n" > traversing_object< / span > < span class = "o" > .< / span > < span class = "n" > msg< / span > < span class = "p" > (< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " You cannot go there." < / span > < span class = "p" > ))< / span > < / div > < / div >
2020-06-13 00:36:45 +02:00
< / pre > < / div >
2020-10-15 01:31:30 +02:00
< div class = "clearer" > < / div >
2020-06-13 00:36:45 +02:00
< / div >
< / div >
< / div >
2020-06-15 21:52:33 +02:00
< div class = "sphinxsidebar" role = "navigation" aria-label = "main navigation" >
< div class = "sphinxsidebarwrapper" >
< p class = "logo" > < a href = "../../../index.html" >
< img class = "logo" src = "../../../_static/evennia_logo.png" alt = "Logo" / >
< / a > < / p >
< div id = "searchbox" style = "display: none" role = "search" >
< h3 id = "searchlabel" > Quick search< / h3 >
< div class = "searchformwrapper" >
< form class = "search" action = "../../../search.html" method = "get" >
< input type = "text" name = "q" aria-labelledby = "searchlabel" / >
< input type = "submit" value = "Go" / >
< / form >
< / div >
< / div >
2021-03-06 01:37:43 +01:00
< script > $ ( '#searchbox' ) . show ( 0 ) ; < / script > < h3 > Links< / h3 >
< ul >
< li > < a href = "https://www.evennia.com" > Home page< / a > < / li >
< li > < a href = "https://github.com/evennia/evennia" > Evennia Github< / a > < / li >
< li > < a href = "http://games.evennia.com" > Game Index< / a > < / li >
2021-08-06 00:47:51 +02:00
< li >
< a href = "https://discord.gg/AJJpcRUhtF" > Discord< / a > -
< a href = "https://github.com/evennia/evennia/discussions" > Discussions< / a > -
< a href = "https://evennia.blogspot.com/" > Dev blog< / a >
2021-03-06 01:37:43 +01:00
< / li >
< / ul >
2020-06-15 21:52:33 +02:00
< h3 > Versions< / h3 >
< ul >
< li > < a href = "objects.html" > 1.0-dev (develop branch)< / a > < / li >
2020-11-14 13:44:49 +01:00
< li > < a href = "../../../../0.9.5/index.html" > 0.9.5 (v0.9.5 branch)< / a > < / li >
2020-06-15 21:52:33 +02:00
< / ul >
2020-06-13 00:36:45 +02:00
2020-06-15 21:52:33 +02:00
< / div >
< / div >
< div class = "clearer" > < / div >
< / div >
< div class = "related" role = "navigation" aria-label = "related navigation" >
< h3 > Navigation< / h3 >
< ul >
< li class = "right" style = "margin-right: 10px" >
< a href = "../../../genindex.html" title = "General Index"
>index< / a > < / li >
< li class = "right" >
< a href = "../../../py-modindex.html" title = "Python Module Index"
>modules< / a > |< / li >
2020-07-14 00:21:00 +02:00
< li class = "nav-item nav-item-0" > < a href = "../../../index.html" > Evennia 1.0-dev< / a > » < / li >
2020-06-15 21:52:33 +02:00
< li class = "nav-item nav-item-1" > < a href = "../../index.html" > Module code< / a > » < / li >
2020-10-15 01:31:30 +02:00
< li class = "nav-item nav-item-2" > < a href = "../../evennia.html" > evennia< / a > » < / li >
< li class = "nav-item nav-item-this" > < a href = "" > evennia.objects.objects< / a > < / li >
2020-06-15 21:52:33 +02:00
< / ul >
2021-06-23 18:58:26 +02:00
< div class = "develop" > develop branch< / div >
2020-06-15 21:52:33 +02:00
< / div >
< div class = "footer" role = "contentinfo" >
© Copyright 2020, The Evennia developer community.
2020-10-15 01:31:30 +02:00
Created using < a href = "https://www.sphinx-doc.org/" > Sphinx< / a > 3.2.1.
2020-06-15 21:52:33 +02:00
< / div >
< / body >
2020-06-13 00:36:45 +02:00
< / html >