Jump to content

Any way to make all enemies capable of dropping all rarity tiers?


Recommended Posts

After massive amount of playtime, I came to several conclusion regarding drops:

1) Rarity tier 15, which includes all Legendary and legendary rarity Set items can only drop from enemies with dangerclass 9 or 10. That means only bosses and mini-bosses. I tried modding the balance.txt to make only rarity 15 drop and still only bosses were capable of dropping Legendary items.

2) Every rarity tier up to 14 can drop from regular enemies. I've had multiple drop from random trash enemies. This tier includes most class specific Unique armor pieces.

3) The game rolling rarity tier 15 does not mean a rarity tier 15 item will drop, only that up to rarity item 15 can drop. I tested a modded balance.txt and made only tier 15 drop and I was still getting a ton of regular set items and unique weapons which are rarity tier 13, even from bosses.

 

So. The most likely thing determining this is the enemy dangerclass. My question is:

Could something be done, to allow all rarity tiers to drop from any enemy? So that you wouldn't have to spam farm bosses and bosses only to have a chance for Legendary item? I'd love to be able able to find them just by playing the game, killing whatever enemies I encounter during my travels. I really don't like tier 15 being exclusive to bosses. It would be great if it could drop from anything, but of course, a trash enemy would have lower chance than a boss.

Edited by idbeholdME
Link to comment
  • 3 weeks later...

From what I can tell, there seem to be 2 possible options:

1) Adding the Legendaries to more droplists, so that they can be rolled for whenever any item drops. This method would however be very time consuming.

2) There is a section near the bottom of the drop.txt file, defining drop patterns which seems to define droplists an enemy uses based on their dangerclass, which all the enemies have defined. This seems like it would be a much easier method to achieve the desired result.

 

Warning - long post ahead of analysis and my take on the drop behavior!!!!

Let's try to take a look at the Droppattern definition of dangerclass 10, which means most of the major bosses.

mgr.createDroppattern(39,{ -- no comment
	id = 39,
	dangerclass = 10,
	inittype = 3,
	entry0 = {
		expecttype=6,
		droplist=1464,
		minquality=9,
	},
	entry1 = {
		expecttype=5,
		droplist=1475,
		minquality=10,
	},
	entry2 = {
		expecttype=5,
		droplist=1472,
		minquality=10,
	},
	entry3 = {
		expecttype=5,
		droplist=1418,
		minquality=7,
	},
	entry4 = {
		expecttype=1,
		droplist=1496,
		minquality=13,
	},
	entry5 = {
		expecttype=5,
		droplist=1386,
		minquality=6,
	},
	entry6 = {
		expecttype=5,
		droplist=1465,
		minquality=5,
	},
	entry7 = {
		expecttype=5,
		droplist=1465,
		minquality=5,
	},
	entry8 = {
		expecttype=5,
		droplist=1466,
		minquality=5,
	},
	entry9 = {
		expecttype=5,
		droplist=1466,
		minquality=6,
	},
	entry10 = {
		expecttype=18,
		droplist=1502,
		minquality=6,
	},
})

We can see that upon killing a dangerclass 10 enemy, the game will present a player with 10 drops:

1464 - Droplist_runes_allhero. The boss will always drop a rune.

1475 - Droplist_all_armour_from_rare. One armor item from this droplist will drop with a minimum rarity tier of 10.

1472 - Droplist_all_weapon_from_rare. One weapon from this droplist will drop with a minimum rarity tier of 10.

1418 - Droplist_Forge. One item from this droplist will drop with a minimum rarity tier of 7.

1496 - Droplist_all_rare_ARM_WEAP. This is a droplist that contains 4 other droplists instead of specific items. Specifically 1472, 1475, 1418 and 1532. Only 1532 is new, which is Dropliste_minisets, which contains all the miniset items. What I THINK this means, is that one singular drop from the killed boss will be randomly selected from one of these 4 droplists, not that it will drop from all 4 of them.

