From 3ebc9316f98685a26163f60b67267675592392c5 Mon Sep 17 00:00:00 2001 From: Cal Date: Sat, 15 Feb 2025 15:06:33 -0700 Subject: [PATCH] fix attribute view in CmdSetAttribute --- evennia/commands/default/building.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/evennia/commands/default/building.py b/evennia/commands/default/building.py index 710e6f87cb..8d52430e1d 100644 --- a/evennia/commands/default/building.py +++ b/evennia/commands/default/building.py @@ -1854,12 +1854,21 @@ class CmdSetAttribute(ObjManipCommand): nested = False for key, nested_keys in self.split_nested_attr(attr): nested = True - if obj.attributes.has(key): - val = obj.attributes.get(key) - val = self.do_nested_lookup(val, *nested_keys) - if val is not self.not_found: - return f"\nAttribute {obj.name}/|w{attr}|n [category:{category}] = {val}" - error = f"\nAttribute {obj.name}/|w{attr} [category:{category}] does not exist." + if obj.attributes.has(key, category): + if nested_keys: + val = obj.attributes.get(key, category=category) + deep = self.do_nested_lookup(val, *nested_keys[:-1]) + if deep is not self.not_found: + try: + val = deep[nested_keys[-1]] + except (IndexError, KeyError, TypeError): + continue + return f"\nAttribute {obj.name}/|w{attr}|n [category:{category}] = {val}" + else: + val = obj.attributes.get(key, category=category) + if val: + return f"\nAttribute {obj.name}/|w{attr}|n [category:{category}] = {val}" + error = f"\nAttribute {obj.name}/|w{attr}|n [category:{category}] does not exist." if nested: error += " (Nested lookups attempted)" return error