By "this weekend" it turned out I meant "I have to watch the Saints go to the superbowl and then also looking at things for more than five minutes at a time gave me a headache with my broken glasses." So bear with me while we head into this week!

For one final time, welcome back to Let's Play Angband. This is some bad timing since the official Angband 3.1.2 just came out today (or yesterday, or someday). This Let's Play lasted longer than Conan O'Brien's run on The Tonight Show, something much more awesome that also ended this week (last week now but whatever). Think about that for a moment. We've got a lot of ground to cover, so why not get straight into it?

Part I: UnAngband

There was one more variant that I wanted to play, because apparently it's become the most popular mainline Angband variant (ToME is so far derived that I didn't even recognize it as a variant when it was first brought up - but it is, just one that had its name changed for copyright reasons, meaning that I think it was PernBand at some point). That variant is: UnAngband. Or as I'll be calling it, Starship Boring.

The first warning sign is the size of the file. Angband is a game that, even in its most wild variants, takes up no more than a few kilobytes of space. 20 megs? What the hell is going on here? The answer, as we'll find out, is: Boring. Most of those megs are taken up by wav files which are sound effects that are, by default, turned off. Sound effects, by the way, add nothing to a roguelike, unless that roguelike is DoomRL. PS: Maybe you guys would like me to LP DoomRL once I'm ready for this again? I think that might be a good time.

I am playing this on a laptop which is hooked up to a keyboard, but thanks. There is also a brief personality quiz to determine how badly to piss off the player in the opening cinematic.

If by player you mean "me" and by "opening cinematic" you mean "race selection", that is. The best part is that the "Man of X" races are all identical except for one regard: They excel at exactly one (different) thing each.

I know what Angband is missing! Useless unlockable shit. Judging from the documentation, simply having played Angband before "unlocked" those last three classes on the list. Honestly I think the game would have left me a better first impression if I had said that I hate computers and have never played a video game before, ever.

Anyway, I choose to play a Maia because they're the class for a video game baby.

Wow! I can play a thief or a rogue? That's certainly some choice, and from the actual class descriptions, I sure as hell can't figure out a difference between them. It's worth noting that the Istari are a priest/mage hybrid class, which is what I tried to make back in the late 90s when I attempted my own variant of Angband (which was quickly abandoned, but this was also back when you just needed to add a good option or two to have a variant, and not turn the game into Nethack. MORE ON THIS SHORTLY.)

Anyway I pick 'archer' because why not?


Now, alright. One of the reasons I have so little patience for lengthy character creation processes in Angband (or, well, any involved game with permadeath) is because you go through it a lot. Yes, I think it's awesome that you want to offer the astounding depth of having a bazillion different race/class mixes with different specialties so that I can have a Mongoloid Chef Glory-Hole Enthusiast or what the fuck ever but how many of these combinations are going to be viable, or winnable? Probably the same number as vanilla Angband, and I can almost guarantee you with 100% certainty that they will be the exact same race/class combinations. Vanilla has it right: Keep the number of races and classes low, each with very distinct, obviously-defined roles, and players will pick a style that suits them and run with it. When I have the choice of being an archer who can take a specialty in magic, is that different from taking a ranger with a specialty in bows? NO (I didn't actually do the math on this but I am still saying NO).

In short I'm already not enjoying myself.

Stats are a little different as well. Now INT governs how many spells/prayers you can learn, and WIS determines your mana pool. DEX is less useful, because now a significant portion of it (AC bonus, thieving attack evasion) is governed by AGI (agility). High(er) AGI also gives you to-speed bonuses, meaning that if you really want to you can start with a +5 speed or higher character. I don't like that. Extra turns are something you earn, or luck into, not something you're handed.

SIZ is, and I am not fucking with you, SIZE. It is "a numeric representation of the character's height and weight" which, I thought, were already numeric representations. I guess that it governs carrying capacity and ability to wield large weapons, so consider it a facet of ye olde STR stat.

As per tradition, our test character is named Dr. Awesome. I almost named him Robert Smith? for old times' sake but had no idea what I was in for, even after that character creation fiasco. Anyway we start off with a +3 to speed because of the AGI stat and, when a bow is equipped, will get "2/turn(x1)" which is like a serious ????? to me. I can only assume that the "x?" is a multiplier and... and... oh god. I'm so bored. Sorry. The yawns are overtaking me. UnAngband, you cannot make me care about you.