1465 x2 - Droplist_potions. Contains all potions. This guarantees that the boss will always drop at least 2 potions. However, I am not sure how this works exactly as they usually drop more than 2 potions.

1466 - Droplist_gold. Guarantees that the boss kill will generate 2 gold drops.

1502 - Subfamlist_atmo. Not sure what this droplist exactly does, but my bet would be on a lore book.

 

The "minquality" line is very important. What I THINK is happening in the background is that the game is first rolling for the quality tier based on the balance.txt values for ZRareExpectation. The list is as follows:

  ZRareExpectation15 = 2,
  ZRareExpectation14 = 6,
  ZRareExpectation13 = 14,
  ZRareExpectation12 = 16,
  ZRareExpectation11 = 24,
  ZRareExpectation10 = 34,
  ZRareExpectation09 = 46,
  ZRareExpectation08 = 58,
  ZRareExpectation07 = 72,
  ZRareExpectation06 = 88,
  ZRareExpectation05 = 106,
  ZRareExpectation04 = 124,
  ZRareExpectation03 = 144,
  ZRareExpectation02 = 166,
  ZRareExpectation01 = 456,
  ZRareExpectation00 = 1000,

If the game rolls anything below the minquality of, for example, droplist 1464, it is bumped to that quality tier. So if a game rolled a 250, which would mean quality tier of 1, this parameter bumps it to quality level 9. If the game rolls higher quality than the minimum, the result is kept. This is the rolling that gets affected by the Chance to Find Valuables bonuses.

So now that we've somewhat analyzed the droppattern definition, some more points.

The Legendary items are usually present only in 3 drop lists. Let's take a look at Arnum's Pathfinder, Legendary bow: http://www.sacredwiki.org/index.php/Sacred_2:Arnum's_Pathfinder, which has a bluprint ID 2805 in blueprint.txt. It (as well as all other Legendary weapons) is present in these 3 droplists:

1) The most important one - Droplist_all_armour_from_rare

2) Their respective weapon class droplist - in this case - Drop_weapon_2h_longbow. From what I can tell, these weapon class specific lists are all part of another droplist: 1452 - Droplist_weapons_all. And this droplist 1452 is only used in one case in the entire game: droplist 1354 - ChestDC3. Which is a specific kind of chest, but I have no idea which it is. Either way, this droplist never gets used when killing enemies.

3) A droplist based on which weapon skill affects the weapon - in this case Drop_Weapon_byskill_ranged. As far as I can tell, this droplist is only used for merchants. Maybe the devs originally intended for the Bargaining Mastery to be able to make the traders rarely offer Sets, Unique and Legendaries? Hard to tell, but that is the only reason I can think of for Legendaries being included in this. Either way, this droplist never gets used when killing enemies.

 

So, by looking at the above, it is easy to tell that only enemies with dangerclass droppattern definition that includes droplist 1472 - Droplist_all_weapon_from_rare (1475- Droplist_all_armour_from_rare if the Legendary item in question is an armor piece) OR 1496 - Droplist_all_rare_ARM_WEAP (which contains both armor and weapons with droplists 1472 and 1475 respectively) will be capable of potentially dropping Legendary items. And as by default, only dangerclass 9 and 10 enemies have access to these droplist, this decidedly confirms, that only bosses and minibosses are capapble of dropping Legendary items. This means that:

1) Adding these droplists to the droppatern deifnitions for dangerclasses lower than 9 should allow them to drop Legendary items and should be a much easier method of doing this rather than fiddling with the actual contents of the droplists. One could balance this by giving the lower dangerclass enemies a lower minquality value, so that they can drop lower than quality level 10 items.

2) It should be possible, to easily add the amount of dropped items to an enemy of a certain dangerclass, simply by adding more entries to their droppattern definition.

 

One problem though - there are multiple droppattern definitions for the same dangerclass in drop.txt. Not sure how to determine which one is the one actually used in the game.

