Disentangling Emotional Reactions

 

We need to enable the anticipatory code to examine the role token strings and extract the emotional reactions without actually doing anything. I think that the way to do this is to establish a new set of standard equations that go at the beginning of every role definition, like so:

 

Activate if (# = #)

Junk = AdjustAffection(ByHowMuch)

Junk = AdjustDominance(ByHowMuch)

Junk = AdjustTrust(ByHowMuch)

NewEquation =

 

There are several hidden assumptions here. First, this presumes that the Adjust functions return a void value, and instead operate directly on Affection, Dominance, and Trust. Second, it assumes that ThisActor and ThisSubject are presumed as the personalities being affected; I have to check through the code to verify that this is the correct case. Third, it assumes that the engine will have a global variable called VirtualReaction that the Adjust functions will check before changing any state variables; this permits the accumulation of another global variable that will establish the anticipated reaction.

 

This is dangerous stuff. I looked up the references to AdjustXXX and found a goodly number of adjustments involving DirObject, and a few involving IndObject. Moreover, many that I saw are significant. For example, the whole point of slandering somebody is to make the recipient of the slander like the victim less. If I don't allow emotional reactions to the IndObject, how can slander ever work?

 

Two solutions: multiple substories permitting reactions to such events, and multiple arguements to AdjustXXX, like so:

 

Junk = AdjustAffection(SubjectByHowMuch, DirObjectByHowMuch, IndObjectByHowMuch)

 

It's only three terms, most of the time they'll be zero. I like this latter solution.

 

Tidying up: this means that ThisActor, ThisSubject, ThisDirObject, and ThisIndObject are globals that will be accessible to the AdjustXXX routines. Dave's engine just calls AdjustXXX, which sneaks in behind everybody's back and does its dirty work, and then returns a harmless void result. This is dirty business.

 

Global variables presumed by this system: ThisActor, ThisSubject, ThisDirObject, ThisIndObject, Affection, Dominance, Trust, VirtualReactionFlag, FlattersSubject, FlattersDirObject, FlattersIndObject.