Thursday, March 24, 2022

The Byzantine Automation of AD&D Dungeon Parties

If you're a regular reader (I'm sorry!) then you know I dig making stuff with Tablesmith. It's a very powerful automation tool for making all kinds of neat things. A free and very close approximation is Dave Y.'s excellent web-based version Abulafia which has the benefit of talking to other users' tables. I use it to make dungeon keys and other things pseudorandomly. I took a break from untying the knot of code I've put in to make random "weird sci-fantasy" dungeon keys to work on another project. Well, to put it more precisely I wanted to include NPC dungeon parties as planned and random encounters in the dungeon, and I wanted to do it the way I used to do it by hand from the old 1e DMG on page uhhhhh 175 or so.

Easy to make an NPC generator. It really is. You make a random variable generator, plug it into the stats, plug in the races and classes (easy peasy, it's a list), and hit it with a name maker. BOOM! Done. I'm a king amongst lesser beings.

EXCEPT! If you do it that way, you won't be making viable, valid AD&D1e "character NPCs". It was human-o-centric, you see. Gary put hard limits on the demihuman races. Without very high stats, most of the demihuman races could not climb to successful heights. The thing breaks down on entry where races have limits to stats, stat bonuses, and race/class combinations have level limits dependent upon prerequisites. An easy enough thing for a coder to untangle. I'm _not_ a good coder, though, and I have figured out some of the steps (the ones I said were easy), and I am not clearly grokking the rest but it is coming to me slowly. So! I present to you a very quick list of "level 1 character NPCs" spat out by my angry, irritable Tablesmith code. How many do you want? 99? too much text - nobody would read all that. But I will give you, uhhh, 30 to prove my concept. Please note the juiciest bits of these NPCs are not attached - quirks, tragic backstories, motives, villainous plans, etc. All that can be accomplished by referencing OTHER bits of code, but I don't want that part to muss up my problems. The next bit to hard-code is race-based stat bonuses which sounds like it should be easy. It sort of it, but my brain doesn't always do what i want it to. These are all level 1's made with 4d4+2 since the 3d6 way would of necessity make many many non-viable options (which I could winnow out with code but ehhh more steps). Making Assassins evil was a pretty easy task although I thought it would be harder. There are other class/alignment needs I haven't yet coded in, if I recall right (maybe monks?)

Wyrter, Human Fighter 1, NG, S 14, I 10,W 10,D 9,Cn 9,Ch 10, Long Sword, Scalemail

Hallé, Elf Fighter 1, NE, S 13, I 11,W 10,D 7,Cn 13,Ch 14, Staff, Robe

Anores, Human Fighter 1, CG, S 11, I 15,W 11,D 12,Cn 11,Ch 9, Broadaxe, Chainmail

Maynet, Dwarf Thief 1, LN, S 12, I 13,W 14,D 10,Cn 11,Ch 14, Dagger, Furs

Nobby Quidimer, Human Assassin 1, NE, S 12, I 14,W 10,D 13,Cn 13,Ch 12, Crossbow, Hide Armor

Arenradas, Human Magic-User 1, LN, S 10, I 14,W 14,D 13,Cn 14,Ch 15, Staff, Robe

Corela, Halfling Fighter 1, LN, S 14, I 11,W 12,D 11,Cn 10,Ch 11, Sling, Cuirass

Rivière, Human Cleric 1, NG, S 12, I 12,W 15,D 7,Cn 11,Ch 16, Spear, Chainmail

Kelradas, Human Thief 1, NG, S 11, I 14,W 9,D 11,Cn 16,Ch 12, Dagger, Hide Armor

Ippadia, Halfling Thief 1, LG, S 17, I 9,W 16,D 11,Cn 11,Ch 15, Dagger, Hide Armor

Eddavan, Human Magic-User 1, LN, S 14, I 12,W 15,D 16,Cn 11,Ch 10, Staff, Robe

Olafira, Human Thief 1, LE, S 15, I 15,W 13,D 13,Cn 14,Ch 14, Stiletto, Hide Armor

Marandia, Dwarf Cleric 1, LN, S 14, I 9,W 10,D 15,Cn 12,Ch 18, Great Axe, Studded Leather Armor

Godard, Dwarf Fighter 1, NE, S 16, I 11,W 11,D 12,Cn 13,Ch 12, Hammer, Robe

Quièvremont, Human Magic-User 1, NG, S 12, I 12,W 13,D 12,Cn 12,Ch 13, Dagger, Robe

Montaigu, Half-Orc Thief 1, LN, S 12, I 14,W 12,D 10,Cn 7,Ch 9, Blackjack, Furs

Maignart, Human Monk 1, NE, S 12, I 14,W 10,D 13,Cn 9,Ch 15, Short Bow, Robe

Shadradas, Halfling Thief 1, LG, S 12, I 13,W 15,D 15,Cn 16,Ch 10, Dagger, Hide Armor

Fontemai, Halfling Thief 1, CG, S 13, I 11,W 10,D 13,Cn 11,Ch 12, Sling, Hide Armor

Cora Milgrimsible, Human Thief 1, NG, S 8, I 15,W 13,D 17,Cn 14,Ch 15, Garotte, Padded Armor

Kellum, Elf Magic-User 1, CE, S 14, I 14,W 13,D 11,Cn 11,Ch 13, Staff, Robe

Gromgith, Human Thief 1, LN, S 14, I 11,W 12,D 15,Cn 12,Ch 10, Stiletto, Hide Armor

Somneri, Half-Elf Druid 1, Neutral, S 12, I 15,W 12,D 12,Cn 10,Ch 12, Staff, Robe

Kyraatr, Human Fighter 1, LE, S 9, I 12,W 11,D 9,Cn 17,Ch 10, Axe, Plate Armor

Belpas, Human Fighter 1, N, S 10, I 8,W 12,D 16,Cn 11,Ch 14, Short Sword, Cuirass

Cheney, Gnome Illusionist 1, LN, S 12, I 13,W 13,D 12,Cn 14,Ch 15, Staff, Robe

Damarary, Halfling Thief 1, CG, S 14, I 12,W 10,D 12,Cn 12,Ch 15, Dagger, Padded Armor

Lady Knudel, Elf Magic-User 1, CG, S 14, I 10,W 15,D 16,Cn 9,Ch 10, Staff, Robe

Lindvay, Human Cleric 1, CG, S 14, I 15,W 18,D 13,Cn 11,Ch 11, Warhammer, Studded Leather Armor

Ajax Piggful, Human Magic-User 1, N, S 12, I 11,W 12,D 15,Cn 13,Ch 14, Dagger, Robe

Looks like it works! Now, the next couple of bits - making parties of up to 9 NPCs with a certain number of character-type NPCs accompanied by henchmen and hirelings, dependent upon level with certain equipment based on random rolls according to level, I anticipate a hearty challenge and I think I almost have it sorted but I need to leave it for the weekend since Workaday World calls and I must hie away. A bad thing about doing it this way is that these NPCs get generated by machine and wither away into the aether very very quickly without ever having the substance of human effort or dice-rolling the way the old-fashioned method of doing it invests in them... I dunno. I'm an agent of chaos in this regard, I guess.

Is it a crime to make 1000's of NPCs and toss them away into The Nothing? Yes. Yes it is.

Peace be upon both your houses, I commend thee to Mars and Bellona, etc.