I found some good material on how to code. I'm beginning the project myself. If you'd like to help let me know!
I checked and there is not a mod that does what I'm about to explain.
The point of the overhaul would be to make armor more realistic and add weak points in armor that can be exploited by the player (and potentially AI).
Here is a list of the main features that I've envisioned in my head (hopefully they're all possible):
- Split damage regions on the body into 13 regions:
- Each body region can be assigned multiple armor materials each with their own armor values
Wearing a Rough Bearskin and Western Mail would provide the following shoulder armor:
16 leather armor and 30 mail armor to the shoulders.
*The extra leather on top of the mail would be helpful in absorbing blunt damage*
- Cut Damage should be broken down into Wedge and Slash type damages due to the nature of axes vs swords. (There may already be a difference due to the momentum and physics system??)
- Damage Calculation will be done on a per material per armor rating per damage-type basis. (There are mods that do this sort of.)
- Slash, Wedge, and Pierce have to penetrate armor first otherwise they deal blunt. (There are mods that do this already.)
- I would like the formulae variables exposed to .xml to give players full control.
- Users should be able to boost the damage of specific weapon types e.g. axes, swords, bows (Some mods already do this.)
- It would be cool if the visuals of arrows, javelins, etc. sticking in a person can altered to only happen if the first armor layer is pierced.
My Reasoning for these features:
- Vanilla game currently doesn't even look at material type when calculating damage. (There are mods to fix this.)
- Lots of helmets, armors, capes, etc. provide unrealistic armor coverage and material types e.g. a helmet with no neck guard protecting the neck.
Things to achieve this:
- The new damage regions will need to be added. (I would love to do this myself, but my programming skills are not there yet.)
- Cut will need to be split into Wedge and Slash. (Again, I would need help coding this.)
- All armor pieces will need their armor and material locations modified in the .xmls (I am perfectly comfortable spending my personal time doing this.)
- The Damage calculation formulae will need to be updated in the code (I can put an equation into code, but will still need help with all the functions used by the game.)
Damage Calculation Reasoning:
- Plate Armor should provide significant pierce and cut protection but it will now be very heavy and susceptible to blunt.
- Chain Mail will provide similar cut protection to plate and be lighter but will be susceptible to pierce and blunt.
- Leather(will include thick/padded cloth, gambeson, aketon) will protect against blunt attacks and be much lighter but will be susceptible to pierce and cut.
- Cloth will be any remaining 'armors' that really shouldn't be worn into battle. It will offer very little protection from any damage type.
- Since armor types can be stacked on different regions, there will need to be multiple calculation steps. Examples:
- Plate shoulders over leather: Let's say an arrow hits the shoulder and doesn't penetrate the plate. All the arrow's pierce damage will be heavily reduced by the armor and converted to blunt. This reduced blunt damage will now act as a blunt hit on the leather underneath. The blunt will then be further reduced by the leather dealing minimal damage to the user.
- Leather shoulders over plate: Now an arrow hits the shoulder and pierces the thick leather. The leather will still provide some stopping power and reduce the pierce damage of the arrow. This will make it harder for the arrow to penetrate the underlying plate. However, since there is no padding underneath the plate armor, the end result will be the user takes more blunt damage than in case 1.
- There should only be a need for 3 layers of calculations (I'm thinking something like shoulder armor over the Imperial Mail Over Leather kind of situation) BUT I'd like the code to allow for more layers. Maybe warlord pauldrons worn on imperial leather over mail would provide four layers(Plate, Leather, Mail, Leather) because those pauldrons are hella padded.
- Blunt Damage will blunt through unpadded(non leather) body regions.
- Slash Damage will cut through most cloth and leather easily and will deal overall more damage than pierce when it pierces armor but less damage than wedge when it blunts.
- Pierce Damage will pierce cloth, leather, and chain mail easily but will deal less overall damage than slash/wedge when it pierces or blunts.
- Wedge will cut through cloth and leather and will have a slightly better time piercing chain mail than slash. It will deal most damage when it pierces or blunts. However, when it pierces cloth and leather it's damage will be reduced more than slash will.
- Arrows and Javelins will deal similar blunt damage when they do not pierce. Arrows will pierce plate and chain more easily than javelins, but arrows are thinner and will deal less damage when piercing than a javelin.
Damage Calculation Formulae:
Vanilla Damage Calculation:
absorbedDamageRatio*[magnitude*(100/(100 + armorEffectiveness))*bluntDamageFactorByDamageType + (magnitude*(100/(100 + armorEffectiveness)) - armorEffectiveness*PierceResistanceByType)*(1 - bluntDamageFactorByDamageType)]
- Cut: 0.1
- Pierce: 0.25
- Blunt: 1.0
- Cut: 0.5
- Pierce 0.33
magnitude: Original damage of the blow
armorEffectiveness: Armor value
absorbedDamageRatio: Not sure. It's a variable given to the function like armorEffectiveness and magnitude. Might be the body region multiplier?
Body Region Multiplier:
- Head: Pierce: 2.0 Cut: 1.2 Blunt: 1.2
- Neck: Pierce: 2.0 Cut: 1.2 Blunt: 1.2
- Shoulders: All: 1.0
- Chest: All: 1.0
- Abdomen: All 1.0
- Legs: All: 0.8
- Arms: All: 1.0
New Damage Calculation:
Currently Working on the math. There's gonna be a lot of variables to include like abilityToPierceByType, piercedStoppingPowerByType, bluntAbsorbtionByType, etc.
Hopefully, I'll have the formulas by tomorrow. Then I can start learning how the game code works. I'm not sure how many people will read this in its entirety, but if you'd like to help, have any advice, or know that any of the above features can't be implimented (Due to game coding, etc.). Please let me know!
Edited by RainbowSquirrels, 28 May 2020 - 06:09 PM.