Emotional Reactions and Roles

 

Jenn has exposed another blunder in my design: emotional reactions in the original Pascal code are not well-segregated by role. In some cases, they have their own narrow role specifications. In others, the reaction code seems to be generic, applying to all comers. This is particularly significant with respect to those who learn about an event and might emotionally react to it without physically reacting to it. This implies that we need additional roles for every single verb: Bystander, Witness and Tattlee.

 

We will require two support functions, one of which is now implemented as a data element. This function is Immediacy, equal to (GameClock < (ThisTime + 2)). I shall convert it from a data element to a function. The second function is NotInvolved, equal to:

(!(ThisActor = ThisSubject) & 

!(ThisActor = ThisDirObject) & 

!(ThisActor = ThisIndObject))

 

So the three standard role definitions are:

 

Bystander: Activate if NotInvolved

Witness: Activate if (NotInvolved & Immediacy)

Tattlee: Activate if (NotInvolved & !Immediacy)

 

Note that we don't need to use all three roles in every verb; indeed, in many cases, we won't use any of them. However, in those cases where the Pascal EmotionalReaction code assigns an emotional reaction without any role specification, then it applies to all roles. In these cases, Jenn needs to add the role Bystander, and use the Pascal EmotionalReaction code for its emotional reactions. The Pascal Emotional Reaction code would also have to be applied to any other roles.