Shall we talk about the paper armors?

Users who are viewing this thread

The way armor should work is this.

- Chest, Leg, Shoulder & Arm armor should decrease each hit it takes. There should be improved armor and regular armor. It acts as a second health bar for each region until it is completely broken and falls off. Once the armor falls off in that region, your actual health should start being affected. Just my opinion, but I'm open to alternatives.
 
The way armor should work is this.

- Chest, Leg, Shoulder & Arm armor should decrease each hit it takes. There should be improved armor and regular armor. It acts as a second health bar for each region until it is completely broken and falls off. Once the armor falls off in that region, your actual health should start being affected. Just my opinion, but I'm open to alternatives.
I think this would work better if the game was set in a later date, plate armor pretty much worked like this, either you killed the guy with blunt damage that would bypass part of the protection of the armor inflicting damage on the body itself or you tried to go for a weak spot with a dagger etc that would also obviously then bypass the armor, all other cases the guy was pretty much invincible until his armor broke somewhere exposing that part or he didn't get too tired to keep fighting.

Bannerlord has a late-antiquity/early middle ages timeframe and lamellar/maille was king in that time, the armor was excellent (if you could afford it) but the rings could be broken or the small lamellar plates split with the right force much easier than larger steel plates shaped around your body so i believe the absorption formula in the game represent it better just needing some fine tuning.
 
Talking about damage model makes me wonder what the code says though. @Apocal I think I have seen you posting code in some other thread, am I imagining that? Maybe you or someone else can shed light on it.
I'm not really familiar with the mission-side (battles) stuff but this appears to be it, under Taleworlds.Core.CombatStatCalculator
C#:
        // Token: 0x06000189 RID: 393 RVA: 0x00006CB4 File Offset: 0x00004EB4
        public static float ComputeRawDamageOld(DamageTypes damageType, float magnitude, float armorEffectiveness, float absorbedDamageRatio)
        {
            float num = 0f;
            float bluntDamageFactorByDamageType = CombatStatCalculator.GetBluntDamageFactorByDamageType(damageType);
            float num2 = magnitude * bluntDamageFactorByDamageType;
            num += num2 * (100f / (100f + armorEffectiveness));
            if (damageType != DamageTypes.Blunt)
            {
                float num3;
                if (damageType != DamageTypes.Cut)
                {
                    if (damageType != DamageTypes.Pierce)
                    {
                        return 0f;
                    }
                    num3 = Math.Max(0f, magnitude * (45f / (45f + armorEffectiveness)));
                }
                else
                {
                    num3 = Math.Max(0f, magnitude * (1f - 0.6f * armorEffectiveness / (20f + 0.4f * armorEffectiveness)));
                }
                num += num3 * (1f - bluntDamageFactorByDamageType);
            }
            return num * absorbedDamageRatio;
        }

       // Token: 0x0600018A RID: 394 RVA: 0x00006D50 File Offset: 0x00004F50
        public static float ComputeRawDamageNew(DamageTypes damageType, float magnitude, float armorEffectiveness, float absorbedDamageRatio)
        {
            float num = 0f;
            float bluntDamageFactorByDamageType = CombatStatCalculator.GetBluntDamageFactorByDamageType(damageType);
            float num2 = magnitude * bluntDamageFactorByDamageType;
            float num3 = 100f / (100f + armorEffectiveness);
            num += num2 * num3;
            if (damageType != DamageTypes.Blunt)
            {
                float num4;
                if (damageType != DamageTypes.Cut)
                {
                    if (damageType != DamageTypes.Pierce)
                    {
                        return 0f;
                    }
                    num4 = Math.Max(0f, magnitude * num3 - armorEffectiveness * 0.33f);
                }
                else
                {
                    num4 = Math.Max(0f, magnitude * num3 - armorEffectiveness * 0.5f);
                }
                num += num4 * (1f - bluntDamageFactorByDamageType);
            }
            return num * absorbedDamageRatio;
        }

        // Token: 0x0600018B RID: 395 RVA: 0x00006DDC File Offset: 0x00004FDC
        private static float GetBluntDamageFactorByDamageType(DamageTypes damageType)
        {
            float result = 0f;
            switch (damageType)
            {
            case DamageTypes.Cut:
                result = 0.1f;
                break;
            case DamageTypes.Pierce:
                result = 0.25f;
                break;
            case DamageTypes.Blunt:
                result = 1f;
                break;
            }
            return result;
        }

