diff --git a/evennia/commands/default/building.py b/evennia/commands/default/building.py index 0437260930..1dc61f1bdf 100644 --- a/evennia/commands/default/building.py +++ b/evennia/commands/default/building.py @@ -1695,9 +1695,9 @@ class CmdSetAttribute(ObjManipCommand): if nested_keys: del_key = nested_keys[-1] val = obj.attributes.get(key) - val = self.do_nested_lookup(val, *nested_keys[:-1]) - if val is not self.not_found: - del val[del_key] + deep = self.do_nested_lookup(val, *nested_keys[:-1]) + if deep is not self.not_found: + del deep[del_key] obj.attributes.add(key, val) return "\nDeleted attribute '%s' (= nested) from %s." % (attr, obj.name) else: diff --git a/evennia/commands/default/tests.py b/evennia/commands/default/tests.py index f54be20150..56e600e2b4 100644 --- a/evennia/commands/default/tests.py +++ b/evennia/commands/default/tests.py @@ -566,6 +566,10 @@ class TestBuilding(CommandTest): "Obj/test3=[{'one': 1}]", "Created attribute Obj/test3 = [{'one': 1}]") self.call(building.CmdSetAttribute(), "Obj/test3[0]['one']", "Attribute Obj/test3[0]['one'] = 1") self.call(building.CmdSetAttribute(), "Obj/test3[0]", "Attribute Obj/test3[0] = {'one': 1}") + self.call(building.CmdSetAttribute(), + "Obj/test3[0]['one'] =", "Deleted attribute 'test3[0]['one']' (= nested) from Obj.") + self.call(building.CmdSetAttribute(), "Obj/test3[0]", "Attribute Obj/test3[0] = {}") + self.call(building.CmdSetAttribute(), "Obj/test3", "Attribute Obj/test3 = [{}]") # Naughty keys self.call(building.CmdSetAttribute(),