Zed Posted December 31, 2016 Simple question, how exactly does the armor work in Hexen? The wiki says: "The armor class corresponds to one fifth of the armor's actual value (so an armor class of 20 corresponds to 100% armor). The armor value is also used as the percent of damage absorbed, making damaged armor less protective than intact armor. Each character class has a minimal armor class below which they will not go, no matter how much damage is received. Armor class is improved by taking several armor items that can be combined together. Damage is spread between the various items, eventually resulting in their destruction. Only one intact item of each type can be used at a time." What is "armor class", and how is it different from the "acual value", or the "armor points"? And how is damage spread among items? Like, having a Mesh Armor and a Falcon Shield counts as a 9 if I'm a Fighter, and damage is spread rougly 33/33/33 between Armor, Shield, and Health? And how does damage received changes as armor degrades? Does that mean that, taking the same example, if my armor degrades to 2 and the shield to 1, is damage spread re-adjusted to, say, 15/20/65? And what about that last sentence? Does that mean that if I have just collected a Falcon Shield, I can't use a Mesh Armor until the shield takes damage, or how does it work? I'm a little confused. 0 Share this post Link to post

Graf Zahl Posted December 31, 2016 Zed said:I'm a little confused. I don't know anyone who isn't. 0 Share this post Link to post

Avoozl Posted January 1, 2017 It has always bugged me how the armor counter is not present in minimal HUD mode. 0 Share this post Link to post

CapnClever Posted January 1, 2017 I took a quick look at the source and I'm really not sure what they were thinking when they came up with it, but here's an attempt at an explanation using some numbers and formulas. (As a preface, it's super-important to realize that armor points are stored as fixed-point fractional values, which means armor degradation happens continuously even if the result is more discrete.) Fighter, Cleric, and Mage each have their own armor "points" associated with different armor types, as well as their base points that the player starts with and never degrade. Here are each for reference (calling the chestplate Plate for clarity, as the source calls it "armor"): Fighter (base 15): Plate = 25, Helmet = 15, Shield = 20, Amulet = 5 Cleric (base 10): Plate = 10, Helmet = 5, Shield = 25, Amulet = 20 Mage (base 5): Plate = 5, Helmet = 10, Shield = 15, Amulet = 25 The player's total points are the sum of their each armor's points along with the base: by collecting all parts, a Fighter can get up to 80, Cleric to 70, and Mage to 60. While the total value helps give us the total damage reduction, it's necessary to consider each point value separately for the purposes of armor deterioration. As it's simpler, I'll start with the damage reduction formula: DamageAbsorbed = Min( ( TotalDamage * ( TotalArmorPoints / 100 ), TotalArmorPoints * 2 ) That is, reduction can be taken as a percentage of armor points, except it's capped at double those points. (An easier way to think of it is that any damage over 200 isn't going to be reduced.) For example, a fully-equipped Fighter has 80% damage reduction, capping at 160 damage absorbed from a 200+ damage attack. Most of the damage in Hexen doesn't get super high anyway (and when it does it's usually the result of multiple projectiles/hits), so I'd guess the cap is only for stuff like telefrags. Armor degradation is more complex but not by much: CurrentArmorPoints = CurrentArmorPoints - ( TotalDamage * ( StartingArmorPoints / 300 ) ) if (CurrentArmorPoints < 2) then CurrentArmorPoints = 0 "StartingArmorPoints" is the value as listed near the top of the post: Fighter's Plate would be 25, for instance. If we were to take the first line only, we could say that any piece of armor has 300 hit points before it completely breaks. However, due to the second line, any armor piece that degrades to 2 breaks outright: this makes armor with more starting points more durable, however slight. These are the valid hit points for armor: 5 armor: 180HP 10 armor: 240HP 15 armor: 260HP 20 armor: 270HP 25 armor: 276HP As armor points are tied to both armor degradation and damage reduction, this means armor that loses its own hit points will absorb less damage as well (though it degrades by the same amount regardless). So what's all this have to do what the AC on the status bar? Just take all the armor points and divide by 5 (rounded down) and you get AC. Hopefully this helps clear things up! 1 Share this post Link to post

Zed Posted January 1, 2017 Well, thanks a lot man! I had to read it like 4 times, and I still don't get it 100%, but it makes a lot more sense now. And I thought Armor in Doom was complicated... 0 Share this post Link to post

Gez Posted January 1, 2017 Zed said:What is "armor class", and how is it different from the "acual value" "The armor class corresponds to one fifth of the armor's actual value (so an armor class of 20 corresponds to 100% armor)." I dunno how to make that clearer. Actual value is a percentage like in Doom and Heretic; armor class is that divided by 5 to make it look like the armor values in D&D. Zed said:And how does damage received changes as armor degrades? Let's go back to Doom armors. The blue one gives you 50% protection and 200 armor points. If you have 200 points of blue armor, it absorbs 50% of damage. If you have 120 points of blue armor, it absorbs 50% of damage. If you have 30 points of blue armor, it absorbs 50% of damage. Okay so far? Now the green armor gives you 33% protection and 100 armor points, but you can go higher with armor bonuses. If you have 200 points of green armor, it absorbs 33% of damage. If you have 120 points of green armor, it absorbs 33% of damage. If you have 30 points of green armor, it absorbs 33% of damage. Got it? Well, let's get back to Hexen armor. If you have 100 points of armor, it absorbs 100% of damage. If you have 80 points of armor, it absorbs 80% of damage. If you have 50 points of armor, it absorbs 50% of damage. If you have 30 points of armor, it absorbs 30% of damage. Doom armor gives you constant protection until the armor is so damaged that you don't have it anymore. Hexen armor gives you protection proportional to the armor. If your armor is complete and in good shape, it'll protect you better than if all you've got is a battered helmet. I don't see what's complicated about this. 0 Share this post Link to post

