TL;DR: Scroll to bottom.
Okay, so I've been plotting the mindmap out and brainstorming about the cogs and springs of my RPG project. I realized that I will have to use some sort of '"tags", variables, which define behavior in context or an attribute. These tags would have to be dynamic, any character/npc/monster/enemy object would have a variable amount of different tags, such as allegiance (PlayerFaction, neutral factions, enemy factions), race (and its related tags such as BIPEDAL/QUADRIPEDAL)... basically, all of the tags would be BOOLEAN and the RPG engine would process them as needed within context.
As there is going to be a lot of variables (several races, four genders (HERMAPHRODYTE and UNISEX in addition to MALE and FEMALE), age (INFANT, CHILD, ADOLESCENT, ADULT and AGED), race (HUMAN, DWARF, ELF, ORC etc.) and so on), I figure I would have to break everything down into categories and tags, then as an entity is created, it is assigned tags.
Categories would be super-classes such as BODY, PERSONALITY, ABILITIES and TALENTS, further expanded into sub-categories (HEAD would have eye, ears, nose, mouth, jaw and such tags... a pig would have SNOUT instead of NOSE). ABILITIES would cover abilities one has, such as a dragon would have an FIRE_BREATH... an INFANT dragon would have NO_FLY tag, as it can't fly yet, but ADOLESCENT dragon would have FLY ability, so don't go poking it, lest it takes off and breathes fire from above. FLY can be either magical or physical, thus requiring WINGS of some sort, which can be damaged or crippled to limit the ability to fly.
Complex, eh? However if I manage to implement such a tag system, I could create a detailed RPG environment (combat, diverse entities and abilities) and most importantly expandable engine without having to dig through heaps of code. Just make ON Crippled WINGS > NO_FLY when it checks for damages and you've grounded the dragon! When its wings are healed, however, the FLY tag is restored.
Expandability also offers high replayability value; create a procedurally generated environment and characters (much akin to Nethack) and embark onto the epic journey that may end just round the corner or in deepest pits of the hell!
And best of all, tags offer customizability. Remove ones you don't want and your game will play without them, so basically you could have a realistic historical setting with only humans and physical weapons, no magic or fantasy creatures. Awesome, isn't it?
Now, if you have managed to read this far (an epic feat, I must admit), the question is... how should I go about implementing the tags system? Through attributes? Can they be created and set in run-time? Can they be checked for in conditions? Sould I use the alias function for tags?
This is why I am posting here. I am looking for ideas on implementation of the system described above. They all are boolean, they must be usable in expressions and conditions, they must be clear (hence capitalization) and they must be categorizable. They also can be static (given at creation of object, can't be changed) and dynamic (can change during course of adventure or a single encounter).
Oh joy, this makes me so excited!