Proper Loot someday?

Users who are viewing this thread

We can make some tests with 1v100, 1v200, 1v300 etc battles against high tier units. Maybe at level 1v1000000 loot is better :wink:

There is another thing about loot. TW added special rich decorated weapons for lords BUT there is no proper way to get them. You can use cheats or mods that allow strip captured lords. Why even bother adding special weapons that player will never see or can't get? Of course pretty rich decorated sword made of best materials is cheaper than some knife on a stick because of bad weapon price formula.

It looks like TW focus more on simulations and "balancing" than player experience
 
I don't see much difference with high rougery skill. I still get same low value ****.
If loot is created to be sold why even bother with this mechanic? Just remove it and replace it with additional money gain

I got a "cracked helmet" worth 33k the other day, I was quite surprised. Current rogue skill at around 100ish, and I found several times now items worth 10k+ ish range. More often than not horse armors though. I do fight A LOT though, like back to back fighting all the time. As with looting in any game, you find more trash than gold as it should be. If you just find "good stuff" all the time, it doesn't become special.
 
Considering how it's tied to the roguery skill i think the current issues is basically the economy of it. Get even a decent amount of roguery and you can make some strong profit of it easily.

So while i do wish i could get more interesting pieces of gear from looting more often. The way the economy is structured currently, that would likely break it. Meaning this could end up being one of those things that will have to wait until economics get overhauled a bit.

That being said, it would be nice if we could find more interesting gear from time to time earlier on.
 
Considering how it's tied to the roguery skill i think the current issues is basically the economy of it. Get even a decent amount of roguery and you can make some strong profit of it easily.

So while i do wish i could get more interesting pieces of gear from looting more often. The way the economy is structured currently, that would likely break it. Meaning this could end up being one of those things that will have to wait until economics get overhauled a bit.

That being said, it would be nice if we could find more interesting gear from time to time earlier on.

Imagine, you strap on your armor. Head to battle, you do a lot of fighting, end up get killed. How pristine and good do you think your armor and gear would be after that? There would be dents and cracks. It wouldn't be a pristine museum piece.
 
Imagine, you strap on your armor. Head to battle, you do a lot of fighting, end up get killed. How pristine and good do you think your armor and gear would be after that? There would be dents and cracks. It wouldn't be a pristine museum piece.
If you want go most realistic way, player should be able to get every piece of gear of every dead soldier. Player should be able to keep weapons picked on battlefield. Every npc and player gear should have damage bar and get negative prefixes at some point until its broken. Player and NPCs should be able to fix gear even on campain map with smith skills. Also it should be possible to get untouched body armour because one troop caught javelin with his head. That's how warband loot worked. You could get from cracked to untouched variants of gear. VC added gear damage, optional so player can choose if he wants more realisim or not and option to repair.

Somebody said bannerlord loot is randomized around calculated value. Easiest fix would be draw less items from poll with higher value. Commander of party or army wouldn't care about 20 cracked pitchforks. With that solution player is happy. He has choice to equip it or sell it for same value of tons of cracked scrap.

Gear value is another broken and the most unrealistic thing in the game. It's calulated around damage/absorption value so elegant decorated sword is cheaper than crude axe or knife on a stick.
 
PS I didn't know that the good loot wasnt in the looters, bandits and the other scum. Thnx for sharing this deep knowledge. So where you find the good loot, coz I'm thinking nobody is..
I found some tier 6 armor after a big battle (1500 on 2000).
 
I found some tier 6 armor after a big battle (1500 on 2000).

Just had a major battle vs the Bats. and yeah, it does happen...

fAqdqo.png
 
Hmm... maybe there are other factors for loot calculation. Maybe more renown and days in game gives better loot? I notice that my loot got better after about 1200 days in game and my renown keeps growing but at this point it doesn't matter. Me and my companions already have best protection-fashion balance gear and I only do some minor changes which i can affort so late in the game. That bronze helmet looks like lord's gear so maybe there is chance for special weapons and horses drop. I start thinking that rougery is the most useless skill in the game.
 
