Something that emerged from my reading on conversational analysis is how many of our conversations in daily life are essentially pre-scripted, not in their details but in their overall shape. Someone you don’t know well calls you on the phone: you identify yourselves to each other, exchange a little small talk, get to the point of the telephone call, resolve that business, and hang up. You go to a movie: you tell the person behind the desk what you want to see and when, that person prints tickets and tells you the price, you pay, you exchange concluding civilities and leave.
It might seem that we can negotiate these scenes because of our natural language fluency, but that’s not really the case (or not all of it): context helps a huge amount. I’m terrible at following a conversation between two French speakers I don’t know anything about, but I’m comfortable ordering a restaurant meal, buying stuff at a store, checking into a hotel, etc. — because those are situations for which I not only have the specific vocabulary but have very clear expectations about each stage of interaction to help me guess what an ambiguous utterance might mean.
It occurred to me that this idea of scripts might help address a particular problem with characters in open/exploratory IF where the player can choose when and how long to interact with each person in a landscape full of (say) shopkeepers, tourists, bus conductors, etc. One usually has a choice of making these interactions either very curtailed or very unrealistic: either you can *only* talk to the shopkeeper about the price of milk, or you’re allowed to ply him with a lot of questions about everything under the sun, which a real shopkeeper would probably try to cut short.
So my current implementation works this way: