Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #1  
Old 11-08-2022, 06:25 AM
Torven
Sarnak
 
Join Date: Aug 2014
Posts: 52
Default Sony EverQuest Loot Drop System Research Thread

This thread will contain the research I have collected regarding Sony/Daybreak/Whatever's loot drop system and will otherwise serve to preserve Sony developer comments so they are not lost.


In 2007 Sony developer Zajeer posted this to one of the Shadowknight bulletin boards: (note that I have added a lot of whitespace for readability)

Quote:
Originally Posted by Zajeer
Theres two tables that dictate how an item will drop - a treasure table and an item table.

The treasure table dictates how many items will drop per slot on an NPC and it calls the item table.

The item table, lists the items that are supposed to drop and a percentage chance for that item to be called.

So for example, item table 1212 (made up entry for this example) has 6 items listed (they have to equal 100%) - Item A - 20% Item B - 15% Item C - 20% Item D - 5% Item E - 10% Item F - 30% So the treasure table, which is attached to the NPC or chest, calls the item table. The treasure table can either drop 1 item (a 1d1 table) 2 items (a 2d1 table) or 1.5 items (1d2 table) or any amount of items we choose (a *d* table).

An NPC can have multiples of the treasure table. The treasure table itself also has a percentage it can be called - so for example, some NPCs might have an X% chance of dropping an extra seperate table (think Quarm's chance to drop a bonus breastplate). This is a seperate treasure table calling an item table that has a percent chance to drop. Take for instance a hypothetical boss who drops 3 items all the time, but has a bonus cookie table that drops a random cookie 50% of the time. There can be multiple ways to set this up, but I'll illustrate this in a specific way.

1) You can have 3 treasure tables - one of them being a 1d1 table at 100% drop, another being a 2d1 table at 100% drop, and a third table that drops a cookie 1d1 at 50% drop chance. The 100% 1d1 table (let's call it table A) could have things like class specific items and weapons on it, so you always see only -1- class specific item or weapon at a time, while the 100% 2d1 (Let's call it table B) table can drop things like non-visible gear, all/all items, and visible armor. Then the cookie (let's call it table C) has a chance to drop a cookie 50% of the time. Here's the layout of each item table

A 1) Sword of Skarlon - 25% 2) Lute of Flowing Waters - 20% 3) Hammer of the Timeweaver - 40% 4) Magmaband of Cestus Dei - 15% Total - 100% (this always has to be 100%)
B 1) Flowing Black Silk Sash - 20% 2) Vule's Frozen Heart - 10% 3) Vermillion Bat Fur Cape - 35% 4) Prismatic Ring of Resistance - 25% 5) Opalline Pendant - 10%
C 1) Troll Cookie - 10% 2) Gnome Shaped Cookie - 40% 3) Zajeer's Cookie - 50%

So the chance for any item on table A to drop is going to be the Item's percentage on table A (1d1 table, 100% drop rate) The chance for any item on table B to drop is going to be the item's percentage on table B*2 (2d1 table, 100% drop rate) per kill. This is the math using Vule's Frozen Heart as an example - Vule's has a 10% chance to drop. That means it has a 90% chance to not drop. So the chance for Vule's to be seen on either table is (1- (.9 * .9)) = .19 = 19% chance. Now this doesn't explain double drops however: .1*.1 = .01 = 1% chance. So the total chance for Vule's to drop is .19 + .1 = .2 = 20% chance (or, 2* 10% chance). The chance for a bonus cookie to drop is the chance for that cookie to drop * .5. So for example, Zajeer's cookie has a 25% chance to be seen per kill.