Hmm... maybe there are other factors for loot calculation. Maybe more renown and days in game gives better loot? I notice that my loot got better after about 1200 days in game and my renown keeps growing but at this point it doesn't matter. Me and my companions already have best protection-fashion balance gear and I only do some minor changes which i can affort so late in the game. That bronze helmet looks like lord's gear so maybe there is chance for special weapons and horses drop. I start thinking that rougery is the most useless skill in the game.

3 Bat lords died in that battle, but neither of them use that kind of helmet though. Maybe it dropped from some of the tier 6 cav they had, idk.
 
It's money.
Loot drops based on money.

And it has a cap,just the same when you beat a rich clan leader your maximum plunder in denars is capped at 10.000 denars.
T6 armors and weapons won't drop because their price is ridiculously high.
2 pieces of T6 armour cost more than a castle.

We've said many times that prices of weapons and armours are too high,TW is on it.

For now,try a price changing mod,the worst it can do is make other clans actually have gold and defect less.
Also you'll fight stronger enemies because they can afford it.
 
It's money.
Loot drops based on money.

And it has a cap,just the same when you beat a rich clan leader your maximum plunder in denars is capped at 10.000 denars.
T6 armors and weapons won't drop because their price is ridiculously high.
2 pieces of T6 armour cost more than a castle.

We've said many times that prices of weapons and armours are too high,TW is on it.

For now,try a price changing mod,the worst it can do is make other clans actually have gold and defect less.
Also you'll fight stronger enemies because they can afford it.
That's not aswer to my question but thanks for additional information. I didn't know about 10k coins cap. That's another bs. If player is caught off guard and want to pay for leaving him alone, he has to pay money based on his wealth and it's not capped, so even band of bandits can get huge amount of money.

I wanna know what factors are taken to calculate loot and how game picks items. It has to be somewhere in game code but I'm not programmer so I don't know how to check it.
 
It's money.
Loot drops based on money.

And it has a cap,just the same when you beat a rich clan leader your maximum plunder in denars is capped at 10.000 denars.
T6 armors and weapons won't drop because their price is ridiculously high.
2 pieces of T6 armour cost more than a castle.

We've said many times that prices of weapons and armours are too high,TW is on it.

For now,try a price changing mod,the worst it can do is make other clans actually have gold and defect less.
Also you'll fight stronger enemies because they can afford it.

Can't be, because I got items all the way into 50k+ range. Not common, but have happened. Also after larger battles the loot combined way more than 10k worth. Not necessary an large army fight, but fighting a faction leader with a 240 sized party etc.
 