ETTiNGRiNDER Posted January 1, 2017 While we're on this topic, can I get a confirmation of how Dragonskin Bracers work, internally? I believe that they randomly choose from the "real" armor pieces and add on armor points to those up to a certain maximum, but I'm not 100% sure. A lot of sources claim that they "temporarily" boost armor but I'm almost certain that's misleading (it's only "temporary" in so far as being destroyed by damage just like normal armor). 0 Share this post Link to post

CapnClever Posted January 1, 2017 Going to talk about these in terms of AC, but keep in mind this equates to five points when talking about damage reduction or the armor's durability. Dragonskin Bracers apply 1AC to each armor type unless doing so would exceed the class's maximum AC (Fighter 20, Cleric 18, Mage 16). Points are applied in the following order: chestplate, shield, helmet, amulet. Consequently, because of the way that armor degradation is calculated, pieces with the lowest starting AC benefit the most, as a 1AC-armor is now 2AC but degrades like a 1AC (10 starting, each point of damage degrades 5/300ths), while a 5AC-armor is now 6AC but degrades like a 5AC (30 starting, each point of damage degrades 25/300ths). In terms of this scaling, Mage benefits the most from the bracers, followed by cleric, and fighter last. While we're at it, Fighter's Mystic Ambit Incant works by increasing chestplate by 1AC. Personally I would call this a bug, since the handling of the item reads as follows: if ((P_GiveArmor(mo->player, ARMOR_ARMOR, 1)) || (P_GiveArmor(mo->player, ARMOR_SHIELD, 1)) || (P_GiveArmor(mo->player, ARMOR_HELMET, 1)) || (P_GiveArmor(mo->player, ARMOR_AMULET, 1))) { effective=true; S_StartSound(mo, SFX_MYSTICINCANT); } By itself this looks okay, except that AC is applied in P_GiveArmor() regardless of its magntitude until it reaches/exceeds maximum AC total. So the shield, helmet, and amulet conditions never matter, because if the call to the chestplate failed then so will the rest, and if the call to the chestplate succeeded then the rest are ignored. My guess is that this should've worked similarly to the Dragonskin Bracers, which applies armor in a loop rather than as a potentially-short-circuiting conditional. (ZDoom apparently fixes this, as the Incant provides 4AC rather than 1.) My expectation is that armor is confusing because its utility is obfuscated: all you can see is this "AC" value, which is the sum total of various pieces of armor at various grades of durability. The only other indication of how much durability is left of your armor is the map screen, which displays each piece at some level of transparency (more opaque = less broken). It doesn't help that it's entirely different from Doom/Heretic/Strife, where armor durability and damage reduction are independent of one another. My own experience with armor in Hexen is that you'll almost never equip enough of it at a high durability to really matter. If you want to make the best use of it then combine pickups with Dragonskin Bracers usage. 0 Share this post Link to post

Zed Posted January 1, 2017 Gez said:"The armor class corresponds to one fifth of the armor's actual value (so an armor class of 20 corresponds to 100% armor)." I dunno how to make that clearer. Actual value is a percentage like in Doom and Heretic; armor class is that divided by 5 to make it look like the armor values in D&D. Let's go back to Doom armors. The blue one gives you 50% protection and 200 armor points. If you have 200 points of blue armor, it absorbs 50% of damage. If you have 120 points of blue armor, it absorbs 50% of damage. If you have 30 points of blue armor, it absorbs 50% of damage. Okay so far? Now the green armor gives you 33% protection and 100 armor points, but you can go higher with armor bonuses. If you have 200 points of green armor, it absorbs 33% of damage. If you have 120 points of green armor, it absorbs 33% of damage. If you have 30 points of green armor, it absorbs 33% of damage. Got it? Well, let's get back to Hexen armor. If you have 100 points of armor, it absorbs 100% of damage. If you have 80 points of armor, it absorbs 80% of damage. If you have 50 points of armor, it absorbs 50% of damage. If you have 30 points of armor, it absorbs 30% of damage. Doom armor gives you constant protection until the armor is so damaged that you don't have it anymore. Hexen armor gives you protection proportional to the armor. If your armor is complete and in good shape, it'll protect you better than if all you've got is a battered helmet. Thanks a lot, I get it now. Gez said:I don't see what's complicated about this. Well, I'm not precisely the smartest guy around here (quite the opposite actually). 0 Share this post Link to post