User Guide
Quick Reference
Modding
Development
User Guide
Quick Reference
Modding
Development
ricorl stub
An explanation of how weapons damage enemies (and, eventually, how enemies damage you!) These documents are based on the Doomsday source code; hopefully most of it should also apply to the original versions of the games and other source ports but I haven't actually checked that.
This article will often use the standard AD&D “xDy” terminology. If you're not familiar with that, it means to roll a y-sided die x times, and sum up the results. (In other words, generate x random numbers between 1 and y, inclusive, and add them together.)
Note the difference between, for example, 5*(1d3) and 5d3. The former can produce only three results (namely 5, 10, or 15) each with equal probability. The latter can produce any value between 5 and 15, inclusive, with values closer to 10 being more likely to occur than values closer to 5 or 15.
Non-projectile attacks such as fists, fangs, or chainsaws.
A player's unarmed attack does 2*(1d10) damage.
If the player has collected a Berserk at some point during the level and not died since, an unarmed attack will do 20*(1d10) damage.
Like the fist, 2*(1d10) per hit. The difference obviously is that the Chainsaw gets in more hits in the same amount of time than using the fist would, though the Chainsaw does have an arguably negiable 1 unit additional range over the fist.
These weapons, when fired, hit their targets practically instantaneously.
Fires one pellet worth 5*(1d3) damage.
Fires seven pellets, each worth 5*(1d3) damage, scattered in the general direction the shotgun is aimed. (Each pellet gets a separate damage calculation.)
Just like the Shotgun, only 20 pellets are fired instead of 7.
Fires pellets worth 5*(1d3) damage, only more quickly than the Pistol.
Missile type weapons all do DP*(1d8) damage, where DP is a damage parameter that depends on the missile type. A chart follows:
Type | DP | Note |
---|---|---|
Rocket | 20 | |
Plasma | 5 | |
BFG9000 | 100 | |
Troopshot | 3 | Imp attack |
Lost Soul | 3 | |
Arachnoplasma | 5 | Arachnotron attack |
Headshot | 5 | Cacodemon attack |
Bruisershot | 8 | Baron of Hell attack |
Fatshot | 8 | Mancubus attack |
Tracer | 10 | Revenant attack |
Some missile attacks may also cause secondary damage upon impact.
Enemy missile attacks do not damage other enemies of the same type. (Players can happily missile each other, though.)
Not entirely sure how this works exactly, but my here's my best guess. Explosions due to rocket impacts (and exploding barrels) cause 128 damage to anything directly at the center of the explosion; a target x units away from the center of the explosion takes 128 - x damage. (If this is 0 or less, then the target is out of range and no damage is taken.)
For comparison, rocketing a wall at point blank causes 112 damage to the player. (This makes sense when you consider that the player object has a radius of 16 units.)
Cyberdemons and Spider Masterminds are immune to explosive damage. If you intend on rocketing one to death, aim carefully. :)
Upon impact of the BFG9000's main blast, 40 damage traces are sent out at regular intervals from the location of the player who fired the blast. The traces begin at -90 degrees from the direction which the BFG9000 blast was fired (note that this is not necessarily the direction the player is currently facing) and end at +90 degrees. For example, if a BFG blast was fired due north, traces would be sent starting from due east of the firing player to due west.
Any target along a damage trace receives 15d8 damage. (Damage is calculated separately for each trace.) A single target may be hit by multiple traces, especially if the target is at close range to the firing player.
Player characters have one of three armor classes at any given time depending on the last suit of armor acquired: 0 (no armor), 1 (green armor), or 2 (blue armor). Their effects are as follows:
AC 0: no damage reduction.
AC 1: damage is reduced by 1/3 (round down) or however many armor points are remaining, whichever is smaller.
AC 2: damage is reduced by 1/2 (round down) or however many armor points are remaining, whichever is smaller.
The amount of damage the armor reduces is subtracted from remaining armor points instead of remaining health.
Collecting a small armor bonus does not change AC unless the player is currently at AC 0 (in which case they will be upgraded to AC 1).
Damage done to a player is halved if playing the “I'm too young to die!” difficulty. This halving occurs before damage reduction due to armor.
Pain is the chance (out of 256) of an enemy being briefly stunned by an attack.
Enemy | HP | Pain |
---|---|---|
Barrel | 20 | N/A |
Former Human | 20 | 200 |
Former Sargeant | 30 | 170 |
Wolf SS | 50 | 170 |
Imp | 60 | 200 |
Chaingun Guy | 70 | 170 |
Commander Keen | 100 | 256 |
Lost Soul | 100 | 256 |
Demon | 150 | 180 |
Spectre | 150 | 180 |
Boss Brain | 250 | 255 |
Revenant | 300 | 100 |
Cacodemon | 400 | 128 |
Pain Elemental | 400 | 128 |
Arachnotron | 500 | 128 |
Hell Knight | 500 | 50 |
Mancubus | 600 | 80 |
Archvile | 700 | 10 |
Baron of Hell | 1000 | 50 |
Boss Target | 1000 | N/A |
Spider Mastermind | 3000 | 40 |
Cyberdemon | 4000 | 20 |
This section is under construction. For now, enjoy this enemy statistics chart.
Pain is the chance (out of 256) of an enemy being briefly stunned by an attack.
Drop is the item an enemy may drop upon defeat.
Drop Chance is the chance (out of 256) that the enemy will drop an item.
Enemy | HP | Pain | Drop | Drop Chance |
---|---|---|---|---|
Chicken (Enemy) | 10 | 200 | ||
Gargoyle | 40 | 200 | ||
Pod | 45 | 255 | ||
Fire Gargoyle | 80 | 200 | ||
Golem | 80 | 128 | Rod Crystal x3 | 84 |
Golem Ghost | 80 | 128 | Rod Crystal x3 | 84 |
Chicken (Player) | 100 | 255 | ||
Nitrogolem | 100 | 64 | Rod Crystal x3 | 84 |
Nitrogolem Ghost | 100 | 64 | Rod Crystal x3 | 84 |
Sabreclaw | 150 | 32 | Lesser Runes x20 | 84 |
Disciple | 180 | 64 | Claw Orb x10 | 84 |
Tome of Power | 4 | |||
Warrior | 200 | 100 | Ethereal Arrows x5 | 84 |
Warrior Ghost | 200 | 100 | Ethereal Arrows x5 | 84 |
Weredragon | 220 | 100 | Ethereal Arrows x10 | 84 |
Ophidian | 280 | 48 | Flame Orb x5 | 84 |
Ironlich | 700 | 32 | Claw Orb x10 | 84 |
Morph Ovum | 51 | |||
D'Sparil | 2000 | 56 | ||
Maulotaur | 3000 | 25 | Mystic Urn | 51 |
Flame Orb x10 | 84 | |||
D'Sparil | 3500 | 32 |
This section is still under construction.
Armor handling is a bit more complicated in Hexen than in Heretic or DOOM. Player characters can collect up to 4 pieces of armor, and while a total Armor Class value is shown on the HUD, Hexen keeps track of the condition of each piece separately. (The inventory at the bottom of the automap will show you which pieces of armor are still intact.)
Each piece of armor starts with a set number of Armor Points; the amount of AP each piece is worth varies by class. In addition, players come with a set number of “automatic” AP; unlike the regular pieces of armor these points never deteroriate. The following chart shows the AP values of armor by class as well as the maximum number of total AP a class can have:
Class | Auto | Armor | Shield | Helmet | Amulet | Max |
---|---|---|---|---|---|---|
Fighter | 15 | 25 | 20 | 15 | 5 | 100 |
Cleric | 10 | 10 | 25 | 5 | 20 | 90 |
Mage | 5 | 5 | 15 | 10 | 25 | 80 |
Pig | 0 | 0 | 0 | 0 | 0 | 5 |
The AC shown on the HUD is the sum of all remaining armor points (including Auto armor) divided by 5.
When a player is hit by an attack doing DMG damage, let “SavedPercent” be the total of the player's current remaing AP. If SavedPercent exceeds 100, set SavedPercent equal to 100. (This check is performed by the damage routine, but I am not aware of any circumstance where AP > 100 is possible.)
Then, let “Saved” equal (DMG * (SavedPercent/100)). If Saved is greater than (2 * SavedPercent), then Saved is set equal to (2 * SavedPercent). After truncating any decimal, Saved is the amount of damage absorbed by armor.
The AP of each piece of armor a character currently has is reduced by (DMG * (FullAP/300)), where FullAP is the value found in the chart above. (Decimals are not truncated in this operation.) If any piece of armor falls below 2 AP, it is destroyed.
Let's assume a fully armored (without the aid of Dragonskin Bracers) Fighter (80 AP/16 AC) is hit by a 250 damage attack. Since he has 80 AP, SavedPercent is also 80 and we let Saved = (250 * .80) = 200. However, since 200 is greater than (2 * SavedPercent) = 160, we must set Saved to 160 instead. Therefore, 90 damage will go through to the Fighter. (Ouch.)
His Armor will be reduced by (250 * 25/300) = ~20.833 points, leaving it with ~4.167 AP remaining.
His Shield will be reduced by (250 * 20/300) = ~16.667 points, leaving it with ~3.333 AP remaining.
His Helmet will be reduced by (250 * 15/300) = 12.5 points, leaving it with 2.5 AP remaining.
His Amulet will be reduced by (250 * 5/300) = ~4.167 points, leaving it with ~0.833 AP. Since this is less than 2, the Amulet is destroyed.
The fighter now has 25 AP left (15 automatic + 10 from what's left of his armor).
Using the Dragonskin Bracers artifact attempts to add 5 AP to each piece of armor, in the following order: Armor, Shield, Helmet, Amulet. If adding the 5 AP to a piece would bring the total AP above the player's max AP (see chart above), it will not be added.
If the Bracers add 5 AP to a non-existing piece of armor, it will magically appear in your inventory. :)
Pain is the chance (out of 256) of an enemy being briefly stunned by an attack.
Enemy | HP | Pain |
---|---|---|
Pig | 25 | 128 |
Afrit | 80 | 1 |
Stalker | 90 | 96 |
Wendigo | 120 | 144 |
Dark Bishop | 130 | 110 |
Reiver | 150 | 25 |
Ettin | 175 | 60 |
Centaur | 200 | 135 |
Chaos Serpent | 250 | 50 |
Slaughtaur | 250 | 96 |
Death Wyvern | 640 | 128 |
Menelkir | 800 | 50 |
Traductus | 800 | 50 |
Zedek | 800 | 50 |
Maulotaur | 2500 | 25 |
Heresiarch | 5000 | 10 |
Korax | 5000 | 20 |