[Bug] Armor is nearly twice as powerful as intended
Hydraheads opened this issue ยท 7 comments
Versions
- Minecraft: 1.12.2
- Forge: 14.23.5.2847
- Vampirism: 1.5.5
Issue Description
Every armor set in the mod has nearly twice the armor points they are actually supposed to have. The result is the balance is shifted, a lot. Swiftness armor has more protection points than diamond, even though the numbers its supposed to have are much lower. Obsidian has a whopping 40+ points making it practically invincible.
Reproduce Steps
A clean installation of only vampirism is enough to tell, but if you install overloaded armor bar it's made more obvious. It is also not just a visual bug, as I have tested it against strong modded weapons and other modded weapons/armor sets, and obsidian completely no sells everything.
Additional Information
N/A
Doing some math, the idea behind having lots of armor points isnt totally awful, but toughness would work far better. Every 2 damage dealt pierces 1 armor point. Since vampires and hunters deal far more damage than vanilla, they might be cutting through each other like butter in melee with proper values. However, with the current bugged values, everything is totally negligable in pvp but close ranged weapons that deal lots of damage. Speed oriented weapons like heartseeker are totally negated.
With a shift to armor toughness, it would take much more than 2 damage to pierce each point. If the armor had its proper value but 2 toughness per piece, it would effectively mean it now takes 4 damage to pierce an armor point. The tldr on the math is, crossbows, bows, and blood projectiles are worthless against the glitched armor point values. If the armor had their proper values and 2 armor toughness points, the balance would be better.
I cannot confirm that the armor has twice the protection as intended.
For me, the normal Armor of Swiftness gives 11 points (5.5 bars) while a diamond armor provides 20 points. Only the Special version, which cannot be crafted, is stronger than diamond.
My findings:
Protection | Damage per hit | |
---|---|---|
Diamond | 20 | 1 damage / 1 hit |
Swiftness Normal | 7 | 2 damage / 1 hit |
Swiftness Special | 23 | 0.5 damage / 1 hit |
Obsidian Normal | 31 | 0.5 damage / 2 hit |
Obsidian Special | 40 | 0.5 damage / 17 hit |
In general I agree, the base protection of the armor is a little bit too strong. Although, the obsidian armor is intended to be stronger than diamond as it slows you down.
But the special versions are way to strong. The special obsidian armor indeed makes you invincible. Even though you have to find all 4 parts first (and they break as well), it is probably OP.
I will reduce the protection, but not to 50%.
Maybe something like
Protection | |
---|---|
Diamond | 20 |
Swiftness Normal | 7 |
Swiftness Special | 20 |
Obsidian Normal | 23 |
Obsidian Special | 30 |
What do you think?
Nevermind, I see your point now. It is a little bit weird, some parts are close to what they are supposed to be, others way stronger. I will have to look into this
Alright, you were absolutely right, the values were applied twice.
1.14 is already correct I think, but I will double check
I have fixed that, but I have buffed the correct armor values therefore:
{boots,leggings,chestplate,helmet}
Hunter Coat:
private final int[] DAMAGE_REDUCTION_ULTIMATE = new int[]{3, 7, 9, 3};
private final int[] DAMAGE_REDUCTION_ENHANCED = new int[]{3, 6, 8, 3};
private final int[] DAMAGE_REDUCTION_NORMAL = new int[]{2, 5, 6, 2};
Swiftness:
private final int[] DAMAGE_REDUCTION_ULTIMATE = new int[]{3, 6, 8, 3};
private final int[] DAMAGE_REDUCTION_ENHANCED = new int[]{2, 5, 6, 2};
private final int[] DAMAGE_REDUCTION_NORMAL = new int[]{1, 2, 3, 1};
Obsidian:
private final int[] DAMAGE_REDUCTION_ULTIMATE = new int[]{5, 10, 11, 5};
private final int[] DAMAGE_REDUCTION_ENHANCED = new int[]{4, 8, 10, 4};
private final int[] DAMAGE_REDUCTION_NORMAL = new int[]{3, 7, 9, 3};
Vanilla:
LEATHER(..., new int[]{1, 2, 3, 1}, ...),
IRON(..., new int[]{2, 5, 6, 2}, ...),
GOLD(..., new int[]{1, 3, 5, 2}, ...);
DIAMOND(..., new int[]{3, 6, 8, 3}, ...);
What do you think?