I will proceed to test some of this eventually. Once I finish grinding my level 196 character to 200, I will come back to some actual testing. I always wanted to be able to just farm anywhere and be able to potentially get any item in the game rather than just having to grind bosses non-stop. The way it's setup in the game, to get a Legendary drop, you have to: A) Be lucky enough to roll a ZRareExpectation15, which is abysmally low, and B) get this incredibly lucky roll when killing an enemy who happens to have access to a droplist that even contains some quality level 15 to pick from. Because if it does not, you can roll a ZRareExpectation15 but still will only get an item of the next available highest quality. This is why even if you change balance.txt file to only ever land on ZRareExpectation 15, you will still be seeing almost exclusively non-legendary items. Because 99% of the game is actually incapable of dropping them.

 

An easy test for start could be simply changing the droplist in the droppatern 119, which is the bonus set piece you occasionally get after completing several quests.

mgr.createDroppattern(119,{ -- QuestSetDrop
    id = 119,
    dangerclass = 1,
    inittype = 30,
    entry0 = {
        expecttype=16,
        droplist=1498,
        minquality=13,
    },
})

Either changing the minquality to 15 to see if quality tier 15 Set Items start dropping, or putting in a completely different droplist and checking if it made a difference.

If all this works as I think it does, it could mean a very easy way of modding/changing the way the drops in the game behave.

EDIT:

One more question regarding the items present in the droplists - anyone have any idea what "weightedprob" value determines? Does it mean that some items are more likely to roll than others? Does higher value mean more rare or less rare? Or does it do anything at all?

Edited by idbeholdME
Link to comment
  • 3 weeks later...

An update.

Giving all dangerclasses access to the same droplists as the bosses with dangerclass 9 or 10 have, is NOT enough to make regular enemies able to drop Legendaries. I managed to make the most trash enemies literally rain sets and uniques by giving them the same drop lists as bosses and increasing the ZRareExpectation15 in balance.txt, but no matter what, Legendaries will simply not drop. However, once I increase their dangerclass to 9 or 10 in creatures.txt (the scarabs in the desert in this case), Legendaries instantly start dropping. Which means that the droplists are only one piece of the puzzle.

legendaries.thumb.jpg.9ffebb8fb20011d4bd687f8b23e01996.jpg

It is easy to make any enemy drop the same amount of items as bosses, from exactly the same droplists, but Legendaries are locked out for anything below dangerclass 9. Which means that the original goal of this whole experiment - to make enemies from lower dangerclasses potentially be able to drop any item, including Legendaries - is still without a solution.

I can't find the dangerclass connection anywhere in the relevant script files. It must either be hardcoded (which would suck), or it's hidden somewhere. Could be why every dangerclass is initialized like 8 times in drop.txt, but I can't really tell the reason for it.... If I somehow managed to remove the dangerclass restriction, then it would just be a question of adding the Legendary items to relevant drop lists, which the lower dangerclass enemies use.

Anyone any ideas?

 

EDIT:

Oh, also, the weightedprob in drop list entries indeed is how likely that item is to be picked compared to others. Just put the weightedprob for Magisil to 20000 and literally only Magisil is dropping. So basically loaded odds, which is another thing I hate in ARPGs. I might actually equalize it for all Legendaries. Would explain why by the end of my farming, I've been getting mostly duplicates.

And from observation, even if you manage to roll the abysmally low chance for rarity tier 15, it only means that you can roll for them, not that you will actually get one. You have to be additionally lucky for the game to pick a Legendary item based on the wieghtedprob and hope it doesn't just greet you with a random trash rare item, or any of the rarity 13 or 14 items which are also present in the same droplist.

Edited by idbeholdME
  • Like! 1
Link to comment
  • 2 weeks later...
On 12/4/2022 at 5:27 PM, gogoblender said:

How did this work out, any more clues of the mystery?

:)

 

gogo

Unfortunately no. I am out of ideas about where the rarity vs danger class relation could be defined/hidden.