Can't be, because I got items all the way into 50k+ range. Not common, but have happened. Also after larger battles the loot combined way more than 10k worth. Not necessary an large army fight, but fighting a faction leader with a 240 sized party etc.
He's saying that plunder, the direct denar theft from your enemies, is capped at 10,000 denars, not loot value.
Checked code? Could you share loot formula?
Yeah, I'll post when I get home.
C#:
        // Token: 0x06000F4D RID: 3917 RVA: 0x00045A80 File Offset: 0x00043C80
        internal void GiveShareOfLootToParty(TroopRoster memberRoster, TroopRoster prisonerRoster, ItemRoster itemRoster, PartyBase winnerParty, float lootAmount)
        {
            bool flag = winnerParty == PartyBase.MainParty;
            List<TroopRosterElement> list = new List<TroopRosterElement>((int)((float)this.LootedMembers.TotalManCount * Math.Min(lootAmount * 1.3f, 1f)));
            foreach (TroopRosterElement troopRosterElement in this.LootedMembers.GetTroopRoster())
            {
                int number = troopRosterElement.Number;
                CharacterObject character = troopRosterElement.Character;
                for (int i = 0; i < number; i++)
                {
                    if (MBRandom.RandomFloat < lootAmount)
                    {
                        TroopRosterElement item = new TroopRosterElement(character)
                        {
                            Number = 1,
                            WoundedNumber = 1
                        };
                        list.Add(item);
                    }
                }
            }
            foreach (TroopRosterElement troopRosterElement2 in list)
            {
                this.LootedMembers.AddToCounts(troopRosterElement2.Character, -1, false, 0, 0, true, -1);
            }
            foreach (TroopRosterElement troopRosterElement3 in list)
            {
                if (troopRosterElement3.Character.IsHero)
                {
                    if (!flag && winnerParty.IsMobile)
                    {
                        TakePrisonerAction.Apply(winnerParty, troopRosterElement3.Character.HeroObject);
                    }
                    else
                    {
                        prisonerRoster.AddToCounts(troopRosterElement3.Character, troopRosterElement3.Number, false, 0, 0, true, -1);
                    }
                }
                else
                {
                    prisonerRoster.AddToCounts(troopRosterElement3.Character, troopRosterElement3.Number, false, 0, 0, true, -1);
                }
            }
            ICollection<ItemRosterElement> collection = new List<ItemRosterElement>();
            for (int j = this.LootedItems.Count<ItemRosterElement>() - 1; j >= 0; j--)
            {
                ItemRosterElement elementCopyAtIndex = this.LootedItems.GetElementCopyAtIndex(j);
                int num = 0;
                ItemRosterElement item2 = new ItemRosterElement(elementCopyAtIndex.EquipmentElement.Item, 1, elementCopyAtIndex.EquipmentElement.ItemModifier);
                for (int k = 0; k < elementCopyAtIndex.Amount; k++)
                {
                    if (MBRandom.RandomFloat < lootAmount)
                    {
                        collection.Add(item2);
                        num++;
                    }
                }
                this.LootedItems.AddToCounts(item2.EquipmentElement, -num);
            }
            itemRoster.Add(collection);
            float partySavePrisonerAsMemberShareProbability = Campaign.Current.Models.BattleRewardModel.GetPartySavePrisonerAsMemberShareProbability(winnerParty, lootAmount);
            int num2 = winnerParty.IsMobile ? winnerParty.MobileParty.LimitedPartySize : winnerParty.PartySizeLimit;
            if (partySavePrisonerAsMemberShareProbability > 0f)
            {
                for (int l = this.LootedPrisoners.Count - 1; l >= 0; l--)
                {
                    int elementNumber = this.LootedPrisoners.GetElementNumber(l);
                    CharacterObject characterAtIndex = this.LootedPrisoners.GetCharacterAtIndex(l);
                    int num3 = 0;
                    for (int m = 0; m < elementNumber; m++)
                    {
                        if (MBRandom.RandomFloat < partySavePrisonerAsMemberShareProbability && (flag || elementNumber + memberRoster.TotalManCount <= num2))
                        {
                            memberRoster.AddToCounts(characterAtIndex, 1, false, 0, 0, true, -1);
                            num3++;
                        }
                    }
                    if (num3 > 0)
                    {
                        this.LootedPrisoners.AddToCounts(characterAtIndex, -num3, false, 0, 0, true, -1);
                    }
                }
            }
            ICollection<TroopRosterElement> collection2 = new List<TroopRosterElement>();
            for (int n = this.CasualtiesInBattle.Count - 1; n >= 0; n--)
            {
                int elementNumber2 = this.CasualtiesInBattle.GetElementNumber(n);
                CharacterObject characterAtIndex2 = this.CasualtiesInBattle.GetCharacterAtIndex(n);
                int num4 = 0;
                TroopRosterElement item3 = new TroopRosterElement(characterAtIndex2);
                for (int num5 = 0; num5 < elementNumber2; num5++)
                {
                    if (MBRandom.RandomFloat < lootAmount)
                    {
                        collection2.Add(item3);
                        num4++;
                    }
                }
                if (num4 > 0)
                {
                    this.CasualtiesInBattle.AddToCounts(characterAtIndex2, -num4, false, 0, 0, true, -1);
                }
            }
            ExplainedNumber explainedNumber = new ExplainedNumber(1f, false, null);
            if (winnerParty.MobileParty != null && winnerParty.MobileParty.Leader != null)
            {
                SkillHelper.AddSkillBonusForCharacter(DefaultSkills.Roguery, DefaultSkillEffects.RogueryLootBonus, winnerParty.MobileParty.Leader, ref explainedNumber, -1, true, 0);
            }
            if (!flag)
            {
                if (winnerParty.LeaderHero != null)
                {
                    int num6 = MBMath.Round((float)this.LootCasualtiesToGold(collection2, explainedNumber.ResultNumber) * explainedNumber.ResultNumber);
                    num6 = (int)((float)num6 / 3.5f);
                    winnerParty.LeaderHero.Gold += num6;
                    return;
                }
            }
            else
            {
                IEnumerable<ItemRosterElement> rosterElementList = this.LootCasualties(collection2, explainedNumber.ResultNumber);
                itemRoster.Add(rosterElementList);
            }
        }
