diff --git a/CHANGELOG.md b/CHANGELOG.md index c20eb78902..6a2cedc899 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -93,8 +93,8 @@ Up requirements to Django 3.2+, Twisted 21+ - Split `return_appearance` hook with helper methods and have it use a template string in order to make it easier to override. - Add validation question to default account creation. - - +- Add `LOCALECHO` client option to add server-side echo for clients that does + not support this (useful for getting a complete log). ### Evennia 0.9.5 (2019-2020) diff --git a/evennia/commands/default/account.py b/evennia/commands/default/account.py index 9964326c37..b8c37df266 100644 --- a/evennia/commands/default/account.py +++ b/evennia/commands/default/account.py @@ -696,6 +696,7 @@ class CmdOption(COMMAND_DEFAULT_CLASS): "XTERM256": validate_bool, "INPUTDEBUG": validate_bool, "FORCEDENDLINE": validate_bool, + "LOCALECHO": validate_bool, } name = self.lhs.upper() diff --git a/evennia/server/inputfuncs.py b/evennia/server/inputfuncs.py index cb0af336d6..700881e99a 100644 --- a/evennia/server/inputfuncs.py +++ b/evennia/server/inputfuncs.py @@ -156,6 +156,7 @@ _CLIENT_OPTIONS = ( "RAW", "NOCOLOR", "NOGOAHEAD", + "LOCALECHO", ) @@ -180,6 +181,7 @@ def client_options(session, *args, **kwargs): inputdebug (bool): Debug input functions nocolor (bool): Strip color raw (bool): Turn off parsing + localecho (bool): Turn on server-side echo (for clients not supporting it) """ old_flags = session.protocol_flags @@ -239,6 +241,8 @@ def client_options(session, *args, **kwargs): flags["RAW"] = validate_bool(value) elif key == "nogoahead": flags["NOGOAHEAD"] = validate_bool(value) + elif key == "localecho": + flags["LOCALECHO"] = validate_bool(value) elif key in ( "Char 1", "Char.Skills 1", diff --git a/evennia/server/portal/portalsessionhandler.py b/evennia/server/portal/portalsessionhandler.py index b0c5222ca9..d0921c5109 100644 --- a/evennia/server/portal/portalsessionhandler.py +++ b/evennia/server/portal/portalsessionhandler.py @@ -441,6 +441,10 @@ class PortalSessionHandler(SessionHandler): session.cmd_last = now self.portal.amp_protocol.send_MsgPortal2Server(session, **kwargs) + # eventual local echo (text input only) + if 'text' in kwargs and session.protocol_flags.get('LOCALECHO', False): + self.data_out(session, text=kwargs['text']) + def data_out(self, session, **kwargs): """ Called by server for having the portal relay messages and data diff --git a/evennia/server/session.py b/evennia/server/session.py index bc6dbe1990..25586a4fa5 100644 --- a/evennia/server/session.py +++ b/evennia/server/session.py @@ -82,6 +82,7 @@ class Session: "INPUTDEBUG": False, "RAW": False, "NOCOLOR": False, + "LOCALECHO": False, } self.server_data = {}