My C# skills aren't really top-notch but at a glance, it works exactly as the linked thread (Armour Why It Doesn't Work and How to Make It Work) indicated. They shifted the FactorByDamageType to be GetBluntDamageFactorByDamageType so it is more clear that this is the impact of otherwise sharp weapons, as suggested by a few people in this thread already. There is also a new bit called CalculateAdjustedArmorForBlow but that deals with certain perk effects that enhance or degrade armor effectiveness.

The short version is that blunt damage ignores the flat damage reduction while other types don't, while huge hits are only moderately absorbed and, with certain weapons having insane damage potential (especially with a velocity bonus), that means you can be easily two-shot through the best armor in the game.
 
I'm not really familiar with the mission-side (battles) stuff but this appears to be it, under Taleworlds.Core.CombatStatCalculator
C#:
        // Token: 0x06000189 RID: 393 RVA: 0x00006CB4 File Offset: 0x00004EB4
        public static float ComputeRawDamageOld(DamageTypes damageType, float magnitude, float armorEffectiveness, float absorbedDamageRatio)
        {
            float num = 0f;
            float bluntDamageFactorByDamageType = CombatStatCalculator.GetBluntDamageFactorByDamageType(damageType);
            float num2 = magnitude * bluntDamageFactorByDamageType;
            num += num2 * (100f / (100f + armorEffectiveness));
            if (damageType != DamageTypes.Blunt)
            {
                float num3;
                if (damageType != DamageTypes.Cut)
                {
                    if (damageType != DamageTypes.Pierce)
                    {
                        return 0f;
                    }
                    num3 = Math.Max(0f, magnitude * (45f / (45f + armorEffectiveness)));
                }
                else
                {
                    num3 = Math.Max(0f, magnitude * (1f - 0.6f * armorEffectiveness / (20f + 0.4f * armorEffectiveness)));
                }
                num += num3 * (1f - bluntDamageFactorByDamageType);
            }
            return num * absorbedDamageRatio;
        }

       // Token: 0x0600018A RID: 394 RVA: 0x00006D50 File Offset: 0x00004F50
        public static float ComputeRawDamageNew(DamageTypes damageType, float magnitude, float armorEffectiveness, float absorbedDamageRatio)
        {
            float num = 0f;
            float bluntDamageFactorByDamageType = CombatStatCalculator.GetBluntDamageFactorByDamageType(damageType);
            float num2 = magnitude * bluntDamageFactorByDamageType;
            float num3 = 100f / (100f + armorEffectiveness);
            num += num2 * num3;
            if (damageType != DamageTypes.Blunt)
            {
                float num4;
                if (damageType != DamageTypes.Cut)
                {
                    if (damageType != DamageTypes.Pierce)
                    {
                        return 0f;
                    }
                    num4 = Math.Max(0f, magnitude * num3 - armorEffectiveness * 0.33f);
                }
                else
                {
                    num4 = Math.Max(0f, magnitude * num3 - armorEffectiveness * 0.5f);
                }
                num += num4 * (1f - bluntDamageFactorByDamageType);
            }
            return num * absorbedDamageRatio;
        }

        // Token: 0x0600018B RID: 395 RVA: 0x00006DDC File Offset: 0x00004FDC
        private static float GetBluntDamageFactorByDamageType(DamageTypes damageType)
        {
            float result = 0f;
            switch (damageType)
            {
            case DamageTypes.Cut:
                result = 0.1f;
                break;
            case DamageTypes.Pierce:
                result = 0.25f;
                break;
            case DamageTypes.Blunt:
                result = 1f;
                break;
            }
            return result;
        }

My C# skills aren't really top-notch but at a glance, it works exactly as the linked thread (Armour Why It Doesn't Work and How to Make It Work) indicated. They shifted the FactorByDamageType to be GetBluntDamageFactorByDamageType so it is more clear that this is the impact of otherwise sharp weapons, as suggested by a few people in this thread already. There is also a new bit called CalculateAdjustedArmorForBlow but that deals with certain perk effects that enhance or degrade armor effectiveness.

The short version is that blunt damage ignores the flat damage reduction while other types don't, while huge hits are only moderately absorbed and, with certain weapons having insane damage potential (especially with a velocity bonus), that means you can be easily two-shot through the best armor in the game.

Thank you! And yes, OP there actually posted the very same code (or at least part of it), I missed that. The two functions to calculate combat damage have slightly different models, but I would imagine that the one labeled as new is the one in use. I would be curious to know what kind of model was used in Warband now but I guess that we have no way of knowing that.

