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)

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 11-08-2022, 06:25 AM
Torven
Sarnak
 
Join Date: Aug 2014
Posts: 61
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
 


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:41 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