I've split the monster table into several, while also merging some of the columns. Trust me, this is the least bad solution that I've tried.
Id | Picture | Unknown Name | Unknown Names | Name | Names | Group Size | HP / Level |
0 | SLIME | SLIMES | BUBBLY SLIME | BUBBLY SLIMES | 2d2 | 1d3 +1 | |
1 | SMALL HUMANOID | SMALL HUMANOIDS | ORC | ORCS | 3d2 | 1d4 | |
2 | SMALL HUMANOID | SMALL HUMANOIDS | KOBOLD | KOBOLDS | 2d2 +1 | 2d3 +1 | |
3 | SKELETON | SKELETONS | UNDEAD KOBOLD | UNDEAD KOBOLDS | 1d6 +1 | 2d3 +2 | |
4 | SCRUFFY MAN | SCRUFFY MEN | ROGUE | ROGUES | 1d4 +1 | 2d5 +1 | |
5 | SCRUFFY MAN | SCRUFFY MEN | BUSHWACKER | BUSHWACKERS | 1d4 +1 | 3d6 +1 | |
6 | MAN IN CHAIN | MEN IN CHAIN | HIGHWAYMAN | HIGHWAYMEN | 2d6 | 3d4 +2 | |
7 | WEIRD HUMANOID | WEIRD HUMANOIDS | ZOMBIE | ZOMBIES | 1d6 +1 | 1d10 +1 | |
8 | SLIME | SLIMES | CREEPING CRUD | CREEPING CRUDS | 1d6 +1 | 3d4 | |
9 | GAS CLOUD | GAS CLOUDS | GAS CLOUD | GAS CLOUDS | 2d4 | 2d4 | |
10 | MAN IN ROBES | MEN IN ROBES | LVL 1 MAGE | LVL 1 MAGES | 1d1 | 1d4 +1 | |
11 | PRIEST | PRIESTS | LVL 1 PRIEST | LVL 1 PRIESTS | 1d4 +1 | 1d8 | |
12 | SMALL OBJECT | SMALL OBJECTS | CREEPING COIN? | CREEPING COINS? | 9d1 | 1d1 | |
13 | KIMONOED MAN | KIMONOED MEN | LVL 1 NINJA | LVL 1 NINJAS | 2d4 | 2d4 +2 | |
14 | RABBIT | RABBITS | VORPAL BUNNY | VORPAL BUNNIES | 2d3 +2 | 3d6 +2 | |
15 | GIANT RODENT | GIANT RODENTS | CAPYBARA | CAPYBARAS | 2d4 +1 | 4d4 | |
16 | AMPHIBIAN | AMPHIBIANS | GIANT TOAD | GIANT TOADS | 2d2 +4 | 4d5 | |
17 | MANGY DOG | MANGY DOGS | COYOTE | COYOTES | 4d2 | 4d6 | |
18 | PRIEST | PRIESTS | LVL 3 PRIEST | LVL 3 PRIESTS | 2d2 +3 | 3d8 +1 | |
19 | KIMONOED MAN | KIMONOED MEN | LVL 3 SAMURAI | LVL 3 SAMURAI | 4d2 | 3d6 +4 | |
20 | KIMONOED MAN | KIMONOED MEN | LVL 3 NINJA | LVL 3 NINJA | 2d4 +2 | 3d8 | |
21 | BEAR | BEARS | WERE BEAR | WERE BEARS | 2d3 +2 | 5d8 | |
22 | FLY | FLIES | DRAGON FLY | DRAGON FLIES | 1d3 +1 | 2d8 | |
23 | WEIRD HUMANOID | WEIRD HUMANOIDS | ROTTING CORPSE | ROTTING CORPSES | 1d5 | 2d8 | |
24 | OGRE | OGRES | OGRE | OGRES | 1d8 | 4d8 +1 | |
25 | INSECT | INSECTS | HUGE SPIDER | HUGE SPIDERS | 1d8 | 2d8 +2 | |
26 | WERERAT | WERERATS | WERERAT | WERERATS | 1d4 | 3d8 +1 | |
27 | INSECT | INSECTS | BORING BEETLE | BORING BEETLES | 1d8 | 5d8 | |
28 | DRAGON | DRAGONS | GAS DRAGON | GAS DRAGONS | 1d4 | 5d8 | |
29 | PRIEST | PRIEST | PRIESTESS | PRIESTESS | 1d6 | 3d8 +1 | |
30 | MAN IN ARMOR | MEN IN ARMOR | SWORDSMAN | SWORDSMEN | 1d6 | 3d10 | |
31 | INSECT | INSECTS | HUGE SPIDER | HUGE SPIDERS | 1d8 | 2d8 +2 | |
32 | ANIMAL | ANIMALS | ATTACK DOG | ATTACK DOGS | 1d6 | 4d8 | |
33 | GARGOYLE | GARGOYLES | GARGOYLE | GARGOYLES | 1d6 | 4d8 +4 | |
34 | UNSEEN ENTITY | UNSEEN ENTITY | GRAVE MIST | GRAVE MISTS | 1d6 | 4d8 | |
35 | ANIMAL | ANIMALS | DRAGON PUPPY | DRAGON PUPPIES | 1d6 | 5d10 | |
36 | WOLF | WOLVES | WEREWOLF | WEREWOLVES | 1d6 | 4d8 +3 | |
37 | UNSEEN ENTITY | UNSEEN ENTITY | SHADE | SHADES | 1d6 | 3d8 +3 | |
38 | PRIEST | PRIESTS | BISHOP | BISHOPS | 1d6 | 4d8 | |
39 | MAN IN ARMOR | MAN IN ARMOR | MINOR DAIMYO | MINOR DAIMYOS | 1d6 | 4d10 | |
40 | MAN IN ROBES | MEN IN ROBES | LVL 5 MAGE | LVL 5 MAGES | 1d6 | 5d4 | |
41 | MAN IN LEATHER | MEN IN LEATHER | LVL 4 THIEF | LVL 4 THIEVES | 1d6 | 4d8 +3 | |
42 | ANIMAL | ANIMALS | KILLER WOLF | KILLER WOLVES | 1d6 | 6d8 | |
43 | UNSEEN ENTITY | UNSEEN ENTITY | SPIRIT | SPIRITS | 1d6 | 7d3 +2 | |
44 | INSECT | INSECTS | GIANT SPIDER | GIANT SPIDERS | 1d6 | 4d8 +4 | |
45 | ANIMAL | ANIMALS | WERETIGER | WERETIGERS | 1d8 | 5d8 | |
46 | STRANGE ANIMAL | STRANGE ANIMALS | MEDUSALIZARD | MEDUSALIZARDS | 1d6 | 5d8 | |
47 | PRIEST | PRIESTS | LVL 5 PRIEST | LVL 5 PRIESTS | 1d5 | 5d8 | |
48 | MAN IN BLACK | MEN IN BLACK | LVL 6 NINJA | LVL 6 NINJAS | 1d5 | 6d10 | |
49 | MAN IN ROBES | MEN IN ROBES | LVL 7 MAGE | LVL 7 MAGES | 1d6 | 7d4 | |
50 | MAN IN LEATHER | MEN IN LEATHER | MASTER THIEF | MASTER THIEVES | 1d6 | 4d6 | |
51 | MAN IN ARMOR | MAN IN ARMOR | MAJOR DAIMYO | MAJOR DAIMYOS | 1d5 | 7d12 | |
52 | PRIEST | PRIESTS | HIGH PRIEST | HIGH PRIESTS | 1d6 | 8d8 | |
53 | MAN IN ARMOR | MEN IN ARMOR | CHAMP SAMURAI | CHAMP SAMURAI | 1d6 | 10d10 | |
54 | MAN IN ROBES | MEN IN ROBES | ARCH MAGE | ARCH MAGES | 1d6 | 8d4 +2 | |
55 | MAN IN LEATHER | MEN IN LEATHER | MASTER THIEF | MASTER THIEVES | 1d6 | 6d6 | |
56 | STRANGE ANIMAL | STRANGE ANIMALS | GAZE HOUND | GAZE HOUNDS | 1d5 | 4d8 | |
57 | OGRE | OGRES | OGRE LORD | OGRE LORDS | 1d5 | 8d8 | |
58 | STRANGE ANIMAL | STRANGE ANIMALS | TROLL | TROLLS | 1d3 | 6d8 +6 | |
59 | UNSEEN ENTITY | UNSEEN ENTITIES | LIFESTEALER | LIFESTEALERS | 1d1 | 5d8 +3 | |
60 | UNSEEN ENTITY | UNSEEN ENTITIES | NIGHTSTALKER | NIGHTSTALKERS | 2d3 | 5d8 +3 | |
61 | STRANGE ANIMAL | STRANGE ANIMALS | WYVERN | WYVERNS | 1d6 | 7d8 +7 | |
62 | PRIEST | PRIESTS | LVL 8 PRIEST | LVL 8 PRIESTS | 1d5 | 7d8 | |
63 | MAN IN ARMOR | MEN IN ARMOR | LVL 10 FIGHTER | LVL 10 FIGHTERS | 1d6 | 7d10 | |
64 | MAN IN ROBES | MEN IN ROBES | LVL 7 MAGE | LVL 7 MAGES | 1d6 | 7d4 | |
65 | MAN IN LEATHER | MEN IN LEATHER | LVL 7 THIEF | LVL 7 THIEVES | 1d5 | 7d6 | |
66 | MONK | MONKS | LVL 8 NINJA | LVL 8 NINJAS | 1d3 | 8d4 | |
67 | GIANT | GIANTS | EARTH GIANT | EARTH GIANTS | 1d5 | 1d1 +40 | |
68 | DEMON | DEMONS | LESSER DEMON | LESSER DEMONS | 1d1 | 10d8 | |
69 | STRANGE ANIMAL | STRANGE ANIMALS | CHIMERA | CHIMERAS | 1d4 | 9d6 | |
70 | GIANT | GIANT | FIRE GIANT | FIRE GIANT | 1d4 | 11d8 +4 | |
71 | STRANGE ANIMAL | STRANGE ANIMALS | GORGON | GORGONS | 1d1 | 8d8 | |
72 | PRIEST | PRIESTS | LVL 8 BISHOP | LVL 8 BISHOPS | 1d6 | 8d8 | |
73 | MAN IN ARMOR | MEN IN ARMOR | LVL 8 FIGHTER | LVL 8 FIGHTERS | 1d6 | 8d10 | |
74 | MAN IN ROBES | MEN IN ROBES | LVL 10 MAGE | LVL 10 MAGES | 1d6 | 10d4 | |
75 | MAN IN LEATHER | MEN IN LEATHER | THIEF | THIEVES | 1d5 | 9d6 | |
76 | MAN IN ROBE | MEN IN ROBES | MASTER NINJA | MASTER NINJAS | 1d5 | 10d4 | |
77 | UNSEEN ENTITY | UNSEEN ENTITIES | MURPHY'S GHOST | MURPHY'S GHOSTS | 1d1 | 10d10 +10 | |
78 | UNSEEN ENTITY | UNSEEN ENTITIES | WILL O' WISP | WILL O' WISPS | 1d2 | 10d8 | |
79 | STRANGE ANIMAL | STRANGE ANIMALS | BLEEB | BLEEBS | 1d8 | 10d8 | |
80 | GIANT | GIANTS | FROST GIANT | FROST GIANTS | 1d4 | 1d8 +50 | |
81 | DRAGON | DRAGON | FIRE DRAGON | FIRE DRAGON | 1d4 | 12d8 | |
82 | PRIEST | PRIEST | HIGH PRIEST | HIGH PRIEST | 1d1 | 11d8 | |
83 | MAN IN ROBES | MEN IN ROBES | HIGH WIZARD | HIGH WIZARDS | 1d1 | 12d4 | |
84 | MAN IN LEATHER | MEN IN LEATHER | MASTER THIEF | MASTER THIEVES | 1d1 | 12d6 | |
85 | MAN IN ROBES | MEN IN ROBES | HATAMOTO | HATAMOTOS | 1d1 | 12d4 | |
86 | UNSEEN ENTITY | UNSEEN ENTITY | VAMPIRE | VAMPIRES | 1d4 | 11d8 | |
87 | DEMON | DEMONS | GREATER DEMON | GREATER DEMONS | 1d6 | 11d8 | |
88 | GIANT | GIANTS | POISON GIANT | POISON GIANTS | 1d4 | 1d1 +80 | |
89 | DRAGON | DRAGONS | DRAGON ZOMBIE | DRAGON ZOMBIES | 1d4 | 12d8 | |
90 | MAN IN ARMOR | MEN IN ARMOR | RAVER LORD | RAVER LORDS | 1d1 | 15d10 | |
91 | CONEHEAD | CONEHEADS | THE HIGH MASTER | HIGH MASTERS | 1d1 | 15d4 | |
92 | STRANGE ANIMAL | STRANGE ANIMALS | FLACK | FLECK | 1d1 | 15d12 | |
93 | MAN IN ROBES | MEN IN ROBES | ARCH MAGE | ARCH MAGES | 1d1 | 20d4 | |
94 | UNSEEN BEING | UNSEEN BEINGS | MAELIFIC | MAELIFICS | 1d0 +1 | 25d4 | |
95 | UNSEEN ENTITY | UNSEEN ENTITYS | VAMPIRE LORD | VAMPIRE LORDS | 1d1 | 20d8 | |
96 | MAN IN ROBES | MAN IN ROBES | W E R D N A | W E R D N A | 1d1 | 10d10 +20 | |
97 | MAN IN KIMONO | MEN IN KIMONOS | HIGH NINJA | HIGH NINJAS | 1d1 | 12d4 | |
98 | PRIEST | PRIESTS | HIGH PRIEST | HIGH PRIESTS | 2d1 | 8d8 | |
99 | MAN IN ROBES | MEN IN ROBES | LVL 7 MAGE | LVL 7 MAGES | 2d1 | 7d4 | |
100 | MAN IN ARMOR | MEN IN ARMOR | LVL 7 FIGHTER | LVL 7 FIGHTERS | 2d1 | 7d10 |
Picture
These pictures were extracted from the Apple II disk images.Names
Each monster gets four names. A normal name, a name representing the unidentified monster, and plural variants for both.Group Size
The number of monsters that may appear in a group. This will never exceed(MazeLevel + 4).
HP / Level
The hit dice which determine the monster’s starting HP, which rolls for each individual monster during an encounter. The dice count also serves as the monster's level. Kobolds, for instance, with 2d3 + 1 HP, count as level 2.Some of these notes reference formulas that I’ve discussed in the previous post.
A monster's chance to hit you in melee is
(Level + YourAC) * 5%
per strike.A monster's chance to resist a successful critical hit is
(Level + 10)/35
.Each monster's chance to resist Manifo is
(Level * 10%) + 50%
.Each monster's chance to resist Montino and Badi is
Level * 10%
.Each monster's chance to resist Katino is
Level * 20%
.Monsters always resist Makanito if their level is greater than 7.
Each monster’s chance to resist Lakanito is
Level * 6%
.A monster's chance to resist Dispell increases by
Level * 10%
.The morale of a monster group is equal to its level, multiplied by the number of monsters whose status is OK.
When your total party level exceeds the total monster morale of all groups, they will be demoralized, and monsters with the Run ability have a 65% chance to flee.
When monsters are demoralized (even if they cannot run), your chance to succeed when running is 20% higher.
Each monster's chance to heal AFRAID status is
Level * 10%
per turn, but not more than 50%. I am not sure if the AFRAID status is even possible in Wizardry; fear-related spells just raise AC.Each monster's chance to heal ASLEEP status is
Level * 20%
per turn, but not more than 50%.Each monster's chance to heal PARALYZE status is
Level * 7%
per turn, but not more than 50%. PARALYZE also doesn't seem to be possible to inflict. Monsters successfully held with MANIFO are simply put into ASLEEP status.When monsters advance, each monster has a “strength” value determined by this formula:
[Remaining HP] - 3 * (MageLevel + PriestLevel)
The group strength is the sum of all monsters’ strength in the group, only counting monsters with OK status.
After group strength is calculated for all groups, monster group 4 compares its strength to monster group 3, and performs this calculation:
20% * [Group 4 Strength] / [Group 3 Strength] + 31%
This result is the probability that each group moves up a rank.
The process repeats for group 3 and group 2.
Id | Name | Class | Armor Class | Attacks | Special | Reward 1 | Reward 2 |
0 | BUBBLY SLIME | Animal | 12 | 1d1 | 0 | 10 | |
1 | ORC | Fighter | 10 | 1d4 | 0 | 10 | |
2 | KOBOLD | Fighter | 8 | 1d2 +1 1d2 +1 | 0 | 10 | |
3 | UNDEAD KOBOLD | Undead | 10 | 1d4 +1 | 0 | 10 | |
4 | ROGUE | Thief | 10 | 1d4 2d2 +1 | 0 | 10 | |
5 | BUSHWACKER | Fighter | 8 | 1d6 +1 2d4 +1 | 0 | 10 | |
6 | HIGHWAYMAN | Fighter | 6 | 1d2 +1 1d2 +1 1d2 +1 1d2 +1 | 0 | 10 | |
7 | ZOMBIE | Undead | 4 | 1d6 | 0 | 10 | |
8 | CREEPING CRUD | Animal | 6 | 1d3 +1 | 0 | 10 | |
9 | GAS CLOUD | Enchanted | 10 | 1d4 | 0 | 10 | |
10 | LVL 1 MAGE | Mage | 4 | 2d2 | 1 | 11 | |
11 | LVL 1 PRIEST | Priest | 5 | 1d8 | 1 | 11 | |
12 | CREEPING COIN? | Enchanted | 4 | 1d1 | [Drain breath] | 2 | 4 |
13 | LVL 1 NINJA | Fighter | 5 | 1d4 1d4 1d4 | 1 | 11 | |
14 | VORPAL BUNNY | Animal | 6 | 1d6 1d8 | 1 | 11 | |
15 | CAPYBARA | Animal | 8 | 1d10 | 1 | 11 | |
16 | GIANT TOAD | Animal | 7 | 1d4 1d6 2d3 +2 | 1 | 11 | |
17 | COYOTE | Animal | 8 | 4d4 | 1 | 11 | |
18 | LVL 3 PRIEST | Priest | 4 | 1d8 +2 | 1 | 11 | |
19 | LVL 3 SAMURAI | Fighter | 5 | 1d4 +1 1d6 +1 1d4 +1 | 1 | 11 | |
20 | LVL 3 NINJA | Fighter | 3 | 1d4 1d4 1d4 1d4 1d4 | 2 | 12 | |
21 | WERE BEAR | Animal | 6 | 3d6 +1 | [Heal 1] | 2 | 12 |
22 | DRAGON FLY | Dragon | 4 | 1d4 1d4 1d6 | [Flame breath] | 2 | 12 |
23 | ROTTING CORPSE | Undead | 6 | 1d3 1d3 1d6 | 2 | 12 | |
24 | OGRE | Fighter | 5 | 2d6 | 2 | 12 | |
25 | HUGE SPIDER | Insect | 6 | 1d6 | 2 | 12 | |
26 | WERERAT | Were | 6 | 1d8 | 2 | 12 | |
27 | BORING BEETLE | Insect | 3 | 5d4 | 2 | 12 | |
28 | GAS DRAGON | Dragon | 3 | 1d4 1d4 3d6 | [Poison breath] | 2 | 12 |
29 | PRIESTESS | Priest | 4 | 1d6 +2 | 2 | 12 | |
30 | SWORDSMAN | Fighter | 3 | 2d7 | 3 | 13 | |
31 | HUGE SPIDER | Insect | 6 | 1d6 | 3 | 13 | |
32 | ATTACK DOG | Animal | 1 | 1d6 | 3 | 13 | |
33 | GARGOYLE | Enchanted | 5 | 1d3 1d3 1d6 1d4 | 3 | 13 | |
34 | GRAVE MIST | Undead | 4 | 1d4 1d4 1d8 | 3 | 13 | |
35 | DRAGON PUPPY | Dragon | 4 | 1d10 | [Cold breath] | 3 | 13 |
36 | WEREWOLF | Were | 5 | 2d4 2d4 | 3 | 13 | |
37 | SHADE | Undead | 7 | 1d4 +1 | [Drain 1] | 3 | 13 |
38 | BISHOP | Priest | 4 | 1d10 | 3 | 13 | |
39 | MINOR DAIMYO | Fighter | 2 | 1d12 | 3 | 13 | |
40 | LVL 5 MAGE | Mage | 10 | 1d4 | 4 | 14 | |
41 | LVL 4 THIEF | Thief | 10 | 1d6 2d6 | 4 | 14 | |
42 | KILLER WOLF | Animal | 0 | 2d4 2d4 | 4 | 14 | |
43 | SPIRIT | Mythical | 2 | 1d4 | [Heal 1] | 4 | 14 |
44 | GIANT SPIDER | Insect | 4 | 2d4 | 4 | 14 | |
45 | WERETIGER | Were | 4 | 2d6 2d6 1d4 | [Heal 1] | 4 | 14 |
46 | MEDUSALIZARD | Mythical | 6 | 1d3 | 4 | 14 | |
47 | LVL 5 PRIEST | Priest | 4 | 1d6 +2 | 4 | 14 | |
48 | LVL 6 NINJA | Fighter | 6 | 1d6 1d6 1d6 | 4 | 14 | |
49 | LVL 7 MAGE | Mage | 8 | 1d4 | 4 | 14 | |
50 | MASTER THIEF | Thief | 4 | 1d6 1d6 2d6 | 5 | 15 | |
51 | MAJOR DAIMYO | Fighter | 0 | 1d10 1d4 | 5 | 15 | |
52 | HIGH PRIEST | Priest | 3 | 1d8 +2 | 5 | 15 | |
53 | CHAMP SAMURAI | Fighter | 2 | 1d12 +2 | 5 | 15 | |
54 | ARCH MAGE | Mage | 9 | 1d4 | 5 | 15 | |
55 | MASTER THIEF | Thief | 3 | 1d8 3d8 | 5 | 15 | |
56 | GAZE HOUND | Animal | -1 | 1d2 | 5 | 15 | |
57 | OGRE LORD | Mage | 4 | 1d12 | [Heal 1] | 5 | 15 |
58 | TROLL | Fighter | 4 | 1d4 +4 1d4 +4 1d4 +4 | [Heal 3] | 5 | 15 |
59 | LIFESTEALER | Undead | 3 | 1d4 | [Drain 2] | 5 | 15 |
60 | NIGHTSTALKER | Undead | 4 | 1d6 | [Drain 1] | 6 | 16 |
61 | WYVERN | Animal | 3 | 2d8 1d6 | 6 | 16 | |
62 | LVL 8 PRIEST | Priest | 3 | 1d8 | 6 | 16 | |
63 | LVL 10 FIGHTER | Fighter | 0 | 1d12 1d12 | 6 | 16 | |
64 | LVL 7 MAGE | Mage | 8 | 1d4 | 6 | 16 | |
65 | LVL 7 THIEF | Thief | 4 | 1d8 3d8 | 6 | 16 | |
66 | LVL 8 NINJA | Fighter | 4 | 2d6 1d6 | 6 | 16 | |
67 | EARTH GIANT | Giant | 9 | 2d8 2d8 | 6 | 16 | |
68 | LESSER DEMON | Demon | 4 | 2d6 2d6 1d3 1d3 1d4 +4 | 6 | 16 | |
69 | CHIMERA | Animal | 2 | 1d3 1d3 1d4 1d4 2d4 3d4 | [Flame breath] | 6 | 16 |
70 | FIRE GIANT | Giant | 3 | 5d6 | 7 | 17 | |
71 | GORGON | Mythical | 2 | 2d6 | [Stone breath] | 7 | 17 |
72 | LVL 8 BISHOP | Priest | 2 | 1d8 +4 | 7 | 17 | |
73 | LVL 8 FIGHTER | Fighter | -1 | 1d12 +2 1d12 +2 | 7 | 17 | |
74 | LVL 10 MAGE | Mage | 10 | 1d4 | 7 | 17 | |
75 | THIEF | Thief | 4 | 1d8 1d3 3d8 2d10 | 7 | 17 | |
76 | MASTER NINJA | Fighter | 3 | 1d10 +3 1d10 +3 1d10 +3 | 7 | 17 | |
77 | MURPHY'S GHOST | Undead | -3 | 1d1 +1 | [Heal 1] | 3 | 3 |
78 | WILL O' WISP | Enchanted | -8 | 2d8 | 7 | 17 | |
79 | BLEEB | Animal | 0 | 1d8 +1 1d8 +1 | 7 | 17 | |
80 | FROST GIANT | Giant | 6 | 3d10 | 8 | 18 | |
81 | FIRE DRAGON | Dragon | -1 | 1d4 1d4 4d4 | [Flame breath] | 8 | 18 |
82 | HIGH PRIEST | Priest | 2 | 1d8 1d8 | 8 | 18 | |
83 | HIGH WIZARD | Mage | 4 | 1d4 | 8 | 18 | |
84 | MASTER THIEF | Thief | 2 | 1d8 5d8 | 8 | 18 | |
85 | HATAMOTO | Fighter | -1 | 3d8 3d8 3d8 | 8 | 18 | |
86 | VAMPIRE | Undead | -1 | 2d8 1d4 1d4 | [Drain 2] [Heal 1] | 8 | 18 |
87 | GREATER DEMON | Demon | -3 | 2d12 1d6 1d4 1d4 1d4 | [Heal 1] | 8 | 18 |
88 | POISON GIANT | Giant | 3 | 4d10 | [Poison breath] | 8 | 18 |
89 | DRAGON ZOMBIE | Undead | -2 | 1d8 1d8 3d12 | [Drain breath] | 8 | 18 |
90 | RAVER LORD | Animal | 10 | 3d12 3d12 | [Heal 2] | 9 | 19 |
91 | THE HIGH MASTER | Fighter | -2 | 3d12 3d12 3d6 | 9 | 19 | |
92 | FLACK | Animal | -3 | 4d8 +3 | [Cold breath] | 9 | 19 |
93 | ARCH MAGE | Mage | 0 | 1d4 | 9 | 19 | |
94 | MAELIFIC | Undead | -5 | 1d4 1d0 +1 | [Drain 3] [Heal 3] | 9 | 19 |
95 | VAMPIRE LORD | Undead | -5 | 1d4 | [Drain 4] [Heal 4] | 9 | 19 |
96 | W E R D N A | Mage | -7 | 8d5 8d5 | [Drain 4] [Heal 5] | 20 | 20 |
97 | HIGH NINJA | Fighter | -1 | 3d8 3d8 3d8 | 0 | 0 | |
98 | HIGH PRIEST | Priest | 2 | 1d8 +4 | 0 | 0 | |
99 | LVL 7 MAGE | Mage | 8 | 1d4 | 0 | 0 | |
100 | LVL 7 FIGHTER | Fighter | 0 | 1d12 1d12 | [Unique 1] | 21 | 21 |
Class
Class determines the odds of being friendly.Fighter | 11% |
Mage | 6% |
Priest | 16% |
Thief | 4% |
Midget (unused) | 31% |
Dragon | 26% |
All others | 1% |
Certain items, when equipped, will have a 50% chance of silently nullifying attacks from specific monster classes, should the monster decide to attack the character equipped with such an item. They do not affect spells or breath weapons.
Certain weapons deal double damage against specific monster classes.
Makanito never affects the undead. Zilwan and Dispell only affect the undead.
Class determines fighting style, though this is strictly an aesthetic detail.
Fighter | Arms |
Mage | Arms |
Priest | Arms |
Thief | Arms |
Midget | Arms |
Giant | Arms |
Mythical | Claws |
Dragon | Both |
Animal | Claws |
Were | Both |
Undead | Arms |
Demon | Arms |
Insect | Claws |
Enchanted | Claws |
A monster with “arms”
SWINGS, THRUSTS, STABS, SLASHES,
and CHOPS.
A monster with “claws”
TEARS, RIPS, GNAWS, BITES,
and CLAWS.
A monster with “both” can do any of those things.
Attacks
Simple hit dice to determine damage when a monster hits.Some monsters have multiple attacks, and they don’t always do the same amount of damage. For instance, the greater demon’s attack is:
2d12 1d6 1d4 1d4 1d4
That means it strikes five times, each strike has a separate chance to hit, and each landed hit inflicts the corresponding damage roll.
Special: X Breath
The monster has a breath attack of element type X. Any monster with a breath attack has a 60% chance of using it instead of attacking. Breath attacks hit all players for damage equal to half of the monster’s remaining HP. Characters equipped with an item with that elemental resistance, or who make a saving throw against breath will take half damage. If both conditions are met, they take 25% damage. Element type has no other effect. Stone breath, for instance, does not petrify; it merely indicates that characters equipped with stone elemental protection will take half damage.Special: Drain X
If you are hit, you will lose X levels, and your maxHP will be reduced to([newLevel]*
[oldMaxHP])
/[MaxLev]
, where MaxLev is the highest level you've reached without getting drained (switching classes resets your level but not your MaxLevel). You’ll be LOST if you drop below level 1!The creeping coins don't have this ability; they only have a breath attack with the Drain element.
Special: Heal X
The monster heals this many HP per round.Special: Unique 1
This is a property found only found in the Level 7 Fighters, found in the monster allocation center in Level 4. When you kill a group of this monster, the value decreases by 1, permanently, and from then on will never be fought again, not even by subsequent parties starting new games. In all of the Apple II disk images of Wizardry I on Asimov, this value is already set to 0! I’ve “fixed” this in my own copy by bringing it back to 1, which I believe is the intended starting value.If you encounter a monster whose "unique" value is 0, then you will fight its partner instead.
Reward 1 & Reward 2
Index values used to lookup the type of treasure the monster leaves. This is always based on the monster type that was initially selected for the encounter. Monsters types that populated the rear ranks are irrelevant.“Reward 1” almost always indicates an amount of loose gold, and “Reward 2” almost always indicates a treasure chest which may or may not have items inside. Whether you get reward type 1 or type 2 is not entirely random.
As described in a previous post, upon entering a dungeon level, the map will be seeded with nine treasure chests, which will be distributed in regions flagged as "rooms." Entering a room with a treasure chest guarantees an encounter, and the “Reward 2” column will be selected as the contents of the treasure chest. Treasures from standard encounters are selected from the “Reward 1” column and are usually just loose piles of gold.
If you set off an alarm trap, then you'll still get a "Reward 2" prize after winning the resulting encounter, without having to re-open the treasure chest, but the prize will be determined from the resulting encounter rather than from the initial one.
If you have a random encounter in a room-flagged area where there isn't any treasure chest, you will receive loose gold from the “Reward 1” column, but the amount will be doubled.
Id | Name | Partner | Mage Level | Priest Level | Spell Resistance |
0 | BUBBLY SLIME | 10% ORC | 0 | 0 | 0 |
1 | ORC | 20% KOBOLD | 0 | 0 | 0 |
2 | KOBOLD | 15% ORC | 0 | 0 | 0 |
3 | UNDEAD KOBOLD | 10% KOBOLD | 0 | 0 | 0 |
4 | ROGUE | 20% ORC | 0 | 0 | 0 |
5 | BUSHWACKER | 20% ZOMBIE | 0 | 0 | 0 |
6 | HIGHWAYMAN | 20% ZOMBIE | 0 | 0 | 0 |
7 | ZOMBIE | 20% CREEPING CRUD | 0 | 0 | 0 |
8 | CREEPING CRUD | 24% BUBBLY SLIME | 0 | 0 | 0 |
9 | GAS CLOUD | 15% BUBBLY SLIME | 2 | 0 | 0 |
10 | LVL 1 MAGE | 20% HIGHWAYMAN | 1 | 0 | 0 |
11 | LVL 1 PRIEST | 25% ROGUE | 0 | 1 | 0 |
12 | CREEPING COIN? | 100% CREEPING COIN? | 0 | 0 | 0 |
13 | LVL 1 NINJA | 20% LVL 1 NINJA | 0 | 0 | 0 |
14 | VORPAL BUNNY | 20% CAPYBARA | 0 | 0 | 0 |
15 | CAPYBARA | 20% COYOTE | 0 | 0 | 0 |
16 | GIANT TOAD | 20% COYOTE | 0 | 0 | 0 |
17 | COYOTE | 25% VORPAL BUNNY | 0 | 0 | 0 |
18 | LVL 3 PRIEST | 30% LVL 1 PRIEST | 0 | 2 | 0 |
19 | LVL 3 SAMURAI | 20% CREEPING COIN? | 1 | 0 | 0 |
20 | LVL 3 NINJA | 20% LVL 1 NINJA | 0 | 0 | 0 |
21 | WERE BEAR | 30% VORPAL BUNNY | 0 | 0 | 0 |
22 | DRAGON FLY | 0 | 0 | 20 | |
23 | ROTTING CORPSE | 10% GRAVE MIST | 0 | 0 | 0 |
24 | OGRE | 20% VORPAL BUNNY | 0 | 0 | 0 |
25 | HUGE SPIDER | 10% BORING BEETLE | 0 | 0 | 0 |
26 | WERERAT | 50% COYOTE | 0 | 0 | 0 |
27 | BORING BEETLE | 20% HUGE SPIDER | 0 | 0 | 0 |
28 | GAS DRAGON | 40% DRAGON FLY | 1 | 0 | 0 |
29 | PRIESTESS | 60% GAS DRAGON | 0 | 2 | 0 |
30 | SWORDSMAN | 35% ATTACK DOG | 0 | 0 | 0 |
31 | HUGE SPIDER | 10% SHADE | 0 | 0 | 0 |
32 | ATTACK DOG | 20% DRAGON FLY | 0 | 0 | 0 |
33 | GARGOYLE | 0 | 0 | 50 | |
34 | GRAVE MIST | 20% SHADE | 0 | 0 | 0 |
35 | DRAGON PUPPY | 10% WERERAT | 0 | 0 | 0 |
36 | WEREWOLF | 25% WERERAT | 0 | 0 | 0 |
37 | SHADE | 20% ROTTING CORPSE | 0 | 0 | 0 |
38 | BISHOP | 10% MINOR DAIMYO | 1 | 3 | 0 |
39 | MINOR DAIMYO | 20% BISHOP | 0 | 0 | 0 |
40 | LVL 5 MAGE | 20% LVL 4 THIEF | 3 | 0 | 0 |
41 | LVL 4 THIEF | 20% BISHOP | 0 | 0 | 0 |
42 | KILLER WOLF | 15% DRAGON PUPPY | 0 | 0 | 0 |
43 | SPIRIT | 20% GARGOYLE | 3 | 0 | 25 |
44 | GIANT SPIDER | 20% HUGE SPIDER | 0 | 0 | 0 |
45 | WERETIGER | 20% WEREWOLF | 0 | 0 | 0 |
46 | MEDUSALIZARD | 20% SPIRIT | 0 | 0 | 0 |
47 | LVL 5 PRIEST | 20% LVL 6 NINJA | 0 | 3 | 0 |
48 | LVL 6 NINJA | 20% MASTER THIEF | 0 | 0 | 0 |
49 | LVL 7 MAGE | 20% LVL 6 NINJA | 4 | 0 | 0 |
50 | MASTER THIEF | 10% LVL 5 PRIEST | 0 | 0 | 0 |
51 | MAJOR DAIMYO | 50% LVL 5 PRIEST | 0 | 0 | 20 |
52 | HIGH PRIEST | 20% CHAMP SAMURAI | 0 | 5 | 0 |
53 | CHAMP SAMURAI | 25% HIGH PRIEST | 1 | 0 | 0 |
54 | ARCH MAGE | 30% CHAMP SAMURAI | 2 | 0 | 0 |
55 | MASTER THIEF | 25% ARCH MAGE | 0 | 0 | 0 |
56 | GAZE HOUND | 20% GAZE HOUND | 0 | 0 | 0 |
57 | OGRE LORD | 10% TROLL | 3 | 0 | 0 |
58 | TROLL | 5% TROLL | 0 | 0 | 0 |
59 | LIFESTEALER | 50% LIFESTEALER | 3 | 3 | 20 |
60 | NIGHTSTALKER | 23% OGRE LORD | 0 | 0 | 25 |
61 | WYVERN | 20% SPIRIT | 0 | 0 | 0 |
62 | LVL 8 PRIEST | 20% WYVERN | 0 | 4 | 0 |
63 | LVL 10 FIGHTER | 10% LVL 10 FIGHTER | 0 | 0 | 0 |
64 | LVL 7 MAGE | 30% WYVERN | 5 | 0 | 0 |
65 | LVL 7 THIEF | 20% LVL 8 PRIEST | 0 | 0 | 0 |
66 | LVL 8 NINJA | 20% NIGHTSTALKER | 0 | 0 | 0 |
67 | EARTH GIANT | 0 | 0 | 85 | |
68 | LESSER DEMON | 80% LVL 8 NINJA | 3 | 0 | 60 |
69 | CHIMERA | 20% ARCH MAGE | 0 | 0 | 0 |
70 | FIRE GIANT | 10% LESSER DEMON | 0 | 0 | 0 |
71 | GORGON | 50% CHIMERA | 0 | 0 | 0 |
72 | LVL 8 BISHOP | 20% GORGON | 3 | 4 | 0 |
73 | LVL 8 FIGHTER | 20% LVL 8 FIGHTER | 0 | 0 | 0 |
74 | LVL 10 MAGE | 30% GORGON | 5 | 0 | 0 |
75 | THIEF | 20% GORGON | 0 | 0 | 0 |
76 | MASTER NINJA | 30% LVL 7 MAGE | 0 | 0 | 0 |
77 | MURPHY'S GHOST | 80% MURPHY'S GHOST | 0 | 0 | 40 |
78 | WILL O' WISP | 0 | 0 | 95 | |
79 | BLEEB | 20% MASTER NINJA | 0 | 0 | 0 |
80 | FROST GIANT | 30% THIEF | 0 | 0 | 95 |
81 | FIRE DRAGON | 5 | 0 | 0 | |
82 | HIGH PRIEST | 100% FIRE GIANT | 0 | 6 | 0 |
83 | HIGH WIZARD | 100% LVL 8 BISHOP | 6 | 0 | 0 |
84 | MASTER THIEF | 100% LVL 8 FIGHTER | 0 | 0 | 0 |
85 | HATAMOTO | 100% LVL 10 MAGE | 0 | 0 | 0 |
86 | VAMPIRE | 15% VAMPIRE | 3 | 0 | 20 |
87 | GREATER DEMON | 70% LVL 8 NINJA | 5 | 0 | 95 |
88 | POISON GIANT | 50% WILL O' WISP | 0 | 0 | 95 |
89 | DRAGON ZOMBIE | 10% BLEEB | 5 | 0 | 25 |
90 | RAVER LORD | 100% HIGH PRIEST | 5 | 4 | 0 |
91 | THE HIGH MASTER | 100% HATAMOTO | 0 | 0 | 0 |
92 | FLACK | 100% MURPHY'S GHOST | 0 | 0 | 0 |
93 | ARCH MAGE | 100% HIGH WIZARD | 6 | 0 | 0 |
94 | MAELIFIC | 100% POISON GIANT | 7 | 0 | 50 |
95 | VAMPIRE LORD | 100% VAMPIRE | 6 | 0 | 0 |
96 | W E R D N A | 100% VAMPIRE LORD | 7 | 7 | 70 |
97 | HIGH NINJA | 0 | 0 | 0 | |
98 | HIGH PRIEST | 100% HIGH NINJA | 0 | 5 | 0 |
99 | LVL 7 MAGE | 100% HIGH PRIEST | 4 | 0 | 0 |
100 | LVL 7 FIGHTER | 100% LVL 7 MAGE | 0 | 0 | 0 |
Partner
When a monster encounter is selected, it will be in the first monster group. There is a chance that it will come with a “partner,” if it has one, in the second monster group. This is recursive; if the partner type is selected, then that partner also gets a chance of having its partner in the next group slot. There is a limit of 4 groups, or MazeLevel+1, whichever is lower.For example, bubbly slimes have a partner value of 10% orc. So if you encounter them, there is a 10% chance that orcs will spawn too. If this happens, then since orcs have a partner value of 20% kobold, there would be a 20% chance of the orcs coming with kobolds, and so on.
Mage Level
The highest level of mage spell that the monster may cast.Monster mage logic:
- Monsters with any mage spells have a 75% of casting instead of attacking.
- The monster then selects a random value from the right column of this table, according to the odds in the left column:
71% 0 20.59% 1 5.97% 2 1.73% 3 0.5% 4 0.15% 5 0.06% 6 - This number is subtracted from the Mage Level value, but it won’t drop below 1.
- Finally, the monster picks one of two spells within that level. There is a 66% chance of picking spell A, and a 34% chance of picking spell B.
- After casting the spell, there is a
1 / (Monster group size + 2)
chance that the group's mage level decreases by one point, affecting all individuals within it.
Monster mage spells (levels do not completely correspond to player spell levels):
A | B | |
1 | Katino | Halito |
2 | Dilto | Halito |
3 | Molito | Mahalito |
4 | Dalto | Lahalito |
5 | Lahalito | Madalto |
6 | Madalto | Zilwan |
7 | Tiltowait | Tiltowait |
It's curious that Zilwan is one of the spells, as it will never affect anyone in your party!
Priest Level
Priest spellcasting logic is a bit different.- A priest spellcaster who did not cast a mage spell has a 75% chance of casting a priest spell instead of attacking.
- When casting a priest spell, monsters always select the highest value allowed.
- There is still a 66% chance of selecting spell A and a 34% chance of selecting spell B.
- There is a
1 / (Monster group size + 2)
chance that the group's priest level decreases by one point. Same as with mage spells.
A | B | |
1 | Badios | Badios |
2 | Montino | Montino |
3 | Badios | Badial |
4 | Badial | Badial |
5 | Badialma | Badi |
6 | Lorto | Mabadi |
7 | Mabadi | Mabadi |
Spell Resistance
The monster’s percentage chance to resist certain spells. A resisted spell has no effect on the monster.Spells subject to SpellResistance are:
Badios, Badial, Badialma, Litokan, Lorto, Malikto, Halito, Mahalito, Molito, Dalto, Lahalito, Madalto, Zilwan, Tiltowait
Id | Name | Elemental Resistance | Abilities | XP |
0 | BUBBLY SLIME | Physical Magic | 55 | |
1 | ORC | Fire | Sleep Run | 235 |
2 | KOBOLD | Physical Cold | Sleep Run | 415 |
3 | UNDEAD KOBOLD | Fire Cold | 230 | |
4 | ROGUE | Sleep Run | 380 | |
5 | BUSHWACKER | Sleep Run | 620 | |
6 | HIGHWAYMAN | Critical Sleep Run | 840 | |
7 | ZOMBIE | Paralyze | 520 | |
8 | CREEPING CRUD | Cold Magic | Poison | 550 |
9 | GAS CLOUD | Paralyze Run | 350 | |
10 | LVL 1 MAGE | Sleep Run | 475 | |
11 | LVL 1 PRIEST | Sleep Run | 515 | |
12 | CREEPING COIN? | Fire Cold Poison Drain Stone | Call | 920 |
13 | LVL 1 NINJA | Critical Sleep | 600 | |
14 | VORPAL BUNNY | Cold | Critical Run | 735 |
15 | CAPYBARA | Poison Run | 520 | |
16 | GIANT TOAD | Fire | Poison Run | 795 |
17 | COYOTE | Poison Drain Stone | Run | 780 |
18 | LVL 3 PRIEST | Poison Sleep Run | 990 | |
19 | LVL 3 SAMURAI | Run | 795 | |
20 | LVL 3 NINJA | Poison Critical | 1360 | |
21 | WERE BEAR | Cold Poison | Poison Paralyze Run | 1320 |
22 | DRAGON FLY | Fire | Sleep | 1275 |
23 | ROTTING CORPSE | Paralyze | 680 | |
24 | OGRE | Sleep Run | 960 | |
25 | HUGE SPIDER | Poison Sleep | 600 | |
26 | WERERAT | Magic | Sleep | 755 |
27 | BORING BEETLE | 1120 | ||
28 | GAS DRAGON | 2075 | ||
29 | PRIESTESS | Sleep | 870 | |
30 | SWORDSMAN | Sleep | 960 | |
31 | HUGE SPIDER | Poison Sleep | 600 | |
32 | ATTACK DOG | Sleep Run | 1120 | |
33 | GARGOYLE | Magic | 2435 | |
34 | GRAVE MIST | Paralyze | 1080 | |
35 | DRAGON PUPPY | 2280 | ||
36 | WEREWOLF | Magic | 975 | |
37 | SHADE | Magic | 875 | |
38 | BISHOP | Sleep | 1135 | |
39 | MINOR DAIMYO | Sleep | 1200 | |
40 | LVL 5 MAGE | Sleep | 620 | |
41 | LVL 4 THIEF | 740 | ||
42 | KILLER WOLF | 1460 | ||
43 | SPIRIT | Magic | Poison | 1245 |
44 | GIANT SPIDER | Poison | 960 | |
45 | WERETIGER | Magic | Poison Sleep | 1405 |
46 | MEDUSALIZARD | Stone | 1040 | |
47 | LVL 5 PRIEST | 1220 | ||
48 | LVL 6 NINJA | 1520 | ||
49 | LVL 7 MAGE | Sleep | 1000 | |
50 | MASTER THIEF | Sleep Run | 960 | |
51 | MAJOR DAIMYO | 2340 | ||
52 | HIGH PRIEST | 2160 | ||
53 | CHAMP SAMURAI | 2395 | ||
54 | ARCH MAGE | 790 | ||
55 | MASTER THIEF | Run | 1140 | |
56 | GAZE HOUND | Magic | Paralyze Run | 1235 |
57 | OGRE LORD | 1790 | ||
58 | TROLL | 1720 | ||
59 | LIFESTEALER | Poison Drain Stone Magic | 2240 | |
60 | NIGHTSTALKER | Magic | 1475 | |
61 | WYVERN | Poison | 1540 | |
62 | LVL 8 PRIEST | 1720 | ||
63 | LVL 10 FIGHTER | 1900 | ||
64 | LVL 7 MAGE | 1240 | ||
65 | LVL 7 THIEF | Run | 1220 | |
66 | LVL 8 NINJA | Critical | 1020 | |
67 | EARTH GIANT | Magic | 20435 | |
68 | LESSER DEMON | Call | 5100 | |
69 | CHIMERA | Fire | 3515 | |
70 | FIRE GIANT | Fire | 2115 | |
71 | GORGON | 2920 | ||
72 | LVL 8 BISHOP | 2060 | ||
73 | LVL 8 FIGHTER | 2140 | ||
74 | LVL 10 MAGE | 1400 | ||
75 | THIEF | Run | 1640 | |
76 | MASTER NINJA | Critical | 1280 | |
77 | MURPHY'S GHOST | Fire Cold Poison Drain Stone Magic | Sleep | 4450 |
78 | WILL O' WISP | 42840 | ||
79 | BLEEB | Physical Fire Cold Poison Drain Stone Magic | Run Call | 3300 |
80 | FROST GIANT | Cold | 40875 | |
81 | FIRE DRAGON | 5000 | ||
82 | HIGH PRIEST | 3300 | ||
83 | HIGH WIZARD | Fire | 2395 | |
84 | MASTER THIEF | Poison | Run | 1935 |
85 | HATAMOTO | Critical | 1600 | |
86 | VAMPIRE | Poison Drain Stone | Paralyze | 3330 |
87 | GREATER DEMON | Poison Paralyze Call | 44090 | |
88 | POISON GIANT | 40840 | ||
89 | DRAGON ZOMBIE | 5200 | ||
90 | RAVER LORD | Fire | 4155 | |
91 | THE HIGH MASTER | Fire Cold Poison Drain Stone Magic | Critical | 3000 |
92 | FLACK | Physical Fire Cold Poison Drain Stone Magic | Stone Poison Paralyze Critical | 9200 |
93 | ARCH MAGE | 3160 | ||
94 | MAELIFIC | Poison Paralyze | 7460 | |
95 | VAMPIRE LORD | Paralyze | 7320 | |
96 | W E R D N A | Fire Cold Poison | Stone Poison Paralyze Critical | 15880 |
97 | HIGH NINJA | Critical | 1600 | |
98 | HIGH PRIEST | 2200 | ||
99 | LVL 7 MAGE | Sleep | 1000 | |
100 | LVL 7 FIGHTER | 1900 |
Elemental Resistance
Spell damage from group targeting-spells is cut in half if the monster resists the corresponding element. Physical resistance does not affect non-spell damage!Element | Spells |
Fire | Litokan, Mahalito, Lahalito |
Physical | Lorto, Malikto, Molito, Tiltowait |
Cold | Dalto, Madalto |
Poison, Drain, Stone, and Magic elemental resistances do nothing, because none of the group-targeting spells in Wizardry are aligned to those elements.
Abilities
- Sleep – The only “bad” ability. Monsters with this ability are affected by Katino. Any others are not.
- Run – If the monster party is demoralized, then each monster with this ability has a 65% chance to run each turn.
- Critical – When the monster lands one or more successful hits, it has a
[Level * 2%]
chance, up to a maximum of 50%, to instantly kill. - Poison – Sets poison rate to 1 on a successful hit.
- Paralyze – Inflicts paralysis on a successful hit.
- Call – If the monster group has fewer than 5 monsters in it, then each monster has a 75% chance of calling for help instead of attacking. The chance that a call for help will be successful is
(MonsterLevel * 5%)
. - Stone – Inflicts stone status on a successful hit.
XP calculation
Interestingly, the XP value of a monster is not actually part of the monster tables, but is calculated from the monster’s stats!To get the XP value, calculate each line item, and then add them up.
If a line item’s governning stat is zero (AC excepted), then it doesn’t count. For instance, the second item uses MageLevel. If a monster’s MageLevel is zero, then the algorithm just skips that line item rather than plugging in a value of zero.
- [Hit dice count] * [Hit dice sides] * 20 * [1 + HasBreath]
- HasBreath = 0 normally, HasBreath = 1 if the monster uses a breath attack.
- + 35 * 2^[MageLevel – 1]
- + 35 * 2^[PriestLevel – 1]
- + 200 * 2^[DrainLevel – 1]
- + 90 * 2^[HealLevel – 1]
- - 40 * [ArmorClass – 11]
- + 30 * 2^[AttackCount – 1]
- (only if the monster has at least two attacks!)
- + 40 * 2^[SpellResistance/10]
- + 10000 * 2^[SpellResistance/10 – 8]
- (only if the monster has at least 80 Spell Resistance! This line item is due to a bug in the way Wizardry calculates multiplication of large numbers.)
- + 35 * 2^[ElementalResistances – 1]
- Count the number of elemental resistances EXCEPT for physical!
- + 40 * 2^[Abilities -1]
- Count the number of abilities, including sleep.
To illustrate this, I’ll show how the Greater Demon’s XP gets calculated.
- [Hit dice count] * [Hit dice sides] * 20 * [1 + HasBreath]
- 11 * 8 * 20 * [1+0]
- 11 * 8 * 20 * 1
- 1760
- + 35 * 2^[MageLevel – 1]
- + 35 * 2^[5-1]
- + 35 * 2^4
- + 35 * 16
- + 560
- + 90 * 2^[HealLevel – 1]
- + 90 * 2^[1 – 1]
- + 90 * 2^0
- + 90 * 1
- + 90
- – 40 * [ArmorClass – 11]
- – 40 * [-3-11]
- – 40 * -14
- + 560
- + 30 * 2^[AttackCount – 1]
- + 30 * 2^[5-1]
- + 30 * 2^4
- + 30 * 16
- + 480
- + 40 * 2^[SpellResistance/10]
- + 40 * 2^[95/10]
- + 40 * 2^9
- + 40 * 512
- + 20480
- + 10000 * 2^[SpellResistance/10 – 8]
- + 10000 * 2^[95/10 – 8]
- + 10000 * 2^[9-8]
- + 10000 * 2^1
- + 10000 * 2
- + 20000
- + 40 * 2^[Abilities -1]
- + 40 * 2^[3-1]
- + 40 * 2^2
- + 40 * 4
- + 160
Summing them all up:
- 1760
- + 560
- + 90
- + 560
- + 480
- + 20480
- + 20000
- + 160
- = 44090
Next post I’ll go into the treasure system and items, and should be my last word on Wizardry I.
Huh, I'm fairly sure later versions of Wizardry had Katino affect considerably more monsters than these.
ReplyDeleteImpressive work on this one!
ReplyDeleteInteresting to see. As a programmer, I'm curious. Can you elaborate on the bug in the XP calc related to the spell resistance?
ReplyDeleteYou mentioned in the maps section that there was another limited encounter that happens only 5 times. Is that a property of the map data then, since there isn't a corresponding 'unique 5' property here?
Integers in Apple PASCAL are always 16-bits signed, which means there's no native method for handling integers greater than 32,767. Since XP rewards can be higher than that, multiple integers are used, as sort of a hacky way of implementing long integers, and Woodhead had to write custom routines to add, multiply, and exponentiate these long integers.
DeleteThis is the function used to add two long integers:
PROCEDURE ADDLONGS( VAR FIRST: TWIZLONG; (* P010005 *)
VAR SECOND: TWIZLONG);
BEGIN
FIRST.LOW := FIRST.LOW + SECOND.LOW;
IF FIRST.LOW >= 10000 THEN
BEGIN
FIRST.MID := FIRST.MID + 1;
FIRST.LOW := FIRST.LOW - 10000
END;
FIRST.MID := FIRST.MID + SECOND.MID;
IF FIRST.MID >= 10000 THEN
BEGIN
FIRST.HIGH := FIRST.HIGH + 1;
FIRST.MID := FIRST.MID - 10000
END;
FIRST.HIGH := FIRST.HIGH + SECOND.HIGH;
IF FIRST.HIGH >= 10000 THEN
BEGIN
FIRST.HIGH := 9999;
FIRST.MID := 9999;
FIRST.LOW := 9999
END
END;
Normally this would work fine. However, Woodhead performs exponential calculations like this:
WHILE MULTIPLY > 0 DO
BEGIN
MULTIPLY := MULTIPLY - 1;
ADDLONGS( KILLEXPX, KILLEXPX)
END;
Can you see the problem? If not, try walking through the code by hand. Assume that Multiply begins at 9, that KILLEXPX.LOW is initially 40, and bear in mind that Pascal passes arguments in by reference, not by value.
Regarding the maps, yes, this is a feature of the maps data blocks. The Unique property pertains to a monster class, not to an encounter. There are multiple monster types which can be encountered on that spot on Map 3, and they do not become extinct when you exhaust this encounter spot; they will continue to spawn randomly on the lower floors where they would naturally occur. It's the encounter spot itself that vanishes, reverting to a normal treasure room where the normal Map 3 encounter rates apply.
DeleteThe "Unique" property, once depleted to zero, indicates that the monster will never appear again, anywhere. It's maybe a bit confusing because the LVL 7 Fighters only appear in one spot on level 4 anyway, but to illustrate, suppose you hacked the disk images to make Kobolds "Unique 5." Each time you win a random encounter with Kobolds in the vanguard, its Unique property will decrement by 1, until hit hits 0, and then you will never fight Kobolds again. Should you randomly encounter Monster ID=2, the engine will recognize that this monster is gone, and you'll get their partners, Orcs, instead. The Orcs themselves have a 20% chance of coming with Kobold buddies. Instead you get more Orcs.
And for more fun hypotheticals, suppose you hack the counter of Murphy's Ghosts and make them extinct. Since their partners are also Murphy's Ghosts, you'll send Wizardry into an infinite loop and freeze the game should you encounter any. I've done it!
Oh, and from a programmer's perspective, "Unique" can be any signed 16-bit integer value. Any negative value is essentially infinity, and in fact, every monster except for LVL 7 Fighters are "Unique -1." The Unique property is ignored if it's less than zero.
DeleteI only listed the property as "Unique 1" because the only monster in the game that uses it in a meaningful way, has a value of 1.
Map encounter spots also have auto-decrementing "Unique" properties, but the fixed fight in Map 3 is the only one with a positive value. For almost all others, it's -1, i.e. infinite. The Thundarr encounter in Level 6 is 0 in most copies, but is -1 in mine. The various messages and fire dragons on the west block in Level 7 are 0 in all extant copies, including mine.
I think I see what the problem is with the code, but isn’t that second routine you copied just multiplication? Presumably exponentiation would need a third routine to call it.
DeleteThat’s funny he was effectively working in base 10000, but did he really need a third place for anything (i.e. numbers larger than 1e8)?
ADDLONGS(KILLEXPX, KILLEXPX) is meant to double the value of KILLEXPX each time it is called. So, the loop is meant to be the equivalent of this pseudocode:
DeleteKILLEXPX := KILLEXPX * 2^MULTIPLY
Ah, right, because Killexp gets reassigned each time through. Yuck, it’s like a functional programmer’s nightmare, but then this *is* 1981.
DeleteRight, I see the bug. Whenever you overflow the LOW and MID gets incremented, next the MIDs of both first and second are added together, and because both sides are actually the same reference, the second MID is also already incremented by the LOW step, so you get extra large bonus XP.
DeleteIf the numbers were large enough, this same bug would apply to the HIGH step.
This is clearly homespun code. I don't think I've ever seen anyone implement higher bit math in this fashion. But understandable, given that in 1980 you can't just google the best practices of how to do something :P
Thanks for elaborating on both questions! That was fascinating.
Thread necromancy time!
DeleteIs this bug also connected to the infamous I-9 bug (and its brethren)?
It is unrelated. The bug is an unchecked buffer overflow; a successful identify flips a bit in the item record array, but trying to identify item nine causes it to seek the ninth element in the item array, which is only eight elements long.
Delete(Ahab here - I can't seem to publish comments while logged on today)
I'm sorry, I wasn't thinking clearly. I understand the bug, and what I really meant to ask (but failed utterly) was: Is the I-9 bug (along with its friends) related to the kludged up bigint package using base-10000 words?
DeleteThat's what I thought you were asking. The I-9 bug is not related to the bigint kludge (although the fact that it gives you exactly 100,000,000 XP as opposed to some binary number is related to that).
DeleteI'm apparently not writing very clearly, because it's your parenthetical part that actually answers the question I meant to ask. Thanks!
Delete(I really should have asked, "Is the 100,000,000-point bonus from the I-9 bug related to the bigint kludge?")
Great work, this is really fascinating, especially having just played it.
ReplyDeleteSo I just realized that my class friendliness odds were completely wrong this whole time. Updated them.
ReplyDeleteOn closer examination of the reverse-engineered code, it turns out that not only does nothing in the game inflict the AFRAID effect on either monsters or player characters, but also that nothing inflicts PARALYZE on monsters either. (Of course, characters can be PARALYZEd.) The MANIFO spell claims to "hold" monsters in its visible output, but under the hood it turns out that it inflicts ASLEEP status, which wears off accordingly. (Look at procedures DOSLEEP, DOHOLD, and ISISNOT. The key is ISISNOT's final parameter DAMTYPE, which is 3 when it's called from DOSLEEP and 0 when it's called from DOHOLD, but which sets status to ASLEEP in both cases.)
ReplyDeleteThere's an extra complication related to monster mage and priest spell levels. Everything you report on this here is correct, but when a monster decides to cast a mage or priest spell and calls GETMAGSP or GETPRISP, respectively, there is a chance that the spell level for the monster's group (the maximum mage spell level for GETMAGSP, and the priest spell level for GETPRISP) will be *reduced* for subsequent mage or priest spell casts for every monster in that group. This happens when the corresponding procedure calls SPELLEZR, with either BATTLERC[ GROUPI].B.MAGSPELS or BATTLERC[ GROUPI].B.PRISPELS as its reference parameter. There is a chance of 1 in (BATTLERC[ GROUPI].A.ALIVECNT + 2), or 1 in (living group population plus 2) that this reference parameter will be decremented by 1, which would affect all subsequent calls to GETMAGSP or GETPRISP for that group. (I think I may have seen this effect once, long before I understood it, when I saw a priest cast a spell that I thought shouldn't have been possible for its spell level, but if other priests in that group had reduced the spell level by previous casting, it would explain things.)
ReplyDeleteAm I correct in my interpretation of the code, that this affects the monster group permanently? E.g. - Werdna can only ever cast Tiltowait on you once, and only if it's the first spell he casts on you.
DeleteYes, it permanently affects the monster group. I think the idea is to (very crudely) simulate the fact that monster spellcasters should have a limited supply of spells.
DeleteBut your suggested example with Werdna interprets things a bit too harshly. Remember that there's a "+ 2" in the chance roll which determines whether the maximum spell level gets decremented. Werdna is in a group by himself with an ALIVECNT of 1, so the + 2 makes the roll a 1-in-3 chance: each time Werdna casts any spell, he has a 1-in-3 chance of losing all further opportunity to cast TILTOWAIT.
Ah, right. I forgot about the +2 modifier.
DeleteA comment on breath attacks: you write, "Breath attacks hit all players for damage equal to half of the monster’s remaining HP. Characters equipped with an item with that elemental resistance, or who make a saving throw against breath will take half damage." The way this is written, it sounds like breath damage can only be reduced by half, either by elemental protection or making one's saving throw. Actually, the effect is cumulative, so if a character has protection against the breath element *and* makes the saving through, the character only takes about a quarter of the normal damage. One more picky point: the division in "half of the monster's remaining HP" is rounded down, while that in "half damage" (from either saving throw or elemental protection) is rounded *up*.
ReplyDelete"saving through" -- saving *throw*, doh.
Deletehello Abab. I notice twice with the entries of MAELIFIC, you listed "1d0"? How does a 0 sided die work?
ReplyDeleteShort answer is that "1d0" always resolves to zero, and consequently "1d0 +1" resolves to 1. I am not 100% certain of this, but I'm pretty sure of it. I'm also pretty sure that this is a data entry error and it was meant to be "1d1," but the end result is the same.
DeleteThe code for resolving dice rolls looks like this:
BEGIN
POINTS := 0;
WHILE HITHEAL.HITS > 0 DO
BEGIN
POINTS := POINTS + (RANDOM MOD HITHEAL.HITRANGE) + 1;
HITHEAL.HITS := HITHEAL.HITS - 1
END;
CALCPTS := POINTS + HITHEAL.HITMIN
END;
HITHEAL.HITS is the number of dice. HITHEAL.HITRANGE is the number of sides. HITHEAL.HITMIN is the plus bonus. CALCPTS is the return value.
MOD 0 would throw an error. I'm not sure how Apple Pascal handles errors, but my guess is that the code would escape the BEGIN/END block and continue running at this line:
CALCPTS := POINTS + HITHEAL.HITMIN
...which would essentially be adding 1 to 0 and returning the sum.