If that could somehow be done, all droplists could be left the same and just add the Legendary items to them so that you could roll for them also when killing normal enemies. It could even be balanced so that the chance would be lower than from bosses thanks to the weightedprob value, but that's all what ifs.....:sigh:

  • Like! 1
Link to comment

Cthulhu has dealt with this topic before:


I guess the descrepencies you're seeing come from these wierd initialization types. Dangerclasses may be a part of them.

My other guess would be that there's one ore more lines somewhere in balance.txt.

RareBonusDanger
RareMalusThreshold
RareStart
BOSS_STANDARD
DropMaxRandomRare
DropPowerupRare

Something like those.

  • Thanks! 1
Link to comment
23 hours ago, Lindor said:

Cthulhu has dealt with this topic before:


I guess the descrepencies you're seeing come from these wierd initialization types. Dangerclasses may be a part of them.

My other guess would be that there's one ore more lines somewhere in balance.txt.

RareBonusDanger
RareMalusThreshold
RareStart
BOSS_STANDARD
DropMaxRandomRare
DropPowerupRare

Something like those.

I remember reading that a long time ago, but forgot. Either way, the important part: danger class < 9 being unable to drop Legendaries - is still unknown.

 

From the thread:

"Danger class (see creatures.txt, drop.txt; danger classes themselves are apparently defined internally, I haven't found them yet in any binary dumps; I hope I've overlooked them)."

Adding the Legendaries to the other droplists enemies below classes 9 and 10 have access to doesn't make them droppable.

 

The DropMaxRandomRare = 12, in balance.txt probably indicates something related to the rarity tiers, so tier 12, but I have no idea what it could affect.

EDIT:

Putting the DropMaxRandomRare to 15 only changes all rare items that drop into unique rarity. Regular enemies are still incapable of dropping Legendaries. It basically only indicates where the rare item cutoff point is when it comes to rarity tiers and how the game should display them. So nothing really relevant.

Edited by idbeholdME
Link to comment
  • 1 month later...

A couple more finds/confirmations:

1) Rolling a specific rarity tier (15 for example) does not guarantee that a Legendary item will drop, only that it CAN drop. The main determining factor of what will drop is still the weightedprob value of the item in drop.txt. You add up the total value of all items in a specific droplist and then use it to divide the value of Legendaries. Say that the total widghtedprob value of all Legendaries in a droplist is 400 and the total weightedprob of the entire droplist is 1000. Well, then even if you roll the abysmally low ZRareExpectation15 from balance.txt (0.2% by default), then you also have to succeed in the 400/1000 roll (40%) for the game to actually give you a Legendary item. So an 0.08% chance per boss kill (before Chance to Find Valuables comes in of course). The chances for the individual Legendaries are then determined by their weightedprobvalue compared to all other Legendaries in the list. Which would have been fine IMO, if it weren't for the damn dangerclass limitation. This combined with the fact that it's actually only bosses that are capable of even dropping Legendary items in the first place, means that the vast majority of players have probably never seen a Legendary item without grinding literally hundreds to thousands of bosses.

Tested by setting the ZRareExpectation in balance.txt to 999 and then adding several zeroes to the weidghtedprob of items in a specific droplist. First I put the value for Arnum's Pathfinder to 100000, which resulted in the bow dropping after every boss kill. Then I reduced it back to 8 and increased the weightedprob of random rare energy pistols to 100000. The result was that even when the game was basically set to roll only rarity tier 15 for drops in balance.txt, it was always dropping a random rare energy pistol instead.

So one thing that could be done to modify the drop behavior would be to add 3 or 4 zeroes to the weightedprob of every Legendary item in all droplists. This would ensure that when you do score a ZRareExpectation15 roll, you will actually be guaranteed a Legendary item.

 

