I am setting up Character Selection in my Project.
I understand how to setup the characters and make them do what I want them to do.
My question is about the overall design structure, and which blueprints should store which information.

Here are my considerations:

1. I want to have 4 characters types:
Fighter, Cleric, Mage, Ranger
2. Each of the 4 types will have many character specific things that others will not share:
Attacks Animations, Armor Selection, Weapon Selection, etc
3. There will be 2 very different modes that the player will be able to toggle.
(Because this Game is for mobile, I want to use the Full Screen for Inventory Management, and not just a HUD in the corner somewhere)
Third person 3d gameplay, and Point and Click 2d Inventory Management
4. In Inventory mode, I would like to show greyed out versions of all of the Future Abilities
that the player character type can have but haven't yet acquired or unlocked:
Spells, Special Attacks, Weapons, Armor
5. The game will have a few different levels that will be loaded (not streamed).
6. I would like for the Player to be able to temporarily possess a different characters

I want to avoid One Giant Class that has all the functions, weapons, armor etc for all the characters and has decisions like
if the attack button was pressed, and the character was the Fighter then do this, if it was the Mage do that,
If he switched to inventory mode, do all of this instead, etc

I prefer to encapsulate the design into smaller classes with less responsibility

I was thinking I will need at least 5 different blueprints, but where do I store all of the information about
what character was selected, what are the values of the character's variables
I want to be able to switch Levels, Controllers, and the BluePrint that is being possessed

Does anyone know
What are the best practices to set all of this up in a manageable way?