Clearing the Air on Loot Drops, Treasure Scent, and More
Jun 16, 2013 22:12:05 GMT
Raj, KnightErrant, and 3 more like this
Post by FunkySwerve on Jun 16, 2013 22:12:05 GMT
I understand that there's been some recent confusion as to the role played by various factors in loot drops. The loot drop system is pretty complicated, so it's not possible to just say, for example, 'TS will increase your chances of getting a BUR by X%', but I can explain the relevant factors so you can tailor your play to maximize your chances.
First of all, player count. Player count increases both the chances of a loot drop from happening, be it from container or monster, as well as the rarity of that drop, though how it does so depends on what kind of area you're in. The best roll possible still isn't going to net you a BUR in a 21-25 level loot area.
Each area has a given loot frequency dependant on the nunber of containers and spawns in the area, though in most of the more recently-created areas, it defaults to 50% chance of any given drop chance yeiling a drop. This is increased by 2% per player in the party, including phantom players. 'Phantom players' are added to your partycount during times of low traffic (these days, all the time), to increase both drop chance and drop rarity. you get four phantom players if there are less than 20 people on the servers (all the HG servers combined, not your server or your party), three if less than 40, 2 if less than 60, and 1 if less than 80. the 2% per player bonus is capped at 10 players, however, so your phantom party members won't help if you're in a party of 10 already.
If an item is determined to have dropped, rarity is checked. A d100 is rolled, so to speak, and a bonus of one per two party members is added, up to 4 at 8 members max (including phantoms). You then get an additional bonus based on rogue levels or Treasure Scent, whichever is higher (rogue bonus is equal to rogue levels / 30, max of 2, plus an additional 1 if you're an Armand (XR race)). TS can be a bonus of up to 3. Whichever bonus is higher, rogue or TS, is used.
That rarity number is then checked on a chart based on area type to determine what rarity item drops. Here's a sample rarity chart, for the Hells:
case 10://Hells
if (nRarity <= PERCENT_CHANCE_COMMON) {//common
sRes = GetRandomResrefLoot40Common(); nRareNumber = 1;
} else if (nRarity <= (PERCENT_CHANCE_COMMON + 25)) {//uncommon - 82
sRes = GetRandomResrefLoot40Uncommon(TRUE); nRareNumber = 2;
if (Random(100) < 15) return CreateAugmenter(oContainer, nRareNumber - 1, oOpener);
} else if (nRarity > 95) {//ultrarare 4%
if (nRarity > 100) {
sRes = GetRandomResrefLootBeyondUltraRare(); nRareNumber = 5;
} else {
sRes = GetRandomResrefLootUltraRare(FALSE, 0); nRareNumber = 4;//0 indicates no racebooks
if (Random(100) < 15) return CreateAugmenter(oContainer, nRareNumber - 1, oOpener);
}
} else {//rare
if (Random(2)) {
sRes = GetRandomResrefLoot40RareLL(); nRareNumber = 3;
} else {
sRes = GetRandomResrefLootHellUseable(); nRareNumber = 3;
}
if (Random(100) < 15) return CreateAugmenter(oContainer, nRareNumber - 1, oOpener);
}
break;
PERCENT_CHANCE_COMMON is 55.
Basically, if your number is over 100, you get a BUR. Obviously your chances of managing this are much better in parties with more players, and if you have rogue levels, and if you use TS.
That just leaves the role of the antiexploit. Without going into too much detail, if you pop more than a certain number of randomloot containers in a row without your party killing any monsters, you are guaranteed to get drops of low rarity from the containers you pop after the limit is reached. The limit is generally set high enough to avoid getting into trouble in most spots, so long as the party is playing through normally, but I would generally advise against any given player popping more than 3 containers consecutively (the number can vary, and does in certain areas, where there are large clumps of containers, but you will almost always be safe if you stick to 3 max).
If you have a head for code, you can find the random loot function here, though it doesn't deal with the anti-exploit, which is checked before DoRandomLoot is executed:
dl.dropboxusercontent.com/u/3116407/fky_loot_inc.nss
I wish it were able to described more succinctly, but there are just way too many factors at play for that to be possible. Questions welcome.
Funky
First of all, player count. Player count increases both the chances of a loot drop from happening, be it from container or monster, as well as the rarity of that drop, though how it does so depends on what kind of area you're in. The best roll possible still isn't going to net you a BUR in a 21-25 level loot area.
Each area has a given loot frequency dependant on the nunber of containers and spawns in the area, though in most of the more recently-created areas, it defaults to 50% chance of any given drop chance yeiling a drop. This is increased by 2% per player in the party, including phantom players. 'Phantom players' are added to your partycount during times of low traffic (these days, all the time), to increase both drop chance and drop rarity. you get four phantom players if there are less than 20 people on the servers (all the HG servers combined, not your server or your party), three if less than 40, 2 if less than 60, and 1 if less than 80. the 2% per player bonus is capped at 10 players, however, so your phantom party members won't help if you're in a party of 10 already.
If an item is determined to have dropped, rarity is checked. A d100 is rolled, so to speak, and a bonus of one per two party members is added, up to 4 at 8 members max (including phantoms). You then get an additional bonus based on rogue levels or Treasure Scent, whichever is higher (rogue bonus is equal to rogue levels / 30, max of 2, plus an additional 1 if you're an Armand (XR race)). TS can be a bonus of up to 3. Whichever bonus is higher, rogue or TS, is used.
That rarity number is then checked on a chart based on area type to determine what rarity item drops. Here's a sample rarity chart, for the Hells:
case 10://Hells
if (nRarity <= PERCENT_CHANCE_COMMON) {//common
sRes = GetRandomResrefLoot40Common(); nRareNumber = 1;
} else if (nRarity <= (PERCENT_CHANCE_COMMON + 25)) {//uncommon - 82
sRes = GetRandomResrefLoot40Uncommon(TRUE); nRareNumber = 2;
if (Random(100) < 15) return CreateAugmenter(oContainer, nRareNumber - 1, oOpener);
} else if (nRarity > 95) {//ultrarare 4%
if (nRarity > 100) {
sRes = GetRandomResrefLootBeyondUltraRare(); nRareNumber = 5;
} else {
sRes = GetRandomResrefLootUltraRare(FALSE, 0); nRareNumber = 4;//0 indicates no racebooks
if (Random(100) < 15) return CreateAugmenter(oContainer, nRareNumber - 1, oOpener);
}
} else {//rare
if (Random(2)) {
sRes = GetRandomResrefLoot40RareLL(); nRareNumber = 3;
} else {
sRes = GetRandomResrefLootHellUseable(); nRareNumber = 3;
}
if (Random(100) < 15) return CreateAugmenter(oContainer, nRareNumber - 1, oOpener);
}
break;
PERCENT_CHANCE_COMMON is 55.
Basically, if your number is over 100, you get a BUR. Obviously your chances of managing this are much better in parties with more players, and if you have rogue levels, and if you use TS.
That just leaves the role of the antiexploit. Without going into too much detail, if you pop more than a certain number of randomloot containers in a row without your party killing any monsters, you are guaranteed to get drops of low rarity from the containers you pop after the limit is reached. The limit is generally set high enough to avoid getting into trouble in most spots, so long as the party is playing through normally, but I would generally advise against any given player popping more than 3 containers consecutively (the number can vary, and does in certain areas, where there are large clumps of containers, but you will almost always be safe if you stick to 3 max).
If you have a head for code, you can find the random loot function here, though it doesn't deal with the anti-exploit, which is checked before DoRandomLoot is executed:
dl.dropboxusercontent.com/u/3116407/fky_loot_inc.nss
I wish it were able to described more succinctly, but there are just way too many factors at play for that to be possible. Questions welcome.
Funky