diff --git a/evennia/contrib/base_systems/components/component.py b/evennia/contrib/base_systems/components/component.py index 900092ed13..edcf21de78 100644 --- a/evennia/contrib/base_systems/components/component.py +++ b/evennia/contrib/base_systems/components/component.py @@ -21,7 +21,15 @@ class BaseComponent(type): as a component in the Component Listing using its name. All of them require a unique name. """ - attrs['_fields'] = {} + attrs_name = attrs.get('name') + if attrs_name and not COMPONENT_LISTING.get(attrs_name): + new_fields = {} + attrs['_fields'] = new_fields + for parent in parents: + _parent_fields = getattr(parent, "_fields") + if _parent_fields: + new_fields.update(_parent_fields) + new_type = super().__new__(cls, name, parents, attrs) if new_type.__base__ == object: return new_type