Towns? Why not! Let's add more useless shit to this game and

NO. I refuse to use mushrooms for anything other than their intended purpose: Eating. I don't want to rub them on armor, touch them with a unicorn horn, put them in a bottle of holy water, write a magic inscription on the floor, or do some other dumb shit with them. I want them to exist for one purpose: Eating.

My brain has completely turned off at this point.

CHOOSE YOUR OWN ADVENTURE TIME: If you think that Stiv will keep playing UnAngband, turn to the next post. If you think not, turn to Part II. Maybe go grab yourself a drink. I'd get one but (a) I've already played this piece of shit and (b) I drank a whole pitcher of beer and some jello shots earlier when the Saints won. Good job, Saints. You are a football team.

Interestingly, there are now 'services' offered at most stores, which for a fixed price do something awesome to either you or your equipment. In this case there appears to be a way to acid-proof equipment which is A+ awesome but it's also fairly pricey, as these things go. This is one of those things I wouldn't mind seeing in Real Angband, essentially a way to add ego attributes to ordinary equipment. Sometimes you're really not going to find that acid and fire resist before hound depth.

Let's travel down the East Road, which is rated for CL0 characters! Farmer Maggot's farm is rated for players aged 2-6, not unlike the board game that I own called Totally Awesome!. You can learn more about how totally awesome Totally Awesome! is here. That page says 8+ but that's a total(ly awesome) lie.

Engaging in travel also apparently takes a significant portion of your food because the game violently opposes the idea of letting you eat when you want to.

You are in a maze of dumb-looking ASCII symbols, all alike.

Just kidding! Those big Os are not Ogres, as they should be, but are in fact "shaded grass". I wonder what happens when for-real ogres show up, especially since there are more suspiciously ogre-shaped and -colored dungeon features coming up shortly. I didn't bother playing the game long enough to find out.

Having mastered the ability to travel through space and time by eating food, Dr. Awesome makes for the town of Bree, which looks suspiciously like the town of Adventureville and also is host to the exact same sort of shops (straight down to the numbers and their contents).

Time to get to the meat of the game: The dungeon!


Alright. So UnAngband graciously decides to differentiate between "empty" squares and "unseen" squares by putting an 'x' over unseen squares. Unfortunately, this means that there is no such thing as an 'empty's quare in the game and oh my god this is so visually busy and overwhelming and I hate it. Turning on the 'remember torchlit grids' option helps, because, well, then the x's are everywhere.

Despite holding a wooden torch, Dr. Awesome has to swap in a different torch to get light.

Despite being both an archer and having a specialty in bows, Dr. Awesome is not a very good shot. This is possibly because it takes several seconds for his arrow to travel across the room, during which I wait in agony for something to happen.

Maybe I didn't mention this before, but Angband is a very fast game. You cast magic, shoot an arrow, whatever - it happens instantly, even though there are cute visual effects to go along with them. The game has something called 'delay rate' which you can adjust, and which places the delay between number of frames. The default delay is zero. Angband players do not have time for visual fancypants bullshit: They are here to play a game on a computer and the game on the computer is essentially the computer equivalent of being slapped in the face with a belt repeatedly. Such people do not care about graphics. They also do not care about sounds, which despite UnAngband's generous size (if it were a woman it would unquestionably be "BBW") I never turned on.

The blue bits are water, by the way. We're in a sewer level! I really like how all these variants add sewer levels to Angband, a game which it should be fundamentally impossible to add sewer levels to. Maybe I should make a variant called "SewerBand" which displays all of its colors in various shades of brown and green. I'll give that some thought. It's not like I'm lacking for free time right now.

Oh! Corpses! Why, I bet I can eat these for nourishment.. if I'm starving! Maybe I can rub them on some armor? I bet there are fountains and unicorn horns and sinks and FUCK YOU UNANGBAND this is the worst goddamn case of Nethack Envy I have ever see. Why don't I just play Nethack?

Well, at least part of the problem of stat gain depth has been solved by allowing stat gain every three levels or so. Where have I heard that before, I wonder??

You know what, this is just.. I.. no. I don't even want to think about environment manipulation beyond "I dig through this thing to get at that thing." I can appreciate the idea of adding dungeon terrain features to provide tactical uses, but this is, as one would say colloquially, bullshit.

