Думаю стоит адаптировать ECS паттерн, а конкретнее Entity + Component. Думаю, идеально подойдёт.
P.S. Изначально он разработан для геймдева, где есть лучник, лучник-маг, лучник-маг-с-копьём и т.д. При этом без ограничений на характеристики и их связи.