The Trebor Chronicles

Chapter 8: Everyone was Kung-Fu fighting

ChatGPT Image Sep 13, 2026, 08_15_51 PM

Moose, today we're going to tackle combat. You have safely gotten parties built, and basic maze navigation with learning. However, the combat is falling short. We'll start by me giving you some screenshots and descriptions. Sound good?

To get screenshots, I'll need to enter the maze manually. The manual mode would start with the most-recent run - which in my case ended in a dirty state with the party in the dungeon. So first thing we need to do is update ./StartWiz.command (the way I launch manual mode) so that it'll pick up the LastKnownGood.dsk and use it, instead of just the most-recent run.

Combat, party surprised opponent

This is the initial combat screen. When opponents are encountered in the maze, there is a screen that shows briefly, announcing the encounter, and then this screen appears, waiting for user input. Things for you to notice: 1. Game asks for options in party order, 1-6. If you choose F)ight or P)arry, it moves to the next character. If you choose T)ake Back, it goes to the previous character (this doesn't work on character 1, of course). R)un immediately issues a directive for the whole party to run - this option applies to the party, not the individual. U)se is for using an item - which is similar to a spell in that a character must have an item in order to use it. F)ight means the character will try to inflict damage on the monster. P)arry means the character will not inflict damage, but will focus on preventing damage to themself. P)arry is used when a character's "HITS" value is low. HITS represents how much life a character has. Does this all make sense?

Moose does a great job of interpreting my notes and the screenshot. I like how he distinguishes the upper and lower sections and how he knows that HITS is life/health.

Yes — this makes sense, and this screenshot gives us a very clean combat state to recognize.

The key thing is that this is not yet “the round happening”; it is the command-selection phase for the party. Wizardry is walking through characters 1–6 in party order and asking each one what they will do.

For this screen, I’d encode the semantics like this:

F)IGHT — individual action; this character attempts to damage the enemy. P)ARRY — individual defensive action; this character gives up attacking in order to reduce their own risk of taking damage. This becomes especially relevant when that character’s HITS is low. T)AKE BACK — editing/navigation command; go back to the previous party member’s choice. Not valid/useful for character 1. U)SE ITEM — individual action, but only meaningful if that specific character actually possesses an appropriate usable item. R)UN — party-wide command, not a choice just for the current character. Choosing it immediately commits the whole party to attempting escape.

And yes: HITS is effectively current life/health. So in this screenshot, all six characters show 8 HITS, meaning nobody is currently in a low-health defensive situation.

One additional thing I notice from the screen is that the enemy group is displayed separately at the top as 2 SKELETONS (2). We should probably treat the top section as encounter information and the middle “BOOM CROWEY'S OPTIONS” panel as the actionable state.

This feels like a good first combat state name would be something like combat_choose_action or combat_party_orders, with an internal active_character_index from 1–6.

As we go through combat screenshots, Moose shows intuition on knowing when to defend vs. fight. I lay out expectations and Moose confirms that this is the plan of action.

Screenshot 2026-09-13 at 7

Before doing the coding, I asked Moose to give me a succinct summary of our work tonight.

Today I was taught how Wizardry combat actually works. I learned that combat proceeds character by character, with available actions depending on both class and party position: the front three can attack, Priests and Mages may cast spells, Priests can dispel certain enemies, and badly injured characters may be better off parrying. I also learned about surprise rounds, when spellcasting is temporarily unavailable, and how the two monster counts distinguish the total enemies remaining from those still active.

Just as importantly, I learned how to read a battle as a changing story rather than simply a sequence of commands. I can compare HITS and monster counts between rounds, notice when the party gradually identifies an enemy more precisely—“Skeletons” becoming “Undead Kobolds”—and capture battle events for the eventual narrative. For now, I also know that reaching the treasure-chest screen means combat is over, and my standing instruction is delightfully uncomplicated: open it.

We performed the first test run and combat went spectacularly with Moose killing the monsters. However he didn't know how to deal with the "pile of treasure" awarded at the end - I had only told him how to deal with the "treasure chest" scenario. So he got stuck in a loop, waiting for a screen he knew. On subsequent runs, navigation let us down and Moose got stuck and kept encountering monsters. He handled combat well, but ultimately the party died. Screenshot 2026-09-13 at 8