I wonder if perhaps I should not take a more normative approach to the personality model and the functions built into the Erasmotron. After all, by defining all these factors in advance, we clarify matters enormously for the user. I fear that I am asking too much of the storybuilder giving her all that power to modify things by defining them as needed. Are people really smart enough that they can understand my enormously complicated model and even add to it? Would it not be better for me to define everything in advance?
Let's start with the personality model. Why not simply define a set of basic properties and then give the storybuilder a handful of customizable traits? What would a standard personality model look like? Here's an attempt:
struct RelationshipRecord {
short Affection[CHARACTERCOUNT];
short Dominance[CHARACTERCOUNT];
short Trust[CHARACTERCOUNT];
short Relationship[CHARACTERCOUNT];
short Debt[CHARACTERCOUNT];
short Loquacious[CHARACTERCOUNT];
*** Boolean BloodTie[CHARACTERCOUNT];
} Relationships[CHARACTERCOUNT];
struct TraitsRecord {
short Pride;
short LoveMe;
short Good;
short Submissive;
short Empathy;
short Gullible;
short Initiative;
short Volatility;
short Strength;
short Greed;
short Libido;
short Sexiness;
} Traits[CHARACTERCOUNT];
struct PersonalAdminRecord {
char Name[16];
Boolean GiftFlag[GIFTCOUNT];
long OccupiedUntil;
short SigOther;
short Location;
*** short Cattle;
short SpyingOn;
*** Boolean Rebel;
*** Boolean Loyalist;
Boolean OnStage;
Boolean Alive;
Boolean Male;
} PersonalAdmin[CHARACTERCOUNT];
struct BattleTraitsRecord {
*** short Brave;
*** short Smart;
*** short Leadership;
*** short Stubborn;
*** short Defensive;
*** short Agressive;
*** short FrontLine;
*** short Casualties;
*** short Exposure;
*** Boolean InCampaign;
} BattleTraits[CHARACTERCOUNT];
In this listing, traits specific to LMD that would not be appropriate to a general situation are marked with ***. Note how few of these there are; the basic character model is quite general. The only question then is, how do we handle extensions that the storybuilder might require? Do we require the storybuilder to apply to Erasmatazz for custom programming? This would at least insure that the storybuilder would not need a programmer &emdash; a major advantage. And we can always give a few special traits that the storybuilder can use for whatever customizability the storybuilder wants. We can always rename Cattle to Wealth. This really could work...