Still struggling with the problem of selecting one text string from a mass of such strings based on a selected actor. But there are other considerations to bring in: the actor’s morale and the overall state of the battle. Which raises yet another problem: I must carry out combat calculations for each actor, but with 80 actors, the battle would be inordinately long.
I could handle this by having each actor have an emotional reaction to each combat; this would permit overall morale to shift without having too many fights. But then morale would have to be expressed as a relationship. Perhaps a relationship to Arthur?
So now I must select text based on four parameters: actor, actor’s morale, state of the battle, and a random number. Also, of course, I cannot repeat the same event in a battle. For this, perhaps, I can simply rely on the huge number of text strings.
My basic plan is to randomly select an actor, then look up his morale and the state of the battle to select a text string. Perhaps I could do the entire process in a custom operator I write in Java in the Interpreter. That might be much easier.
My process-intensive mind rebels. I want to write Tinkertoy Text that can be applied to any actor. But we learned the hard way that Tinkertoy Text feels too repetitive for most readers. The scheme I have now is an attempt to get around that by writing lots of little stories. No, the latter, data-intensive method is preferable.
What if I make some sort of custom indexing system? Each substory has a set of numbers attached to it specifying what kinds of actors and situations it can be used for. Here I can turn to the Encounter Editor for ideas. It has Prerequisites and Disqualifiers to handle chaining of Encounters. That’s of small value here. It also has actor exclusion parameters, but that would be a bit difficult for me to implement. Still, I think it’s necessary. It also has an “Earliest Day” and “Latest Day” provision — I could use that to reflect the state of the battle. But those are the only features that are relevant here.
Hence, each substory would have a list of actors who are excluded. Wait! What if exclusion is based on rank? That sounds much better.
Oops, another problem: if a substory includes the injury or death of the actor, that information must be somehow included with the substory — and that is impossible. It looks as if we’re back to relying on verbs.
OK, so I start with a simple PickBestActor that randomly selects an actor who is present at the battle. We then select an Option verb based on the state of the battle. We’re moving down the tree — this option splits us out into, say, five verbs. Then, for each of the five verbs, we select a branch at the next level based on the rank of the selected actor — that’s three branches for each one, for a total of fifteen verbs. At this point, we’re down to the substory list, and we need only randomly select a substory.
This could work.