An important component of human interaction is dealmaking. We make deals all the time, although in most cases they aren’t framed as explicit deals: “Honey, would you take out the garbage?” “Sure, sweetie, just as soon as I finish building the suicide bomb vest.” Or “Daddy, would you take me to the school dance?” “Have you finished your thermodynamics homework, Suzy?”
Here’s where we can apply the concept of Clauses to our work. A deal can easily be structured as follows:
We can just as easily build more complex deals:
Prop Deals
The simplest deal is a trade of one prop for another:
“I will give you my book if you will give me your bicycle.”
These are easy to design and process; the only calculations are, first, do the people possess the items being dealt? Note that this requires that the subject of the deal verb already know what the DirObject possesses. If you want to keep possessions secret, you can’t have deals. If you do, then the Subject ends up offering a sequence of deals, to which the DirObject will keep replying, “No, I don’t have that.” This will be endlessly frustrating, especially if the player doesn’t already know what Props exist.
A second required for dealmaking is an algorithm for evaluating the value of the Props being traded. This is easy if every Prop is assigned a monetary value during initialization. However, it makes deals less interesting; why would anybody trade a higher-value Prop for a lower-value Prop? In order for deals to be interesting, the values of Props must vary either depending upon the situation or depending upon the character. This can be accomplished through a variety of schemes.
Character-dependent variation in valuation is easy to set up and difficult to process. That is, it’s easy to initialize Fred to have a yen for the gold pendant, and Mary to really desire the amethyst necklace, but once the deal-making starts, how is another person to know about these desires? You could just let them be secret, but then the player will be reduced to making random guesses about what other characters value highly.
Classes of props
It is possible to set up particular classes of props, such as jewelry, clothing, books, and so on. Then a character could ask, “Do you have any jewelry?” as the prelude to a negotiation. However, to do this, you’ll need to assign a classification attribute to each prop, and for now you are limited to using only BNumbers for prop attributes, which means you’d have to have silly statements like “If (classification[Prop]>0.4) AND (classification[Prop]<0.6) then prop is clothing” I recommend against this until we make SWAT (or whatever other tool we use) capable of handling multiple data types in its attribute assignments.
Money
Money can greatly simplify the deal-making process, but it raises new problems. You’d like characters to be able to say “I’ll give you 28 dollars for that bicycle.” but alas, it’s not that easy. Each dollar must be kept track of separately. So if you want a money supply of a thousand dollars, then you’ll need a thousand props, each being a dollar. You can ease the problem by using larger denominations. Then you’ll need to, in effect, give each one a serial number so you can keep track of who owns which dollars. You’ll need special procedures for counting the dollars in each character’s pocket, and for transferring a specified number of dollars from one character to another. But the real pain in the butt is the expression of numbers in any language of interaction. Does the player scroll through a menu 50 entries long to find the number “45”? This is a major headache. You could do something like this:
Ugh!