Unless... @MadVader or someone else who did hardcore coding for mods know? Not sure if that was visible.
 
Last edited:
As another reminder to the posters of the previous page, just because i understand the frustrations
Further derailing, baiting and pointless flaming with no substance whatsoever will not be taken as leniently.


For the topic:
We have a different type of armor/damage calculations in Bannerlord Multiplayer, there aren't localized armor values, but just 1 armor value for the whole body, and then different damage coefficients depending on the part of the body hit by a weapon.

Has anyone gotten to the nitty-gritty of pros and cons for the both SP and MP system and compared how and if they can translate closely into one another, ie. when the SP total armor sum worn is the same/simmilar as the MP armor value?
 
That is some unfounded stuff you are saying there and it is misinformation.
ok genius, we want to imagine those shots without a rigid helmet? or protected only by a chain mail? Obviously it is a question of finding a compromise and for this reason the peculiar aspects of each type of armor must be maximized, for a better logical reading. If you don't understand what I'm writing it's your business but don't call me a misinformer. thank you
 
Last night I went and checked something out because of this conversation -- do we all acknowledge that the strength of high-tier armour is in some cases absolutely irrelevant to the survivability of high-tier troops?

Yes, that's because they're not necessarily wearing high-tier armour. The Vanguard Faris, for example, a Tier-5 Noble troop, has only mid-tier armour on, likely as a matter of game balance. I think this actually makes sense from a historic perspective, as actual armour wasn't even that common on the battlefield and elite troops would be wearing something along the lines of chainmail.

To the point of all the players complaining that the armour formula is off because their high-tier troops aren't behaving like as if they have an armour rating of 60+, it is specifically because these troops don't generally have armour ratings of 60+, and are actually closer to about half that.
 
To the point of all the players complaining that the armour formula is off because their high-tier troops aren't behaving like as if they have an armour rating of 60+, it is specifically because these troops don't generally have armour ratings of 60+, and are actually closer to about half that.
I think you forgot to account for the shoulder armor granting protection to the body. The Vanguard Faris has 36 in chest armor but their shoulders contribute another 18, for a total of 54, not too far off from the 62 of a Khan's Guard and slightly higher than a Banner Knight's 53.
 
I think this would work better if the game was set in a later date, plate armor pretty much worked like this, either you killed the guy with blunt damage that would bypass part of the protection of the armor inflicting damage on the body itself or you tried to go for a weak spot with a dagger etc that would also obviously then bypass the armor, all other cases the guy was pretty much invincible until his armor broke somewhere exposing that part or he didn't get too tired to keep fighting.

Bannerlord has a late-antiquity/early middle ages timeframe and lamellar/maille was king in that time, the armor was excellent (if you could afford it) but the rings could be broken or the small lamellar plates split with the right force much easier than larger steel plates shaped around your body so i believe the absorption formula in the game represent it better just needing some fine tuning.

Mail and lamellar armor damage is not a factor in actual battle. Mail for example requires were specific type of attack (tip blow) to have one ring broken and even then its no guarantee. Soldier is much more likely to die from a wound to a body part that has low / no protection or blunt trauma then from well maintained armor being damaged and then defeated in a matter of one battle. Obviously maintenence after battle should cost money and lamellar probably ruqired more than mail so that should be represented somehow.
 
I think you forgot to account for the shoulder armor granting protection to the body. The Vanguard Faris has 36 in chest armor but their shoulders contribute another 18, for a total of 54, not too far off from the 62 of a Khan's Guard and slightly higher than a Banner Knight's 53.
Yes, for sure, but my point being the armour itself is mid-tier. The player can throw on heavier Shoulder armour than that, and I do. I could also throw the same Shoulder armour on top of better Body armour, easy. The high-tier troops themselves are not all wearing high-tier armour, and so adjusting the damage formula to make them behave as if they do is problematic.