I hope all of this clears up a bit of the confusion with how the tables work in EQ. For the most part, we try to not have things duplicate many times over - for example, the dragons in DoN didn't have tables built correctly, because you had a chance to see 3x breastplates in one kill (in that specific instance, there were 2 tables - a 1d1 and a 2d1 table, but they had identical item lists).
(source: http://eqshadowknight.net/showpost.p...0&postcount=23)


In 2018 Ngreth outlined the treasure table fields by pasting data to a user to prove that the drop chance for an item is 75%. Each denomination of coin had its own probability/frequency roll and die rolls. It's interesting/strange to me that apparently coin is bundled with Sony's analog of lootdrops instead of a parent NPC loot table, but maybe I'm interpreting this wrong?

Quote:
Originally Posted by Ngreth
TREASURE_TABLE
TREASURE_TYPE
TREASURE_CLASS_DESCRIPTION
PLAT_FREQUENCY
PLAT_DIE_SIZE
PLAT_NUM_DICE
GOLD_FREQUENCY
GOLD_DIE_SIZE
GOLD_NUM_DICE
SILVER_FREQUENCY
SILVER_DIE_SIZE
SILVER_NUM_DICE
COPPER_FREQUENCY
COPPER_DIE_SIZE
COPPER_NUM_DICE
ITEM_FREQUENCY
ITEM_DIE_SIZE
ITEM_NUM_DICE
ITEM_LIST_ID
TARGET_LEVEL
LEVEL_VALUE
12052 SKU25_Loot_Visible_Armor_T1 - 75% 0 0 0 0 0 0 0 0 0 0 0 0 75 1 1 12052 0
(source: https://forums.daybreakgames.com/eq/...2#post-3625906)


In 2017 Ngreth posted a changelog for the item Obsidianwood Sap, which shows the current frequency, die size and item percent. The item table/list also includes a second item (should be Fire Arachnid Silk) and the changelog shows the percentages for both. So we can know how the tables currently are and compare it to Magelo.

Quote:
Originally Posted by Ngreth
The ENTIRE changelog for Magma Crystals then Obsidianwood Sap (I only changed the dev names)
The last time anything was even touched was 2006, and it looks like it was when some sort of change in data structure required a touch of the DB, though nothing was actually changed at that time
tt is the treasure table (chance for the list of items to drop) and it is the items table, the list of items that can drop.

(Torven: some irrelevant data was removed for brevity)
TIMESTAMP USER_NAME TRANSACTION_TYPE TABLE_NAME PK_VALUE MODIFIED_FIELD OLD_DATA NEW_DATA
17-Sep-02 <DEV2> INSERT tt 98113
17-Sep-02 <DEV2> UPDATE tt 98113 item_die_size 1 2
17-Oct-02 <DEV2> UPDATE tt 98113 item_frequency 45 40
03-Dec-02 <DEV3> UPDATE tt 98113 item_list_id 98113 981130
03-Dec-02 <DEV3> UPDATE tt 98113 item_list_id 981130 98113
17-Sep-02 <DEV2> INSERT it 98113
18-Sep-02 <DEV2> UPDATE it 98113 ITEM_2_NUM -1 15
18-Sep-02 <DEV2> UPDATE it 98113 ITEM_1_PERCENT 100 85
18-Sep-02 <DEV2> UPDATE it 98113 ITEM_2_PERCENT 0 10
18-Sep-02 <DEV2> UPDATE it 98113 ITEM_1_PERCENT 85 90
18-Sep-02 <DEV2> UPDATE it 98113 ITEM_2_NUM 15 29495
(source: https://forums.daybreakgames.com/eq/.../#post-3607870)


In 2018 Prathun pasted part of Quarm's treasure table:

Quote:
Originally Posted by Prathun
These are the relevant bits from Quarm's treasure tables:

TREASURE_CLASS_DESCRIPTION ITEM_FREQUENCY ITEM_DIE_SIZE ITEM_NUM_DICE
TIMBFinalDragon1 100 1 1
TIMBFinalDragon2 100 1 1
TIMBFinalDragon3 100 1 1
TIMBFinalDragon4 50 1 1
(source: https://forums.daybreakgames.com/eq/...2#post-3704604)


In 2018 Ngreth pasted an item table/list from a Time Rallos treasure table. This describes one of RZ's drops. The significance here is that the Darkblade may only drop from this item table and that RZ has two other item tables for his other 2 drops and those do not contain the Darkblade in them, meaning multiple Darkblades from a single kill are impossible. The Sandals were a newer item added late into the expansion and it's likely that all drops in the table were 20% before it was added.

Quote:
Originally Posted by Ngreth
TREASURE_CLASS_DESCRIPTION ITEM% ITEM_# ITEM_LIST_ID
TIMBRallos1 100 1 TIMBRallos1

ITEM_LIST_DESCRIPTION ITEM_PERCENT NAME
TIMBRallos1 16 Shield of Strife
TIMBRallos1 16 Sandals of Empowerment
TIMBRallos1 16 Pauldrons of Devastation
TIMBRallos1 16 Pants of Furious Might
TIMBRallos1 16 Band of Primordial Energy
TIMBRallos1 20 Darkblade of the Warlord
(source: https://forums.daybreakgames.com/eq/.../#post-3704430)


In 2018 Ngreth pasted an item table/list from a recent expansion NPC. Note the drop percentiles, which are either 12 or 13. This strongly suggests that integers are always used here.

Quote:
Originally Posted by Ngreth
So the treasure table has a 75% chance to roll on this table. You *will* get one item from this table is the 75% roll is made.

ITEM_LIST_ID ITEM_LIST_DESCRIPTION ITEM_PERCENT ITEM_ID
12052 SKU25_Loot_Visible_Armor_T1 - Wrist 25 151851
12052 SKU25_Loot_Visible_Armor_T1 - Hands 13 151852
12052 SKU25_Loot_Visible_Armor_T1 - Feet 13 151853
12052 SKU25_Loot_Visible_Armor_T1 - Head 13 151854
12052 SKU25_Loot_Visible_Armor_T1 - Arms 12 151855
12052 SKU25_Loot_Visible_Armor_T1 - Legs 12 151856
12052 SKU25_Loot_Visible_Armor_T1 - Chest 12 151857

So take each and multiply by .75 (75% drop rate) and we get:
25*.75 = 18.75
13*.75 = 9.75
12*.75 = 9.00

next is a debug dump from the NPC. This dump show the chance of a particular item, **NOT** the chance of getting a drop or rolling a particular table. You still roll that item table and get it 75% of the time.

[Tue Feb 06 10:21:17 2018] Requesting loot table for '#an_iron_sentinel00'
[Tue Feb 06 10:21:17 2018] Iron Sentinel's Spike (#151153) - probability 70.000%
[Tue Feb 06 10:21:17 2018] Living Iron Torque (#151121) - probability 30.000%
[Tue Feb 06 10:21:17 2018] Aura of Sky Shield (#151147) - probability 10.000%
[Tue Feb 06 10:21:17 2018] Blessed Shield of Iron (#151146) - probability 6.000%
[Tue Feb 06 10:21:17 2018] Impervious Guardian's Buckler (#151145) - probability 4.000%
[Tue Feb 06 10:21:17 2018] Scale Touched Bracer Facet (#151851) - probability 18.750%
[Tue Feb 06 10:21:17 2018] Scale Touched Cap Facet (#151854) - probability 9.750%
[Tue Feb 06 10:21:17 2018] Scale Touched Shoes Facet (#151853) - probability 9.750%
[Tue Feb 06 10:21:17 2018] Scale Touched Gloves Facet (#151852) - probability 9.750%
[Tue Feb 06 10:21:17 2018] Scale Touched Tunic Facet (#151857) - probability 9.000%
[Tue Feb 06 10:21:17 2018] Scale Touched Pants Facet (#151856) - probability 9.000%
[Tue Feb 06 10:21:17 2018] Scale Touched Sleeve Facet (#151855) - probability 9.000%
[Tue Feb 06 10:21:17 2018] Golem Mud (#15255 - probability 50.000%
[Tue Feb 06 10:21:17 2018] Minor Clawed Tablet of the Ring of Scale (#151901) - probability 15.500%
[Tue Feb 06 10:21:17 2018] Lesser Clawed Tablet of the Ring of Scale (#151902) - probability 13.000%
[Tue Feb 06 10:21:17 2018] Median Clawed Tablet of the Ring of Scale (#151903) - probability 10.000%
[Tue Feb 06 10:21:17 2018] Greater Clawed Tablet of the Ring of Scale (#151904) - probability 7.500%
[Tue Feb 06 10:21:17 2018] Glowing Clawed Tablet of the Ring of Scale (#151905) - probability 4.000%
[Tue Feb 06 10:21:17 2018] Woodcarved Thunderstorm (#149199) - probability 2.600%
[Tue Feb 06 10:21:17 2018] Woodcarved Volcano (#14919 - probability 2.600%
[Tue Feb 06 10:21:17 2018] Woodcarved Ocean (#149197) - probability 2.600%
[Tue Feb 06 10:21:17 2018] Woodcarved Symbol (#149196) - probability 2.600%
[Tue Feb 06 10:21:17 2018] Woodcarved Teardrop (#149203) - probability 2.400%
[Tue Feb 06 10:21:17 2018] Woodcarved Butterfly (#149202) - probability 2.400%
[Tue Feb 06 10:21:17 2018] Woodcarved Rainstorm (#149201) - probability 2.400%
[Tue Feb 06 10:21:17 2018] Woodcarved Flower Bulb (#149200) - probability 2.400%

Also. This stuff (treasure tables) are rolled FIRST. then global loot is rolled next. So the tradeskill stuff, which is dropped on global loot, does not show in this loo and does not interfere with this loot becuase it is AFTER.
(source: https://forums.daybreakgames.com/eq/...3#post-3626100)

I pulled the Magelo data to compare it with. Magelo only had 95 kills for this NPC, but it's interesting to compare with the actual probabilities:

Iron Sentinel's Spike 151153 53 55.79%
Living Iron Torque 151121 32 33.68%
Aura of Sky Shield 151147 6 6.32%
Blessed Shield of Iron 151146 7 7.37%
Impervious Guardian's Buckler 151145 6 6.32%
Scale Touched Bracer Facet 151851 19 20.00%
Scale Touched Gloves Facet 151852 6 6.32%
Scale Touched Shoes Facet 151853 4 4.21%
Scale Touched Cap Facet 151854 11 11.58%
Scale Touched Sleeve Facet 151855 5 5.26%
Scale Touched Pants Facet 151856 7 7.37%
Scale Touched Tunic Facet 151857 6 6.32%
Golem Mud 152558 17 17.89%
Minor Clawed Tablet of the Ring of Scale 151901 14 14.74%
Lesser Clawed Tablet of the Ring of Scale 151902 3 3.16%
Median Clawed Tablet of the Ring of Scale 151903 5 5.26%
Greater Clawed Tablet of the Ring of Scale 151904 3 3.16%
Glowing Clawed Tablet of the Ring of Scale 151905 2 2.11%
Woodcarved Symbol 149196 1 1.05%
Woodcarved Ocean 149197 1 1.05%
Woodcarved Thunderstorm 149199 2 2.11%
Woodcarved Flower Bulb 149200 1 1.05%
Woodcarved Butterfly 149202 1 1.05%


In 2018 Ngreth outlines how the logic works. Note he says 'a d100' which more or less confirms the integers used in item tables.

Quote:
Originally Posted by Ngreth
* NPC spawns
* NPC has a list of Treasure tables on it
* Starts a loop of the treasure tables.
* It rolls a 100 RNG for each, checking against the percentage (75 in the case of vis)
* If it hits, it then rolls against the Item List. The item list totals to 100%. We get an error and the zone export fails if that total is not 100. Thus if it gets to this point, it is going to attempt to add an item to the NPC and the only way this will fail is if the NPC is full.
* Continue to loop until there are no more treasure tables.
* Loop through the global loot that is available in the zone and see if it matches any of the restrictions for the global loot.
* if it does, roll the chance for the global loot (this is NOT a d100, as we can put very small percentages in global loot... see Ultra Rare raid drops in group content)
* If it hits, it then rolls against the Item List. The item list totals to 100%. We get an error and the zone export fails if that total is not 100. Thus if it gets to this point, it is going to attempt to add an item to the NPC and the only way this will fail is if the NPC is full.

The designer that asked for the command that outputs the loot with the individual item percentages wanted to see individual item percentages, so had them calculate it out. The system does not roll those individual item percentages, it is calculated information.
(source: https://forums.daybreakgames.com/eq/...4#post-3626451)


In 2018 Prathun mentions how global loot worked:

Quote:
Originally Posted by Prathun
Global loot actually uses a different system. It still calls item lists, but doesn't use treasure tables. It's logically more like "call this item list when an NPC meets the following zone / level / race / mat / difficulty criteria" which is great for when we want to have Hero's Forge items drop from bosses, gnoll fangs from low level gnolls, or tradeskill items from certain zones or NPC types... without having to tie a treasure table to dozens or hundreds of NPCs.

Fun factoid: There are over 50 distinct ways that an item can enter the world via database design data (so, not counting scripts).
(source: https://forums.daybreakgames.com/eq/...2#post-3704604)


2018 Ngreth post:

Quote:
Originally Posted by Ngreth
NPC's can only have 22 things on them. They can have hundreds of treasure tables, and roll them all, but once it gets 22 items on them... anything else disappears.
(source: https://forums.daybreakgames.com/eq/...3#post-3626100)


A 2021 Ngreth post. This seems contradictory to the previous post. 'this is NOT a treasure table' sounds like NPCs can be designed to spawn with worn gear that has a 100% chance to exist on spawn and this is not a treasure table. If that is the case then I don't understand the 22 number.

Quote:
Originally Posted by Ngreth
An NPC can only hold 8 pieces of loot in the equivalent of player bag slots that NPCs have. They wanted to give him lots of stuff, but that wouls sometimes maen some thigns wouldn't drop.
to remedy that, they took things from treasure tables and forced them on the body slots (NPCs have the same basic inventory players have) so they stock the head in the "head" slot (helm) BUT this is NOT a treasure table.

randomized loot works on treasure tables.

the fix is to move those body things to treasure tables, but it is also a "needs a patch" fix.
(source: https://forums.daybreakgames.com/eq/.../#post-4058739)
Reply With Quote
  #2  
Old 11-08-2022, 06:26 AM
Torven
Sarnak
 
Join Date: Aug 2014
Posts: 52
Default

The key thing to understand is that Sony uses a XdY die system which is actually quite simple and flexible. EQEmu's system/schema cannot replicate Sony's output in all cases and is also less intuitive and more complex.

Treasure tables and item tables are essentially two components of EQEmu's singular lootdrop table. The treasure table contains the "frequency" which is the probability, plus the die size (which EQEmu lacks), die rolls (multiplier) and item table ID. Separating the tables this way allows item table reuse. EQEmu's analogs would simply be probability and muliplier; also I suppose mindrop and droplimit which Sony does not have. EQEmu does a probability roll for each multiplier iteration however so the functionality is not identical. When you reuse lootdrops in EQEmu, each master NPC loot table has their own copies of these lootdrop values to allow flexible reuse like Sony does.

EQEmu's lootdrop primarily differs in how multiple items can drop from a single lootdrop. EQEmu has multiple ways/modes of interpreting the table list. The original way lootdrops were handled was to simply roll each item individually and possibly drop each one if the roll succeeded. Sony's way adds up all the drop chances which must add up to 100% then rolls once to determine which item drops. EQEmu added mindrop and droplimit to ensure a drop or enforce a maximum. Unfortuneately these parameters did not result in actual drop rates that matched the input drop percentiles and often resulted in highly unpredictable drop rates, so new ways of processing the tables had to be added.

I bought up that issue in 2015 and KLS implemented a solution which improved things. KLS essentially added two new table processing modes. Instead of rolling each item individually, when mindrop>0 it will instead add up all the item percentiles together and do a single roll against it all and that roll decides the item, which is done mindrop number of times. This is much closer to how Sony does their tables. There is the minor issue of this being unintuitive in that you will end up with duplicate items when you would not expect them when you set mindrop>1, but it's otherwise more desirable because drops rates will end up more predictable. This is essentially a different table 'mode' because it's running an entirely different loop, but nothing in the editor form indicates this so it's unintuitive.

If droplimit > mindrop, ANOTHER loop is run after the previous loop, or is run in place of it if mindrop=0. This loop does a single roll against either the sum of the item chances or 100, whichever is higher. In that way the roll can allow the possibility that nothing drops while ensuring drop chances are as they are input. This is effectively a third table mode. It works well if drop limit is 1 and mindrop is 0; however this creates some issues otherwise:

1) It becomes impossible for more than one item to drop at the same time without re-running the loop, but rerunning the loop is counterintuitive when not handling mindrops; after all you wouldn't re-run the loop when mindrop and droplimit are both 0.
2) If you re-run the loop, you end up with too many drops; sometimes WAY too many drops depending on the table parameters.
3) If you re-run the loop, you can end up with mindrop+1 drops of the same item (items with multiplier set to 1) which makes no sense.
4) If mindrop>0, then the dropped items average is higher than expected; i.e. mindrop=1 droplimit=2 will drop significantly more items on average (even while the limit is enforced; varies depending on the item drop rates) than mindrop=1 droplimit<=mindrop.

In 2020 I implemented a somewhat crude solution for TAKP to mitigate the above problem by implementing a fourth loop which is run if droplimit is 2+ above mindrop. It is essentially the loop that would have been used if we were not ensuring that drop chances are literal to the table data. It randomizes the starting point of the items and rolls against them individually and exists once the limit is reached. This mostly works because the higher the droplimit above mindrop, the closer the results will be to the literal table percentages, so drops using +2 droplimit will be much closer to the table % than +1 droplimit. This does not fix problems 3 and 4 however, but will prevent high droplimits from creating a ton of items.

I see that in 2021 noudess did something to the drop code but he did not document the change and it's too much of a headache to try and figure out. I can't say what EQEmu's current state is exactly. Just writing this post was a headache. You can see how complicated this got just trying to make the actual drop rate match the drop chance input by the content developer. Even after all that, it still isn't accurate in all cases.

Best practice for content developers would be to avoid having a droplimit higher than mindrop if mindrop is non-zero and to not have a droplimit above one if mindrop is 0. Try to make drop chances in lootdrops add up to 100% and use multipliers and probabilities to drop multiples.

I'll use Dozekar as an example to illustrate the primary issue EQEmu has in being unable to replicate Sony's drop rates. Dozekar can drop between one and seven tear items. The chance to drop any given number of tears should be about 14.3% each (100/7 or 1d7). But the only way to try and replicate this with EQEmu would be to create two identical lootdrops of the tears, make one table a 100% single drop, and the other table 50% probability with multiplier 6. However if you do that the result will end up like this:

Kills with 1 total drops: 15334 (1.53%)
Kills with 2 total drops: 94001 (9.40%)
Kills with 3 total drops: 234776 (23.48%)
Kills with 4 total drops: 312521 (31.25%)
Kills with 5 total drops: 233834 (23.38%)
Kills with 6 total drops: 94101 (9.41%)
Kills with 7 total drops: 15433 (1.54%)

That was the result of a loot simulation script I wrote simulating 1,000,000 kills. This problem occurs for any dX roll of 3 or higher, so will be a problem for items like spider silk. So not only do you need to make two tables/lootdrops, but you cannot get accurate results even with two tables.

For TAKP I had Cavedude implement a 'multiplier minimum' field to lootdrops years ago which elimiated the need to make two tables, but the unequalness in drops probability remains for TAKP. This was not a good solution and I now know that a better solution would have been to add a boolean field which when toggled on would randomize the multiplier value when the NPC spawned from 1 to X. Even this would still only work if the probability is 100% because EQEmu does a probability roll for each multiplier, unlike Sony. That is also why simply adding a new integer field to serve as a die size wouldn't work for all cases.
Reply With Quote
  #3  
Old 11-08-2022, 06:28 AM
Torven
Sarnak
 
Join Date: Aug 2014
Posts: 52
Default

How can we improve our drop tables now that we know how Sony's system works? I have a couple of examples.

In 2017 Ngreth posted a changelog for the item Obsidianwood Sap, which shows the current frequency, die size and item percent. The item table/list also includes a second item and the changelog shows the percentages for both. So we can know how the tables currently are and compare it to Magelo to get a better idea of Magelo's bias.

Quote:
Originally Posted by Ngreth
TIMESTAMP USER_NAME TRANSACTION_TYPE TABLE_NAME PK_VALUE MODIFIED_FIELD OLD_DATA NEW_DATA
17-Sep-02 <DEV2> INSERT tt 98113
17-Sep-02 <DEV2> UPDATE tt 98113 item_die_size 1 2
17-Oct-02 <DEV2> UPDATE tt 98113 item_frequency 45 40
03-Dec-02 <DEV3> UPDATE tt 98113 item_list_id 98113 981130
03-Dec-02 <DEV3> UPDATE tt 98113 item_list_id 981130 98113
17-Sep-02 <DEV2> INSERT it 98113
18-Sep-02 <DEV2> UPDATE it 98113 ITEM_2_NUM -1 15
18-Sep-02 <DEV2> UPDATE it 98113 ITEM_1_PERCENT 100 85
18-Sep-02 <DEV2> UPDATE it 98113 ITEM_2_PERCENT 0 10
18-Sep-02 <DEV2> UPDATE it 98113 ITEM_1_PERCENT 85 90
18-Sep-02 <DEV2> UPDATE it 98113 ITEM_2_NUM 15 29495
(source: https://forums.daybreakgames.com/eq/.../#post-3607870)

The treasure table item_frequency is 40%, meaning the NPC has a 40% chance to check the item table.
The treasure table item_die_size is 2, meaning it's 1d2 meaning it has one guaranteed drop if the frequency roll succeeds and a 50% chance for a second drop.
The item table has two items. The item ID is not shown but given the drop chance this drop has to be Fire Arachnid Silk.

Since the item table is 1d2, this means there should be a very small chance to get two saps from one mob. I checked old Al'Kabor logs for this and did find one case of somebody looting two saps within 1 second of each other which pretty much confirms it. Somebody could park a character in the zone with a merc to confirm this as well but I'm satisfied with the log I have.

Magelo drop rates for sap shows 5%, and for the silk 34%. Magelo rounds down for these drop percentiles, and manually calculating Magelo's data shows the drop rate about 5.5%. I've checked a lot of Magelo pages and I can say that Magelo often (but not always) has a negative bias for drops which is often around -5 to -10%, so this is pretty much as expected. This bias is clearly seen when checking drop rates for items that have a 100% drop chance but Magelo lists ~90-95%. Also Magelo counts all drops of multiples of an item as one. For silk the real drop rate (assuming my math is correct) should be 37.8%. (0.4*0.9 + 0.4*0.5*0.1*0.9) For sap the drop rate should be 5.8%. (0.4*0.1 + 0.4*0.5*0.9*0.1)

---

Recently I improved the drop rates for some tradeskill items on TAKP. These items were Swirling Shadows and Shadeling Silk.

Swirling Shadows has a magelo drop rate of about 39% in Twilight Sea. I have some old AK logs of me farming these; I obtained about 2,000 of them and the average loot per kill was almost exactly 60%. Since these have a 1d2 item table die as they have a 50/50 chance to drop 1 or 2, this strongly implies a 40% chance frequency roll. It would make some sense for the Magelo bias to not be as bad there because the only reason to be there is to farm these things.

Shadeling Silk has a die size of 3, meaning 3 can drop from a kill. Magelo lists drop chances of 34% to 44% for this. I checked my old AK logs of me farming this. I killed 364 lesser shades which resulted in: 56 dropped one silk; 57 dropped 2 silks; 39 dropped 3 silks; 152 (41.7%) dropped one or more silks. I also killed 508 xakra larva which resulted in 419 shadeling silks. That is a loot per kill of 82.5%. A frequency roll of 40% with a 1d3 item die would result in a loot per kill rate of 80%. It actually makes some sense for Magelo's data to be less accurate here because with a larger die size comes more streakiness.

It's worth pointing out that often the higher drop rates on Magelo are from weaker NPCs, such is the case with Shadeling silk. This likely is the result of Sony copy and pasting the treasure tables along with the item tables for the NPCs and the lower level NPCs ending up higher due to margin of error. We can however see examples of Sony using different treasure tables for the same item table for tables of high level gems; i.e. Karnor's and City of Mist NPCs will not drop Fire Emeralds and such at the same rate as Plane of Fear NPCs even while using the same table.

---

Since item tables must add up to 100% and Sony probably always used integers here, and presuming that Sony generally used multiples of 5 for frequency (it would be weird not to), this helps us improve the accuracy of drop tables.

There is an item table containing the Mithril Amulet item which drops items meant to be sold to vendors for money. By checking out multiple NPCs that drop Mithril Amulets we can see that the item table is:

Pearl Necklace, Fire Opal, Star Ruby, Fire Emerald, Sapphire, Emerald Ring, Opal Bracelet, Mithril Amulet

I added up all the drop percentiles for these items on several NPCs with a high drop chance for this table and the results were about 13-14%. It seems likely that Sony had a 15% frequency/probabiliy for this table for NPCs known to have dropped them commonly, such as planar mobs. (as mentioned above, some zones dropped these with a lower frequency)

We can attempt to get estimates for each individual item table drop percentile by dividing 1 by the sum of all of the table's drop chances and multiplying by the individual chance. Seafury Cyclopses in Ocean of Tears have the highest number of kills on Magelo, so that is the best NPC to look at:

a seafury cyclops; item table sum = 13.66%

Pearl Necklace 1.80% 13.14%
Fire Opal 1.97% 14.44%
Star Ruby 2.06% 15.08%
Fire Emerald 1.58% 11.58%
Sapphire 1.46% 10.69%
Emerald Ring 2.07% 15.13%
Opal Bracelet 1.42% 10.41%
Mithril Amulet 1.30% 9.52%

A lot of these values are close to either 10% or 15%. Sony's table may have used 10 and 15 values. The more valuable drops are the 10% values which makes this more plausible. Although Pearl Necklace and Fire Emerald are off by enough that those may have been different. I checked other tables and Fire Emerald was also significantly higher than 10% on those as well but randomness is notoriously streaky and narrowing down stuff to within one percent requires a LOT of trials, so some guesswork will always be required.

Incidentally I checked the Ruby Crown table as well and those are uniform at around 11% each.
Reply With Quote
  #4  
Old 11-08-2022, 11:10 PM
Torven
Sarnak
 
Join Date: Aug 2014
Posts: 52
Default

I wrote a lua script to scrape drop data from Magelo NPC pages. The output is formatted to be pasted into spreadsheets, where I organize it in a way to try and figure out Sony's item tables and get a better idea of drop rates by comparing drop chances between multiple NPCs. It's also a way to preserve data in case Magelo goes offline.

The script requires some lua libraries to execute. I am using a lua distribution called 'Lua with batteries' from luadist.org but unfortunately the website in the last few months expired and a domain squatter took it. If you trust me I put it on my Google Drive, but if you don't want to trust me you can try to find the libraries yourself. https://drive.google.com/file/d/1AdG...usp=share_link

I would paste the script in a CODE block here but the forum software is choking on it for some reason. So here's a pastebin link: https://pastebin.com/WXxwL85T
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 07:59 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3