There are, in addition to level feelings, "room feelings". I think that this is going a little overboard, don't you guys?

Pseudo-ID, by the way, is now automatic and instantaneous. That kind of rubs me the wrong way; Angband is a game about inventory management, in part.

In a concession to normalcy, there is no way to read the writing on the wall. In a non-concession to hating me, there is no way to read the writing on the wall.

Levels are also significantly more open, which is an interesting decision. There are no longer mazes of twisty little passages, all alike, but rather a series of rooms and large corridors, mostly alike.

This has to be the most useless terrain feature ever and my god what are so many vents doing in a sewer, anyway, and why don't they connect to a damn thing? What exactly is going on here? Am I missing something? Does God hate me? Hello there, God, it's me, Stiv. If you're punishing me for masturbating I swear to You that I will stop doing that forever right this second.


Originally I was going to make a very brief video segment showing off my disdain for UnAngband's magic system through the virtue of cusses and also the fact that my voice and microphone are terrible, but it turns out that it's more or less exactly identical to Angband's magic system, but with (SURPRISE) more shit in it. That just doesn't make for good internet radio. I apologize for this. Why don't you skip ahead to the next part?

Part II: Winners Never Cheat, Cheaters Always Win (Except When They Don't)

So recently I promised a primer on editing vault files, but I'm going to go one better: We're going to edit the game's monster file. You can, quite literally, play along at home for this one (mostly - you'll see why).

Monster, artifact, item, vault, everything-data is stored in the lib/data directory for Angband. What this means is that the game isn't hard-coded except for mechanics: Maintainers can come in, clean up monsters and items, do a little rebalancing here and there, and not ever (or rarely) have to touch the actual mechanical generation bits. These files themselves are generated from the files in lib/edit, which is where the actual editing magic happens. Each one of these files has a little header on it, like so:

Originally posted by monster.txt
# === Understanding monster.txt ===

# N: serial number : monster name
# G: symbol : color
# I: speed : hit points : vision : armor class : alertness
# W: depth : rarity : unused (always 0) : experience for kill
# B: attack method : attack effect : damage
# S: spell frequency |
# S: spell type | spell type | etc
# F: flag | flag | etc
# D: Description

According to the header, there are 16 colors, so there are a total of 832 monsters available (less mimics, lurkers, and uniques) for the taking. That's a lot of monsters! The game doesn't use all of them; including uniques it appears to top out somewhere around 600.

Here's what we're going to do: We're going to find Morgoth and turn him into a total pussy. A pushover that even a level 1 gnome mage with no spells can handle. And then we're going to win the game, and that will conclude this Let's Play: Because Let's Play is all about winning, even if you have to win dirty. Note that we'll need to pull a couple of tricks to do this: Not just monster editing, but also a quick edit to the source code.

Here's Morgoth before his makeover:

Originally posted by monster.txt
N:547:Morgoth, Lord of Darkness
I:140:20000:100:150:0 # HP was 200d100 (FORCE_MAXHP)W:100:1:0:60000
D:He is the Master of the Pits of Angband. His figure is like a black mountain
D: crowned with lightning. He rages with everlasting anger, his body scarred by
D: Fingolfin's eight mighty wounds. He can never rest from his pain, but seeks
D: forever to dominate all that is light and good in the world. He is the origin
D: of man's fear of darkness and created many foul creatures with his evil
D: powers. Orcs, Dragons, and Trolls are his most foul corruptions, causing much
D: pain and suffering in the world to please him. His disgusting visage, twisted
D: with evil, is crowned with iron, the two remaining Silmarils forever burning
D: him. Grond, the mighty Hammer of the Underworld, cries defiance as he strides
D: towards you to crush you to a pulp!

And after:

Originally posted by New monster.txt
N:547:Morgoth, Lord of Darkness
I:50:1:10:0:0 # HP was 200d100 (FORCE_MAXHP)
D:He is a serious pussy. Morgoth cries like a little girl as he runs around
D: batting at invisible things. "THANK YOU FOR READING LET'S PLAY ANGBAND" he
D: says, in between girlish sobs.

