Посмотрел чарлисты и чуток глянул правила. Да уж, объёмистая штука!
Вообще сложно сказать, как именно здесь действовать. Основная сложность тут в том, что все элементы системы сильно связаны между собой, и изменения какого-то одного пункта часто влекут за собой изменения в других. Например, увеличил персонаж свой навык магии - и эффекты заклинаний у него также стали лучше, ну и какие-то новые возможности тоже вполне могут добавиться...
Плюс, хватает "божественных объектов" типа класса или расы: если у персонажа изменить расу/класс, то у него вообще всё поменяется нафиг. Более того - насколько я понимаю, класс зависит от расы. И персонажи могут приобретать какие-то новые фичи в зависимости от комбинации раса+класс... Короче гря, полный набор антипаттернов
Но уж твой вариант с "огромным map-ом" точно не прокатит - запутаешься с всевозможными хитросплетениями "божественных" параметров персонажа типа расы/класса/пола. Я бы советовал прежде всего выделить те классы, которые вообще никак не меняются: например, "слоты персонажа" вроде бы фиксированы (или же, у каких-то рас есть третья рука?). И в первую очередь - реализовать их.
Из-за того, что всё сильно связано - очень советую юзать property, иначе замучаешься. То есть либо юзай С#, либо (если хочется именно на плюсах) VC++ или Qt (второе лучше, так как кроссплатформ). Кроме этого, не советую юзать где-либо внутри классов поле "родитель" - это только ещё больше запутает код, поскольку вдобавок ко всему придётся помнить, чем является такое-то заклинание: врождённой фичей персонажа, или же свойством оружия...
Какие-то конкретные методы проектирования мне в голову не лезут. Хотя, той же "абстрактной фабрикой" здесь можно попробовать воспользоваться - поскольку изменение расы/класса/пола не ведут к добавлению каких-то абсолютно новых классов, а лишь к модификации свойств старых. Но сами фабрики получатся огромные - хз, стоит ли здесь овчинка выделки. Но это в любом случае куда лучше, чем сотни map-овских ключей, ещё и без пропертей
P.S. Кстати, я для своей ФРПГ (Аредита) чарлисты полностью автоматизировал, а заодно с ними и проведение битв тоже, но мне было куда легче - у меня есть "модульность" на уровне системы. Например, у моих персонажей нет классов вообще, а пол почти ни на что не влияет - то есть хоть какую-то иерархию классов (программных) построить можно... А вот как быть с ДнД, я толком не знаю - слишком её система уж громоздка.