C#:
        // Token: 0x06000F50 RID: 3920 RVA: 0x00045FD4 File Offset: 0x000441D4
        private IEnumerable<ItemRosterElement> LootCasualties(ICollection<TroopRosterElement> shareFromCasualties, float lootFactor)
        {
            ItemRoster itemRoster = new ItemRoster();
            List<EquipmentElement> list = new List<EquipmentElement>();
            foreach (TroopRosterElement troopRosterElement in shareFromCasualties)
            {
                for (int i = 0; i < 1; i++)
                {
                    LootCollector.GetRandomEquipment(troopRosterElement.Character);
                    list.Clear();
                    int num = MBRandom.RoundRandomized(lootFactor);
                    for (int j = 0; j < num; j++)
                    {
                        float num2 = ItemHelper.GetExpectedLootedItemValue(troopRosterElement.Character);
                        num2 *= MBRandom.RandomFloatRanged(0.75f, 1.25f);
                        EquipmentElement lootedItem = Campaign.Current.Models.BattleRewardModel.GetLootedItemFromTroop(troopRosterElement.Character, num2);
                        if (lootedItem.Item != null && !lootedItem.Item.NotMerchandise && list.Count((EquipmentElement x) => x.Item.Type == lootedItem.Item.Type) == 0)
                        {
                            itemRoster.AddToCounts(lootedItem, 1);
                        }
                    }
                }
            }
            return itemRoster;
The jist is that it takes a look at the loot the troops can drop, then examines its value for a chance to drop. High value stuff has very, very poor chance of dropping. And when it does, there is a damage modifier applied to it (intended, not a bug or oversight) that hurts its performance a bit and its value a lot.

The only bonus you get is your Roguery skill; perks for more loot from village or caravan raiding are handled elsewhere. It doesn't touch renown/clan tier that I see, nor days in a playthrough.
 
Last edited:
I would like to get better loot, or a way to fix/repair items with negative modifiers.
the way I see it, revenue from loot is already to much and basically the only thing you need.
the balance between costs in different systems is off.
taxes and tariffs should be more compared to battle loot and the costs of upgrading, recruiting and maintaining units should also increase.
Getting better loot is only possible if it is balanced in relation to the other systems.
I remember a tread from last year where someone did a historical analysis on the wage of a Roman soldier relative to food, horses and equipment.
 
Doing a handful of 200ish vs 200ish battles in fast succession and it will bring me probably close to 200k+ once all is processed. Stuff I don't want is sold. Trash melted down and materials used to create something of higher value etc. Complaining about loot when you can make cash so easy from it, is silly imho. Also the higher your rogue skill is the better the loot.

Also fighting looters, bandits and such is not where the good loot is. Although pitchforks and wood hammers make great wood resources..
The problem isn't about making money from drops it's about the feeling of getting something really rare/special once in awhile. I'm not sure why you don't get this. :unsure:
 
The problem isn't about making money from drops it's about the feeling of getting something really rare/special once in awhile. I'm not sure why you don't get this. :unsure:

Well, tbh, I feel better about sell loot from a battle and buy something NICE and new at the trader, than put on something a dead dude been wearing :smile:
 
Back
Top Bottom