We delete the monster.raw file in lib/data (except for a couple other characters, whom you'll be seeing as well), and then let the game take care of the rest.


So why did I put the extra characters in there? The game complains if it can't generate enough townspeople at level 0, which is sort of a sanity check.

If you care about some of the internals of Angband, why placing Morgoth at floor 1 won't make you a ***WINNER*** without a source edit, and how some variants take advantage of code features that aren't fully implemented, keep reading. Otherwise, skip to Part III ahead.

So, when you birth a character, there's a struct that holds all of the information about it: Stats, current experience, level, resistances, etc. But there's also additional data, germane to game completion, that exists outside of the player information. It's called q_list[] and appears very rarely in the source, making it easy to grep for and edit. In particular, it's initialized in birth.c.

q_list[] is an int array of size 4. Exactly why there's 4 slots is unknown (can't be for data alignment purposes; it's not part of a struct): The game only uses two of them. What q_list[] represents is a list of quests: Or rather, floors on which monsters which have the QUESTOR flag set on them (which you can see above on Morgoth) should be defeated. In the original game there are two of them: Sauroman on floor 99 and Morgoth on floor 100. This is a cute check: If somebody edits the monster file to move Morgoth to a lower floor and turn him into an easily-defeated wuss, they can't ever become a ***WINNER*** because the floor at which Morgoth is defeated doesn't match the floor that the quest is assigned to! This is to say nothing of there needing to be two quest monsters, which the casual player may not even know.

So what do we do? We edit q_list[] so that it contains one entry, which is triggered on floor 1. Why I bothered doing this, instead of just removing all the monsters except for two QUESTORs at floors 99 and 100 is because even without monsters, there are still traps aplenty, which can kill a character who's not gaining experience very easily. Now Morgoth can be generated on floor 1, killed, and we get the ***WINNER*** flag. Dang!

So how does q_list[] relate to variants? Well, there's a constant, MAX_Q_IDX which specifies the maximum number of quests, and since it's an array of int, these values can be anything - not just floor numbers. What if you made an extra data file that mapped a quest number to some task, and then upon completing it, it was similar to defeating a QUESTOR monster (a check that's done in exactly one place; xtra2.c)? Sure, you'd need additional data structures to handle quests, and a way to track when your current quest was complete, but there's absolutely no reason the existing q_list[] can't be used in this way.

In fact, the very existence of q_list[] and its size seems to indicate that the original maintainers of Angband planned for there to be additional quests that a player could complete - it would be just as easy to perform a sanity check on a monster with, say, a WINNER flag (although QUESTOR serves other purposes as well, such as creating stairs down on floors 99 and 100, requiring the player to defeat these monsters anyway). q_list[] is a vestigial component of the source which variant developers noticed and took advantage of: Some of the Angband source is very germane to this kind of activity, despite the fact that it's generally clean and concise (and, as the 3.x line continues, there are increasingly fewer vestigial features).

This is to say nothing of the comment in the source in earlier versions (hell, maybe it's still there, I didn't check) that throwing oil flasks doesn't deal fire damage, but it'd be easy to hack in. Nearly every variant that I've played adds a fire damage flag to throwing flasks of oil: This is just about the first thing anyone casually browsing the source code sees, due to its location in the attack code, and the comment is very encouraging even to novice programmers to try their own voodoo on the code.

Part III: Goodbye, Robert Smith?!

So, this isn't necessarily the end. I'm sure that one day I'll pick up Angband again, and when I do, I'd be very happy to inform all of you if I win (or get closer to winning than I did here). In fact, consider yourselves welcome to use Let's Play Angband as a general discussion thread for Angband and all such things from this point on, although there are probably other places for that already.

Congratulations. You have read Let's Play Angband, and thank you. I hope that you enjoy whatever I end up playing next, and as readers, I'm actually going to give you a vote. Whether or not I listen to your votes is going to be another matter entirely. I'm not sure if any of these have been claimed yet, or when I'll actually start doing them, but I think that it's fun to let you guys have some input.

Far Cry 2 or Terranigma or DoomRL or Vice: Project Doom. Some of these I've played and some of them I haven't. They will probably all be presented with the same level of seriousness as LPA (except maybe Far Cry 2, which deserves its own style of Let's Play). [color=white]Please choose DoomRL because that sounds like fun.[/color]

Also, if anybody is interested in them, I found the original pages from both the epic Viki Diary Update and the Morgoth Memo Update. Would you like them? I'm trying to cut down on the amount of shit I hoard but can't bear to throw them away.

< Part 56 | Main