Still no way to get around the dangerclass limiation. I have ultimately decided to just increase the weightedprob of all Legendaries in the lists. They can be extremely slowly farmable with the vanilla values and I've found a decent amount of them with the vanilla values, but there is pretty much 0% chance to be able to enjoy them before late Niobium, extremely high survival bonus, Enhanced Perception and CtFV gear. I've played with the vanilla values for many hundreds of hours and it's simply not feasible to enjoy most of the Legendaries in single player. Feels like the drop rates have been intentionally made extremely low in hopes of fostering some kind of economy for multiplayer trading or something like that. The actual drop rates would leave many MMOs in the dust with how abysmally low they actually are with the vanilla values.

Edited by idbeholdME
Link to comment
  • 1 year later...
On 11/24/2022 at 12:29 AM, idbeholdME said:

Just put the weightedprob for Magisil to 20000 and literally only Magisil is dropping

It's the other way around. Higher values make the item more rare. Two items, one with weightedprob=50 and one with 150, the 50 will drop 3 times more often compared to the 150.

 

EDIT: also for impact:

minquality > zrareexpectation > weightedprob

So weightedprob has the least amount of impact.

Haven't figured out expecttype yet.

Edited by Lindor
Link to comment
18 hours ago, Lindor said:

It's the other way around. Higher values make the item more rare. Two items, one with weightedprob=50 and one with 150, the 50 will drop 3 times more often compared to the 150.

 

EDIT: also for impact:

minquality > zrareexpectation > weightedprob

So weightedprob has the least amount of impact.

Haven't figured out expecttype yet.

Strange. Because I tested it, just increased the Magisil to 20000 and got only Magisils and nothing else. With PFP of course.

And even just from general gameplay, I can safely say that the lower the weightedprob, the less likely the item is to drop when selecting an item from the drop list.

Edited by idbeholdME
  • zomgod! 1
Link to comment
18 minutes ago, idbeholdME said:

Strange(...)

And even just from general gameplay, I can safely say that the lower the weightedprob, the less likely the item is to drop when selecting an item from the drop list.

:

On 8/4/2022 at 2:51 AM, Flix said:

Higher values make the item more rare.  At least, I hope so because that's how the entire file is set up from top to bottom.

I can confirm that the entire file is structured like that. If higher values made items more likely to drop, we would see legendaries all over the place.

And:

18 minutes ago, idbeholdME said:

Because I tested it, just increased the Magisil to 20000 and got only Magisils and nothing else. With PFP of course.

Maybe you simultaneously tempered with some other value like zrareexpectation or so?

On 1/26/2023 at 8:13 PM, idbeholdME said:

Tested by setting the ZRareExpectation in balance.txt to 999 and then adding several zeroes to the weidghtedprob of items in a specific droplist.

Because if weightedprob really increased the drop likelihood, we're in trouble. For ages everybody thought the opposite.

Link to comment
On 2/13/2024 at 7:06 PM, idbeholdME said:

Yes.

I gave the Scarabs in the desert dangerclass of 9 so that they'd drop boss amounts of loot and to make them able of dropping Legendaries in the first place, gave Magisil 20000 weidghtedprob and put ZRareExpectation15 to 500 or so, which combined with Enhanced Perception made it so that every Scarab kill would roll a tier 15 item.

Result was only Magisil whenever a Legendary item dropped.

For my personal use, I manually edited the weightedprob of all tier 15 and 14 items to be much, much higher than those of tier 13 (most sets and legendaries) to ensure that when the game rolls ZRareExpectation14 or 15, it actually gives me an item of that rarity. The game rolling 15 only means that it can generate up to rarity tier 15, not that it will drop. It still determines the item to drop by the weightedprob, So even if you score ZRareExpectation15 but there is 1 Legendary and 15 normal uniques with the same weightedprob in the drop list, you still have only 1/16 chance of getting the Legendary.

I can give you my modded drop.txt if you want to see. In game, I noticed quite a bump in the drop rates of rarity tiers 14 and 15 without touching the ZRareExpectation.

Hmm. That would be a reasonable explanation why higher tier items have higher weightedprob. I guess we were wrong all along. Nice job!

  • zomgod! 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...
Please Sign In or Sign Up