This essay will present a recipe for the process of creating and telling a lie, and tracking down the liar. As with the previous essay, "How to Cut a Deal", I shall present an example based on Shattertown.
Our starting point is a malicious decision to tell a lie about a victim. This is really a form of aggression against the victim. Thus, we have a mental state verb called LieAboutProbity. This verb has three options for the liar: LieAboutCheating, LieAboutStealing, and LieAboutSecret. The first of these creates a lie that the victim cheated somebody else on a deal; the second that the victim stole something, and the third that the victim blabbed a secret. This presumes the existence of three verbs RenegeDeal, StealFrom, and BlabSecret.
When Liar reacts to this verb, there is but one option: ProceedWithLie. We shall assume that the chosen lie is StealFrom. This option takes as its subject and dirobject the Liar; its secondary objects are any terms that will be included in the lie. At the end of the script are the following lines:
Desirability <= ±Affection[DirObject, CandidateCharacter]
Acceptability <= NOT (CandidateCharacter IsSamePersonAs DirObject)
CreateLie(DirObject, StealFrom, PickBestCharacter(Acceptability, Desirability))
This call will create a lie in which Victim is the subject, StealFrom is the verb, and the dirobject is the result of PickBestCharacter. It will take all the planned secondary objects (NewCharacterObject1, etc) and copy them into the lie, store it into the history book, record it as a lie, and set the WhoKnows flag for Liar.
Liar is the only person who knows about the fallacious event; it goes into his headlines bag. He will then begin to tell people about the lie; the lie will enter the grapevine. Whenever a person is told about an event, he reacts to the event itself and to the telling of the event. Now, the verb "Tell" is intrinsic to the system; it is automatic, and the storybuilder has no direct control over this activity. However, the options for the verb Tell are assigned by the storybuilder. I would put in the following options: ThanksForTelling, YouTalkTooMuch, QuestionTruth, ChallengeTruth. The inclination equations look like this:
Inclination[ThanksForTelling] <= PersonalImport(ThisEvent, Actor)
Inclination[YouTalkTooMuch] <= 100 - PersonalImport(ThisEvent, Actor)
Inclination[QuestionTruth] <= 90 * LogicalToNumber (Implausibility > 30)
Inclination[ChallengeTruth] <= 100 * LogicalToNumber (Implausibility > 50)
This introduces a new variable called Implausibility. This variable is accessible in the Variables menu of the DecisionMaker screen and calculates a number representing the amount by which a character's relationship with the subject of the told sentence will change in response to learning of the told sentence. For example, if you tell me that Joe did a trustworthy act, and I already trust Joe greatly, then my trust in him will not change much, and the Implausibility of that Tell-event is low. However, if you tell me that Ned did a lovable act, and I have no affection for Ned, then my affection for Ned will be changed substantially by the news, and the Implausibility of your statement will be high. This Implausibility value is only meaningful when you use it in response to the verb Tell; any other use will yield unreliable results.
ThanksForTelling and YouTalkTooMuch have no options. The verb QuestionTruth has several options for the role of dirobject: AssertTruth, ExpressUncertainty, and ConfirmTruth. We assume that the Implausibility value derived from the Tell-event was stored into NumberObject1:
Inclination[AssertTruth] <= 0
Inclination[ExpressUncertainty] <= 0
Inclination[ResearchTruth] <= 0
RangeSelect(NumberObject1, 0, 0, 100)
The verb ChallengeTruth will have the same options for the dirobject-role, and in addition, it will have a new verb option for the subject-role: ReportLie.
The verb ResearchTruth causes the subject to approach the victim of the lie and ask if the event referred to in EventObject1 is true. (Note that this requires some finagling with the dirobject of the verb.) The victim can of course respond in a manner determined by the storybuilder, but there is one special capability: the victim can also demand to know the source of the report. I call this verb WhoToldYou. The subject of this sentence demands that the dirobject reveal the person who told him about the event referred to in EventObject1. How did it get into EventObject1? Remember, when you set up ResearchTruth, you want to specify the event whose truth you are researching, and the best place to specify it is in EventObject1.
This problem brings us, at last, to the TellTree. The dirobject of WhoToldYou must first determine the answer to the question, then decide whether to reveal it. The dirobject determines who told him by consulting the TellTree. This brings us to EventObject2. When the engine records a Tell-event, it stores the historybook pagenumber of the event into EventObject1, and it also stores the TellTree pagenumber into EventObject2. If the storybuilder had the wisdom to copy over EventObject1 and EventObject2 into the NewEventObject1 and NewEventObject2, then when we get to WhoToldYou, the dirobject need merely use EventObject2 to look up the telltree. Specifically, the person who told him is TellSubject[EventObject2]. The person who was told (who also happens to be the dirobject of WhoToldYou) is TellDirObject[EventObject2]. The event that was told (which is the same as the event that is in EventObject1) will be in TellEventObject[EventObject2]. And &emdash; here's the trickiest part &emdash; the TellEvent by which dirobject learned of the news is stored in CausalTell[EventObject2]. You therefore want to set NewEventObject2 as follows:
NewEventObject2[ThisIsWhoToldMe] <= CausalTell[EventObject2]
This insures that, should the victim of the lie continue to trace the lie up the tellchain, he'll get the right answers every step of the way. Of course, you might want to put in options for the questioned characters to protect their sources with prevarications, misleading answers, and so forth &emdash; but at least you have the truth at your command.
And there you have it.