From 8ea578c75f0f7b8a6b390e74543d5188fd627ea2 Mon Sep 17 00:00:00 2001 From: Griatch Date: Tue, 22 Feb 2022 23:01:53 +0100 Subject: [PATCH] Add is_ooc lockfunc, because why not --- CHANGELOG.md | 1 + evennia/locks/lockfuncs.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec512fb621..75b36c65c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -158,6 +158,7 @@ Up requirements to Django 4.0+, Twisted 22+, Python 3.9 or 3.10 - Have `type/force` default to `update`-mode rather than `reset`mode and add more verbose warning when using reset mode. - Attribute storage support defaultdics (Hendher) +- Add `is_ooc` lockfunc (meant for limiting commands at the OOC level) ## Evennia 0.9.5 diff --git a/evennia/locks/lockfuncs.py b/evennia/locks/lockfuncs.py index 34e06aa714..5765897a24 100644 --- a/evennia/locks/lockfuncs.py +++ b/evennia/locks/lockfuncs.py @@ -473,6 +473,24 @@ def tag(accessing_obj, accessed_obj, *args, **kwargs): category = args[1] if len(args) > 1 else None return bool(accessing_obj.tags.get(tagkey, category=category)) +def is_ooc(accessing_obj, accessed_obj, *args, **kwargs): + """ + Usage: + is_ooc() + + This is normally used to lock a Command, so it can be used + only when out of character. + """ + obj = accessed_obj.obj if hasattr(accessed_obj, "obj") else accessed_obj + session = obj.session if hasattr(obj, "session") else obj + try: + return not obj.get_puppet(session) + except AttributeError: + try: + return not obj.account.get_puppet(session) + except AttributeError: + pass + return False def objtag(accessing_obj, accessed_obj, *args, **kwargs): """