It's time to get specific about implementing lies. In this essay, I will attempt to provide Laura with a recipe for handling lies.
First comes the inception of the lie. We begin with a verb called LieAboutProbity. This is a malicious act that Subject takes for purposes of inflicting injury upon DirObject. I will not contemplate the causative factors behind lying; my starting point is the decision to tell a lie. This verb is a mental state.
This verb then leads to a set of verbs that create specific lies. Each lie must be characterized separately. These lies are related by the fact that they call into question the integrity of their victim. Thus, we will have some specific lies: LieAboutCheating, LieAboutStealing, and LieAboutSecrets. The first of these creates a lie that the DirObject himself told a lie. The second lie is that DirObject secretly cheated somebody in a deal. The third is that DirObject stole an item of value. The fourth is that DirObject blabbed a secret.
A requirement: each lie must refer to a verb already existing in the verb set. You can't tell a lie about an otherwise inconceivable act. In other words, if you want to be able to tell a lie that DirObject ate the canned peaches, then there must be a verb in the verbset called EatCannedPeaches.
We presume we have verbs called RenegeDeal, StealItem, and BlabSecret. When Subject reacts to his lying-event, we add a procedure call to the end of the script:
Desirability <= ±Affection[DirObject, CandidateCharacter]
Acceptability <= NOT (CandidateCharacter IsSamePersonAs DirObject)
CreateLie(DirObject, StealItem, PickBestCharacter(Acceptability, Desirability))
Problem: what about the ThingObject of this event? It must be specified if anybody is to use TinkertoyText to refer to the event. Yet in some lies, ThingObject is unspecified. We can't afford a monster call that specifies all those terms; it's too long for the stack or the screen. Perhaps we could store the lie into the secondary objects, but what would be the standard format? Here we go: CreateLie specifies the Subject, Verb, and DirObject of the lie, and all secondary objects are copied directly into the lie. This works because we know that a verb such as LieAboutCheating will require no special objects of its own. It does require the storybuilder to jump through one small hoop: creating a DoNothing consequence, setting its inclination to a negative value, and loading its secondary objects with any values desired for the lie.