RPG Combat
Although Warlock Domain does a great job of circumventing tropes in its plot and dialog, there is one aspect that is incredibly of its time, and that's the usage of an RPG engine. The system in place here is far from the worst, moving at a fast enough clip that fights don't feel tedious, and providing an opportunity to embrace Chan's ability to draw menacing foes as large pieces of artwork for each fight scene. It's one of the better ones I've seen, but while much of what's offered by Warlock Domain holds up great today, the RPG engine by modern standards is just a sigh of relief in not being terrible. That's a compliment though, for an RPG engine of this caliber to be one of the weaker aspects of the game really just shows how high it sets the bar for quality in other aspects.
Input is handled by having the player touch the first letter of each possible attack Penn can do. These options are "Fight", your basic attack with whatever melee weapon Penn is holding (his fists, a sword, Darkbane); "Shoot Arrow" which uses the player's ammo for more damage; "Twirl Sword" which ticks the box for more damage than a basic sword attack at the cost of being less accurate; and "Light of Truth" which does massive damage, but can only be used once per fight. The groundwork is good. There's a variety of attacks Penn has available and potentially a reason to use all of them throughout the game.
Strangely absolutely zero instructions are included by Chan to explain how the system works. In 1995 there's a very real chance that this wasn't just somebody's first ZZT RPG engine, but first experience with this type of combat in a video game entirely. Just getting dropped right into your first fight leads to confusion as there's no indication as to whether or not this is a turn-based system, or one where you should be mashing attacks as quickly as possible. In practice each attack has a long delay so while it is real-time it almost feels turn based, to the point where at first I was annoyed that trying to use the sword based attacks without a sword were "wasting" a turn as my foe attacked immediately afterwards.
The RNG used for attacks is also rather unconventional, but in a way that mostly works quite well. The usual approach of having an object shoot or check if it's blocked in a random direction is an easy way to create four possible outcomes and permit odds of success in increments of 25%. Chan makes his dice rolls a little more organic. The RNG object for both player and enemy actions is in turn surrounded by four objects called "sliders" that constantly try to move in a random direction. They in turn are surrounded by invisible walls in such a way that they are either blocking the central object or not. The randomness relying on full random movement rather than deciding whether or not to change position means that each object has a 75% of staying where it's located on each cycle whether that be in a spot that helps or hinders the player.
The central object in turn checks one by one to see if it's blocked in each direction and determines the result based on that. For example, shooting an arrow will check if the object is blocked to the north. If it is, the arrow hits. If it's not, it continues by checking being blocked to the west. If it is, the arrow hits. This repeats for east, but then for the fourth and final direction, being blocked means that the arrow is a confirmed miss.
This works out nicely in that misses can and do happen, but are relatively infrequent as they require four coin flips to go a specific way. This is vastly superior to engines that use the one-in-four system of randomness to make misses happen 25% of the time! If all four checks fail, depending on the attack selected Penn will either default to a miss, or to performing a critical hit! While exact numbers are difficult to come by, the dice rolls in practice make crits and misses infrequent and feel much more fair than lesser systems where a few bad rolls can ruin the fight. They add just a little bit of heat to keep the player invested in the fight.
The battles themselves are fairly limited in number. There are five in total, though depending on a decision made before confronting Daimon you'll only get to see three or four at most in a playthrough. In some fights, Penn's allies will join the battle as well with their own hit point counter on the board and entirely under AI control. Unlike Penn if an ally dies in combat they're fine afterwards which makes them essentially human shields for Penn where you'll be rooting for your opponent to target Penn's allies to near-death, but not actually kill them lest it reduce your party's damage output. It's a bit silly in that way.
Unfortunately, ZZT RPGs still suffer quite a bit from a lack of strategy and a lot of samey-ness. Every fight is basically resolved by using the Light of Truth if you have Darkbane, and then twirling your sword until the fight is over. For the period where you're swordless, an unarmed attack does so little damage that you've got to use arrows. This amounts to picking one attack and continuing until you win or not. There are no healing items, defensive equipment, or any element that gives the player an opportunity to do anything other than try and max out their damage. While the graphics and animations are nice, they're just window dressing over otherwise near-identical fights.
Lastly, the health bars are also a bit odd. The health bars for are too short to fit fully on screen. When what appears to be the object at the end of the health bar is shot, the object will then place a bunch of boulders and change them into more breakables. It makes it impossible to tell how much health your opponent or even your party members actually have, and means that if the first damage of five from an attack hits the object, the other four damage is wasted. It would've been nicer to rethink the health presentation as in its current state it definitely does a sloppy job tracking health and damage. Even just changing the character of these show a number of times they can be hit would benefit the game a lot. Since all health values, yours and your opponents are ultimately unknown, victory and defeat just happen abruptly. What should be a clutch moment where your attack takes down the enemy when a miss would've meant your own demise can't be recognized as such. You just, win or die.
And while it's not really a bug, once you do win a fight any bullets on the screen in the process of draining your health aren't erased. You have to make a run for the exit passage just in case a few lingering bullets is enough to take you out as well.
Subversions
A recurring theme throughout Warlock Domain is just how often Chan manages to defy expectations. At first glance this is a game about a hero who rescues some princesses from an evil warlock by defeating his army of orcs, skeletons, and other nefarious and dark-spirited foes. Nearly every step of the way Penn expects everything to fit neatly into expectations only for the stereotypical relations to fall flat. The skeletons populating the castle make for the best example of this. Their reaction to Penn isn't a slavish devotion to their warlock master, but a mild frustration at how rude all these adventurers are. Skeletons chastise Penn for stealing things. Whenever a skeleton chooses non-violence they wind up with the upper hand against Penn, taunting him with important keys and locked gates and giving the player an opportunity to have Penn throw a little tantrum of threats that go nowhere against the undead.
Again, everything would seem to be an open and shut case of ticking the boxes of a fantasy themed adventure. Daimon is the evil warlock. The king is a noble ruler in a struggle against Daimon. Penn is an adventurer who will kill the evil foes, save the day, and get the girl (or girls as the case may be). In practice, things aren't so black-and-white with Chan also understanding that to get an actual original story with these ingredients requires more than pretending it's opposite day. This isn't a simple case of "actually Daimon is good and the king is evil!" The cast has reasons for what they do and make decisions befitting their personalities.
And it's because these characters aren't so bland that make one scenario Penn has to deal with feel incredibly out of character for him. It's a mandatory part of the game. You'll know it when it happens as usually Penn's intimidation attempts result in his comeuppance. Solving this one puzzle though, involves momentarily acting more like a blood-slave of Gargax.
Despite that one bit of tonal mismatch, the game's instance of setting up expectations only to pull the rug out from under you really benefits it. Fantasy adventures games are really common for ZZT. Warlock Domain is able to set itself apart not just by being a well constructed example of the genre, but by really finding its own voice. Chan crafts his world here in a way that others would find quite difficult to properly emulate its feel.
"Instant" Game Overs
The imported z2 reviews for this game are very positive. The first four reviews all give the game a perfect score. However one of the non-perfect reviews cites that it has far too many one-hit-kills. This was worrying to see. It certainly wouldn't be the first time I revisited a mid-90s classic only to realize how many issues it has by modern standards. So what are we dealing with here? Surely there can't be that many game overs if it didn't sour me elsewhere when discussing this game. Well... the review isn't entirely wrong. There are quite a few places throughout Warlock Domain where saying the wrong thing or performing the wrong action will indeed bring an end to Penn's journey. Normally, I'd say that this does suck, but Chan isn't doing anything so crass here as to touch a skeleton to talk with them and have them immediately slice his head off. Chan takes great efforts (with two exceptions) to make these "instant" deaths require a deliberate commitment from the player.
The castle's kitchen kitchen offers two great examples:
Firstly is this ogre chef holding a meat cleaver. Chan makes it pretty clear that the player needs to watch their mouth here, outright telling the player that Penn is going to speak politely.
Choose violence and it should come as no surprise that Penn is killed for it.
Then there's also a sleeping hellhound enjoying the warmth from the area near the magic-powered refrigerator. Touching it reveals that it has razor-sharp fangs, and even brings up the fact that you had to deal with one of these at the start of the game. If Penn lacks the item needed to deal with the dog the only action is to leave it alone.
The fridge offers up the ability to open it. Selecting this option while the hellhound remains brings up an additional confirmation asking the player if they're sure and pointing out how the sleeping dog looks peaceful and might wake up from the sudden cold air that will be released if it's opened. You can guess what happens if you insist on opening it. And the fact that you can make that guess is why I truly don't mind these at all. In the earliest days of ZZT a case could be made that players might be playing on a floppy disk and saving before interacting with anything would be a measurable pause. In practice, it's trivial to save, and even if you don't you're can simply back out of these prompts.
There are several other instances like this, but the norm is to warn to the player. A captured castle guard warns Penn that breaking down a door will result in a poisonous gas trap being sprung as soon as the player enters the board. A growling cat named "Fluffy" in the gardens can be kicked. Spying through a keyhole in one of the towers reveals a room full of orcs drinking and playing poker with the options of "Walk right in." and "Are you kidding?". Instant death is absolutely a part of this game, but never in a way where it's just sprung on the player without any hint. Again, with two exceptions.
For some bizarre reason, there's a weird contraption in the basement that activates when Penn picks up a candle. The machine begins to throw stars and has three levers on the back. This puzzle is entirely a guessing game with one option causing the stars to spawn in faster, one to deactivate the machine, and one to make it explode, killing Penn instantly. The justification is supposed to be that "it's never the red one that's good", but that's way too flimsy for me. This is the first annoying game over the player has a good chance of unintentionally activating.
The second is honestly more annoying and involves searching a spot repeatedly. Each time Penn finds more and more useful items, but search one time more than necessary (something entirely un-hinted at) and you wind up accidentally finding and setting off a gas grenade and are immediately killed by toxic gases. Great.
Generally though, as long as you're actually reading the text, you're not going to be caught off guard by most instances of these. With Chan's writing being such a key part of what makes this game worthwhile, your attention will be kept as you read through descriptions of adversaries or artifacts. The telegraphing of these deaths is more likely to mean that you'll stop, save, and then get Penn killed just to see how it happens than angrily quit ZZT in frustration over lost progress.
Bugs and Oversights
Luckily for us this is going to be a short section.
For all the possibilities here with Penn saving and killing people, managing item flags, the numerous enemies, all of it works great. I ran across two issues in my playthrough.
Firstly, in the west hall there's a switch that opens up the catacombs, but it requires Milton to hold the switch so Penn can actually go inside. The door object doesn't lock itself and as such you can touch the switch again while it's opened to make it repeat its code and let Penn get inside when he's not supposed to be able to. This is easy enough to not trigger or just not go inside if you do happen to trigger the bug, though if you're looking to speedrun the game you can immediately go to the catacombs and then fight Daimon...
The second issue involves the spectre in the library. They can only be killed with the Darkbane sword which you probably won't have when you're here. The object constantly tries to move towards the player and the layout of the room means if you're not careful the spectre can wind up blocking the door to get inside the library and you'll be forced to ?ZAP
to get by should you need to make another trip later.
Puzzles
The puzzles in this game are unique yet fitting. The non-linear structure of the game means that Penn has a lot of options for where to explore next, with many of the rooms of the castle leading to rooms where Penn can't immediately reach his goal. Some of these puzzles are the more traditional adventure game style. You'll be searching for something to distract an angry hellhound or coming up with a way to free a trapped royal guard without releasing poison gas. Other puzzles are more deliberately placed by Daimon to keep would-be adventurers like Penn from getting anywhere. There's variety here as well. In order to reach the end of one chamber the player has to touch objects that appear as letters on the board to spell out a password. Another puzzle involves stepping on colored tiles in a correct order. They all feel varied enough not just in terms of what Penn is doing, but in how they're intended to be solved. Some puzzles can be solved the first time you come across them. Others demand finding hints in other rooms.
On the inventory side of things, the solutions make sense once Penn has the correct item. However, in some cases you'll be left wondering what on earth some objects are for. I was running around for most of the game with a chew toy without the slightest idea what good it would be. For something more harsh, at one point Penn will acquire an air-tight box whose purpose might be more comprehensible in a detailed graphical adventure, but in the context of ASCII art and a brief sentence or two of description comes off as rather clunky, clashing between how I imagined a scene would look versus how Chan was seeing it himself.
The good news though, is that because this isn't one of those ZZT worlds that uses the cheat prompt to have the player bring up a list of items, all you really need to know if the fish is meant to be fed to the cat or not is to touch the cat and see if there's an option to give it your fish. Most puzzles are sensible enough that you'll correctly assume the solution, and the inability to select wrong items entirely means that puzzle solutions are absolute. There's no frustration to be had that a combination of item and object makes sense to you. Chan's code is law.
Except for the one time where a puzzle specifically is about finding the correct item. In one of the towers, a mage is maintaining a ritual to limit the power of Milton's magic within the castle. The ritual involves a series of powerful items arranged in a circle around a pentagram and Penn gets his choice of several items including arrows and gems to add some chaos to the magic. This is another instance where the extra effort pays off. The items each have unique effects ranging from hurting yourself, to an explosion so large that the entire country is caught in the blast!
Some puzzles may even be optional. A locked door in the castle armory protects a significant number of arrows, which may be critical for an offense if Penn has yet to acquires a sword. There's no key to be found, but the room does have a movable cannon and a single opportunity to light it in hopes of blasting down the door.
The puzzles may even combine with action sequences. A skeletal attack in one wing begins with a gate being closed, trapping Penn inside. The natural assumption is that the skeletons have to be defeated before leaving, but the gate doesn't open. The structure of the game makes it easy to not even notice at first, as your main concern is still in exploring the rest of this section of the castle. It was only when it was time to turn around that I noticed the gate was still closed. A barrel of gunpowder can be pushed around the room with the puzzle really being finding a way to light it. (And kudos to Chan here for deciding the barrel can be "pushed" one tile or "rolled" five at a time preventing getting the barrel into position from being a tedious chore.)
Though there is one puzzle that did get me to break out Foxman's walkthrough to figure out. Whenever you do fight skeletons, they turn into a white fake when killed, representing a crumpled pile of bones. In one case though, the change is only visual so the object actually remains an object that just changes its appearance when killed. This skeleton and only this skeleton can be searched to get an item required to progress to any of the game's endings.
Final Thoughts
Warlock Domain has a reputation of being a classic ZZT adventure to be sure, but not one that's really legendary. For many, it's a fondly remembered title and one considered great in its time, though not really something you'd see listed as somebody's absolute favorite. The kind of game that's considered an essential title in ZZT like Mission: Enigma or Burger Joint. Perhaps it should be!
Alan Chan creates something here that really plays to ZZT's strengths. It's a game that's neither trying to be an homage to early ZZT worlds in the style of Town of ZZT or Smiley Guy, nor is it trying to push ZZT to its absolute limit. You'll find more technically impressive code and puzzles elsewhere, but there's an earnestness to this game's design that really sticks out. Warlock Domain reminds me of A Dwarvish-Mead Dream in terms of its kitchen sink approach to gameplay, but while coolzx's Dwarvish-Mead felt like it was constantly changing what mode of gameplay it was in, Chan is making the transitions far more fluid and seamless. Entering one of Castle Shadow's many doors might lead to a shootout with a skeleton, a puzzle to solve, or just a new foe to converse with and for it to be able to do this without anything feeling out of place is really remarkable. Exploration is the thread that ties all aspects of the game together with Penn's macro-level search for the princesses and Daimon being broken into more manageable micro-level quests for key items gives the player a sense that they're always right on the cusp of everything coming together. Solving one puzzle and being rewarded will doubtlessly unravel three more. The castle halls may be a bit drafty, but the arrangement of everything makes this game feel pleasantly breezy compared to other puzzle focused adventures with obtuse solutions or lengthy walks to make progress elsewhere.
Not to mention that the simple nature of everything here should make it quite friendly for beginners. The text file for the game states Warlock Domain to be Alan Chan's first game, and he hit it out of the park to be sure. It excels at bringing so much to the table without being overwhelming. You don't need to know how use a cheat menu to open an inventory. The action is restrained to a few key sequences, with an eventual source of infinite healing.
The sheer variety in gameplay, quality humor, and compelling story all add up to a wonderful experience that makes Warlock Domain easily one of the best fantasy themed ZZT worlds out there, which again is no small feat. Chan delivers from the opening scene all the way through to the game's final battle. The cast is large, but varied, and everybody has a role to fulfill that goes beyond just populating the game with another name. Navigating the castle is straightforward despite its many rooms with great care taken in its layout to ensure that you're never stuck running from one corner to the other in order to make progress. The same openness of the castle also provides an opportunity for a player stumped on how to overcome an obstacle the chance to look elsewhere. I can confidently say that by the time you really do start running out of things to do you're going to be hooked on seeing things through to the end with the story building up enough to keep your spirits high as you get past your final challenges. Warlock Domain exemplifies what a good ZZT fantasy game should be, hitting all the requirements without feeling like it's just a rehash of countless other adventures.