[Edit: I just checked through the top-tiers of the normal troop trees, and it really varies a lot. Sturgia has top-tier armour, but meanwhile Vlandia's top-tier troops have Body armour of as low as 28, and no higher than 34.]

Mail and lamellar armor damage is not a factor in actual battle. Mail for example requires were specific type of attack (tip blow) to have one ring broken and even then its no guarantee. Soldier is much more likely to die from a wound to a body part that has low / no protection or blunt trauma then from well maintained armor being damaged and then defeated in a matter of one battle. Obviously maintenence after battle should cost money and lamellar probably ruqired more than mail so that should be represented somehow.
Lamellar, especially, was a fairly destructible armour. Much of its protective benefit actually comes from the way it displaces force like this, and a hit with an edged weapon or even something like an arrow would often break away pieces. You are right about mail, in general, though axes can do some pretty nasty damage, especially to iron-based chainmail. This is actually where I'd like to see armour expanded, maybe not actually given HP and taking damage, but a stat affecting the "armorEffectiveness" tag to account for things like quality of materials as well as the layers worn underneath. For example, chainmail worn over a tunic is going to take blunt damage differently than chainmail worn over leather or over a gambeson. But then maybe a chance based on the amount of damage absorbed could result in some degree of deterioration, so if the lamellar takes a big hit and protects the wearer, maybe the "armorEffectiveness" or another modifying tag could deteriorate slightly to account for damage to the armour's integrity. Then of course this could be considered repaired between battles, as the armour is mended.

I don't know, just a thought I had that may actually allow for some interesting dynamics to the fights. I'd especially like it if the chance for any deterioration differed between armour. Brass lamellar might maybe deteriorate faster due to the softness of brass versus iron or steel.
 
Last edited:
Yes, for sure, but my point being the armour itself is mid-tier. The player can throw on heavier Shoulder armour than that, and I do. I could also throw the same Shoulder armour on top of better Torso armour, easy. The high-tier troops themselves are not all wearing high-tier armour, and so adjusting the damage formula to make them behave as if they do is problematic.
The way armor works is just a number (AFAICT) and doesn't care whether you get that number from one piece or three. 50+ armor on a location is definitely a bit away from truly top-tier (high 60s, low 70s) but the actual difference in protection is marginal.

That's the source of the complaints in this thread: there isn't an easily and immediately discernible difference in practice. The curve is more like mid-tier protection (24+16, for example) gives you enough that you feel more protected but every increase past that feels like very little (or nothing) has been gained. I ran around for like fifteen years in-game in nothing better than the Khuzait Leather Lamellar chest and Reinforced Studded Shoulders for body armor, with that turbaned Aserai helmet that has less than 20 points on it, and didn't feel the need to buy anything better. The total cost of that set was less than 20,000 denars. Early-game purchases, basically. It was good enough that I didn't even feel the need to rip my brother's brass lamellar set (THE top-tier Khuzait armor) off his body to put it on my own character's.

Of course, I can go ahead and calculate out a bunch of scenarios where, yes, it does matter having that high-tier armor instead of mid-tier does provide an objective benefit. But this is a game, not a problem on my professor's blackboard. Players have to feel these things* or else they don't count. Everything else is a distraction from that.

And yeah, I'm being a bit presumptuous talking for a whole lot of other people but this thread has been done a great many times already and it isn't hard to read the room.

*FWIW, I think armor does feel like it has an effect. It definitely had an effect on tournament difficulty before blunt weapons were introduced. You used to be able to throw on decent armor and walk your way through every round.
 
The way armor works is just a number (AFAICT) and doesn't care whether you get that number from one piece or three. 50+ armor on a location is definitely a bit away from truly top-tier (high 60s, low 70s) but the actual difference in protection is marginal.

That's the source of the complaints in this thread: there isn't an easily and immediately discernible difference in practice. The curve is more like mid-tier protection (24+16, for example) gives you enough that you feel more protected but every increase past that feels like very little (or nothing) has been gained. I ran around for like fifteen years in-game in nothing better than the Khuzait Leather Lamellar chest and Reinforced Studded Shoulders for body armor, with that turbaned Aserai helmet that has less than 20 points on it, and didn't feel the need to buy anything better. The total cost of that set was less than 20,000 denars. Early-game purchases, basically. It was good enough that I didn't even feel the need to rip my brother's brass lamellar set (THE top-tier Khuzait armor) off his body to put it on my own character's.

Of course, I can go ahead and calculate out a bunch of scenarios where, yes, it does matter having that high-tier armor instead of mid-tier does provide an objective benefit. But this is a game, not a problem on my professor's blackboard. Players have to feel these things* or else they don't count. Everything else is a distraction from that.

And yeah, I'm being a bit presumptuous talking for a whole lot of other people but this thread has been done a great many times already and it isn't hard to read the room.

*FWIW, I think armor does feel like it has an effect. It definitely had an effect on tournament difficulty before blunt weapons were introduced. You used to be able to throw on decent armor and walk your way through every round.
Just walking through combat like that is actually what I really hope we avoid. I want to see trade-offs between heavy and light armour in terms of speed versus protection, and I do definitely feel that when I have Shoulder armour of +20 and Torso armour of +50 or so, definitely a leap up from the Torso pieces offering +30, for sure.

To be clear, though, I was citing the armour worn in the troop trees specifically in response to arguments about the survivability of top-tier troops.

The other major point I feel isn't being addressed is the new Arm slot, which for a lot of these top-tier troops roughly combines to about 20-30 for most, half what the most armoured top-tier troops have for the Body slot. I tend to aim for it when I'm fighting heavily armoured opponents, and with a heavy two-handed weapon I score a lot of one-hit kills this way. I think the armour-ratings associated with the Arm slot could bear some tinkering, and that this is probably where a lot of people are experiencing that sense of over-vulnerability.
 
Exactly

It's not just the player it's mainly about the high tier troops feeling too weak, i don't want to make the game easier, on the contrary i want it to be harded and med-high tier troops to be able to take more damage before being killed, right now they are falling like flies and it's just silly, totally not worth it to spend alot on good armor that don't protect to the player and even worth it to spend and take time to level high tier troops that'll die almost as easily as recruits.

In warband you were just one killing machine at late game while armies had dozens/hundreds of just as deadly and heavily armored killing machines aswell, it created a much better pacing in my view.
At this point, I think that this needs to be put in bold letters at the start of the thread.

Armor works both ways. Enemy forces are also harder to kill when they have high tier units.

Ah, so the two choices are the armor should either protect a little bit or make its wearer invicible, splendid.

Let me start by making an important point about vitality.
In Bannerlord, all characters have 100-110 hp, which is a BIG and meaningful difference with Warband, where elite troops could have 50% more hp than recruits along with good armor (40 hp vs 60 hp). This means that higher tiers in Warband can withstand more hits BY DESIGN, even with the same amount of armor as lower tiers.

So what is left to differentiate different tiers? Skill, weapons and durability through armor. The AI doesn't block much or does so poorly, hencethe only thing that can make high tier troops durable is effective armor. How effective is this armor? I can concistently one hit most high tier units with a tier 4 2H axe/sword. The AI isn't as competent, so it can take two hits... but still. do you gain anything from having better armor in this situation, either as an AI troop or as a player? No.

Surviving one or two more hits isn't enough for high tiers. They shouldn't survive 20 good hits either, there's a balance to be found, and I believe that a high tier unit being able to survive up to 8 hits from a 1h weapon and 3 good hits from a 2h weapon is enough. It's at least better than dying from 1-3 hits all around with the best gear.

It brings a feeling of progression, and increases the chances of the player getting punished if he lands a poor hit (lower damages don't stop attacks).

It does bring another topic - should we allow for higher hp on higher tier troops?

Right now all that we have is higher hp through the medicine perk.


Another issue may be that the AI needs work - they need to block more effectively.


Mail and lamellar armor damage is not a factor in actual battle. Mail for example requires were specific type of attack (tip blow) to have one ring broken and even then its no guarantee. Soldier is much more likely to die from a wound to a body part that has low / no protection or blunt trauma then from well maintained armor being damaged and then defeated in a matter of one battle. Obviously maintenence after battle should cost money and lamellar probably ruqired more than mail so that should be represented somehow.

Strictly speaking, in a way it is abstracted right now in troop; costs, but a case could be made for a better system.
 
Agreed, a slight increase in HP for higher tier troops would be welcome. Nothing too drastic of course, +5 base hp per tier would already be more than enough. Don't know how feasible it is right now though...
 
In warband they had like 45 hp, now we got this "100 + perks for everyone!" progressive body nonsense!
Since I used to kill dozens of looters solo on full difficulty in WB, I was shocked by the amount of HP looters have in BL. Back in Warband those poor sods died after 1-2 hits with a starting rusty sword. Now I need 3-4 direct hits in order to kill one. Poking them with a starting spear takes even more hits. Seriously, some of those guys wear nothing but long johns, yet they are extremely hard to kill for a new player!

Not to mention their stats, I am pretty sure they are on par with average trained infantry. I once saw 20 looters steamrolling 12 Imperial infantrymen (trained and veterans, with a couple of recruits) in a shield wall formation. I mean a bunch of half-naked homeless peasants with rusty farming tools devastated trained professional soldiers with shields, armour and combat weapons in mere seconds...

And those heat-seeking, armour-piercing stones of DOOM... I hate looters in BL.
 
Back
Top Bottom