From 191be0365ccb464860b3c9bbb392fdebfc9915ea Mon Sep 17 00:00:00 2001 From: ChrisLR Date: Fri, 23 Feb 2024 13:51:16 -0500 Subject: [PATCH] Fix Signals registration --- .../base_systems/components/signals.py | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/evennia/contrib/base_systems/components/signals.py b/evennia/contrib/base_systems/components/signals.py index eff5137c64..b5fce84e36 100644 --- a/evennia/contrib/base_systems/components/signals.py +++ b/evennia/contrib/base_systems/components/signals.py @@ -179,8 +179,15 @@ class SignalsHandler(object): Args: obj (object): The instance of an object to connect to this handler. """ - type_host = type(obj) - for att_name, att_obj in type_host.__dict__.items(): + obj_type = type(obj) + for att_name in dir(obj_type): + if att_name.startswith("__"): + continue + + att_obj = getattr(obj_type, att_name, None) + if att_obj is None: + continue + listener_signal_name = getattr(att_obj, "_listener_signal_name", None) if listener_signal_name: callback = getattr(obj, att_name) @@ -198,8 +205,14 @@ class SignalsHandler(object): Args: obj (object): The instance of an object to disconnect from this handler. """ - type_host = type(obj) - for att_name, att_obj in type_host.__dict__.items(): + for att_name in dir(obj): + if att_name.startswith("__"): + continue + + att_obj = getattr(obj, att_name, None) + if att_obj is None: + continue + listener_signal_name = getattr(att_obj, "_listener_signal_name", None) if listener_signal_name: callback = getattr(obj, att_name)