I had already started a proposal for reworking the way the inventory is structured, based on VoA concepts, prior to the Steam RoF offering.
Seeing as how there are now new features that need to be accounted for, and fixes to the old system that need to be accomplished, now is probably
the best time to bring this up.
Code:
Nomenclature EQEMu Reference (New) EQEMu Reference (Old)
Range MainSlot SubSlot Range (uint16) MainSlot (uint16) SubSlot (uint16) Slot (sint16)
Worn Charm Parent 1 << 0 0 0 0
Worn Ear01 Parent 1 << 0 1 0 1
Worn Head Parent 1 << 0 2 0 2
Worn Face Parent 1 << 0 3 0 3
Worn Ear02 Parent 1 << 0 4 0 4
Worn Neck Parent 1 << 0 5 0 5
Worn Shoulders Parent 1 << 0 6 0 6
Worn Arms Parent 1 << 0 7 0 7
Worn Back Parent 1 << 0 8 0 8
Worn Bracer01 Parent 1 << 0 9 0 9
Worn Bracer02 Parent 1 << 0 10 0 10
Worn Range Parent 1 << 0 11 0 11
Worn Hands Parent 1 << 0 12 0 12
Worn Primary Parent 1 << 0 13 0 13
Worn Secondary Parent 1 << 0 14 0 14
Worn Ring01 Parent 1 << 0 15 0 15
Worn Ring02 Parent 1 << 0 16 0 16
Worn Chest Parent 1 << 0 17 0 17
Worn Legs Parent 1 << 0 18 0 18
Worn Feet Parent 1 << 0 19 0 19
Worn Waist Parent 1 << 0 20 0 20
Worn Power Source Parent 1 << 0 21 0 9999
Worn Ammo Parent 1 << 0 22 0 21
Worn <…> Parent 1 << 0 <…> 0 { DNE }
Worn <Unknown> Parent 1 << 0 65535 0 { DNE }
Personal Inventory 1 Parent (Child Range) 1 << 1 0 0 (1 - 65535) 22 (251 - 260)
Personal Inventory 2 Parent (Child Range) 1 << 1 1 0 (1 - 65535) 23 (261 - 270)
Personal Inventory 3 Parent (Child Range) 1 << 1 2 0 (1 - 65535) 24 (271 - 280)
Personal Inventory 4 Parent (Child Range) 1 << 1 3 0 (1 - 65535) 25 (281 - 290)
Personal Inventory 5 Parent (Child Range) 1 << 1 4 0 (1 - 65535) 26 (291 - 300)
Personal Inventory 6 Parent (Child Range) 1 << 1 5 0 (1 - 65535) 27 (301 - 310)
Personal Inventory 7 Parent (Child Range) 1 << 1 6 0 (1 - 65535) 28 (311 - 320)
Personal Inventory 8 Parent (Child Range) 1 << 1 7 0 (1 - 65535) 29 (321 - 330)
Personal Inventory 9 Parent (Child Range) 1 << 1 8 0 (1 - 65535) { DNE }
Personal Inventory 10 Parent (Child Range) 1 << 1 9 0 (1 - 65535) { DNE }
Personal Inventory <…> Parent (Child Range) 1 << 1 <…> 0 (1 - 65535) { DNE }
Personal Inventory 65536 Parent (Child Range) 1 << 1 65535 0 (1 - 65535) { DNE }
Cursor Cusor Parent (Child Range) 1 << 2 0 0 (1 - 65535) 30 (331 - 340)
Tribute Tribute 1 Parent 1 << 3 0 0 400
Tribute Tribute 2 Parent 1 << 3 1 0 401
Tribute Tribute 3 Parent 1 << 3 2 0 402
Tribute Tribute 4 Parent 1 << 3 3 0 403
Tribute Tribute 5 Parent 1 << 3 4 0 404
Tribute Tribute <…> Parent 1 << 3 <…> 0 { DNE }
Tribute Tribute 65536 Parent 1 << 3 65535 0 { DNE }
Bank Bank 1 Parent (Child Range) 1 << 4 0 0 (1 - 65535) 2000 (2031 - 2040)
Bank Bank 2 Parent (Child Range) 1 << 4 1 0 (1 - 65535) 2001 (2041 - 2050)
Bank Bank 3 Parent (Child Range) 1 << 4 2 0 (1 - 65535) 2002 (2051 - 2060)
Bank Bank 4 Parent (Child Range) 1 << 4 3 0 (1 - 65535) 2003 (2061 - 2070)
Bank Bank 5 Parent (Child Range) 1 << 4 4 0 (1 - 65535) 2004 (2071 - 2080)
Bank Bank 6 Parent (Child Range) 1 << 4 5 0 (1 - 65535) 2005 (2081 - 2090)
Bank Bank 7 Parent (Child Range) 1 << 4 6 0 (1 - 65535) 2006 (2091 - 2100)
Bank Bank 8 Parent (Child Range) 1 << 4 7 0 (1 - 65535) 2007 (2101 - 2110)
Bank Bank 9 Parent (Child Range) 1 << 4 8 0 (1 - 65535) 2008 (2111 - 2120)
Bank Bank 10 Parent (Child Range) 1 << 4 9 0 (1 - 65535) 2009 (2121 - 2130)
Bank Bank 11 Parent (Child Range) 1 << 4 10 0 (1 - 65535) 2010 (2131 - 2140)
Bank Bank 12 Parent (Child Range) 1 << 4 11 0 (1 - 65535) 2011 (2141 - 2150)
Bank Bank 13 Parent (Child Range) 1 << 4 12 0 (1 - 65535) 2012 (2151 - 2160)
Bank Bank 14 Parent (Child Range) 1 << 4 13 0 (1 - 65535) 2013 (2161 - 2170)
Bank Bank 15 Parent (Child Range) 1 << 4 14 0 (1 - 65535) 2014 (2171 - 2180)
Bank Bank 16 Parent (Child Range) 1 << 4 15 0 (1 - 65535) 2015 (2181 - 2190)
Bank Bank 17 Parent (Child Range) 1 << 4 16 0 (1 - 65535) 2016 (2191 - 2200)
Bank Bank 18 Parent (Child Range) 1 << 4 17 0 (1 - 65535) 2017 (2201 - 2210)
Bank Bank 19 Parent (Child Range) 1 << 4 18 0 (1 - 65535) 2018 (2211 - 2220)
Bank Bank 20 Parent (Child Range) 1 << 4 19 0 (1 - 65535) 2019 (2221 - 2230)
Bank Bank 21 Parent (Child Range) 1 << 4 20 0 (1 - 65535) 2020 (2231 - 2240)
Bank Bank 22 Parent (Child Range) 1 << 4 21 0 (1 - 65535) 2021 (2241 - 2250)
Bank Bank 23 Parent (Child Range) 1 << 4 22 0 (1 - 65535) 2022 (2251 - 2260)
Bank Bank 24 Parent (Child Range) 1 << 4 23 0 (1 - 65535) 2023 (2261 - 2270)
Bank Bank <…> Parent (Child Range) 1 << 4 <…> 0 (1 - 65535) { DNE }
Bank Bank 65536 Parent (Child Range) 1 << 4 65535 0 (1 - 65535) { DNE }
Shared Bank Shared Bank 1 Parent (Child Range) 1 << 5 0 0 (1 - 65535) 2500 (2531 - 2540)
Shared Bank Shared Bank 2 Parent (Child Range) 1 << 5 1 0 (1 - 65535) 2501 (2541 - 2550)
Shared Bank Shared Bank <…> Parent (Child Range) 1 << 5 <…> 0 (1 - 65535) { DNE }
Shared Bank Shared Bank 65536 Parent (Child Range) 1 << 5 65535 0 (1 - 65535) { DNE }
Trade Trade 1 Parent (Child Range) 1 << 6 0 0 (1 - 65535) 3000 (3100 - 3109)
Trade Trade 2 Parent (Child Range) 1 << 6 1 0 (1 - 65535) 3001 (3110 - 3119)
Trade Trade 3 Parent (Child Range) 1 << 6 2 0 (1 - 65535) 3002 (3120 - 3129)
Trade Trade 4 Parent (Child Range) 1 << 6 3 0 (1 - 65535) 3003 (3130 - 3139)
Trade Trade 5 Parent (Child Range) 1 << 6 4 0 (1 - 65535) 3004 (3140 - 3149)
Trade Trade 6 Parent (Child Range) 1 << 6 5 0 (1 - 65535) 3005 (3150 - 3159)
Trade Trade 7 Parent (Child Range) 1 << 6 6 0 (1 - 65535) 3006 (3160 - 3169)
Trade Trade 8 Parent (Child Range) 1 << 6 7 0 (1 - 65535) 3007 (3170 - 3179)
Trade Trade <…> Parent (Child Range) 1 << 6 <…> 0 (1 - 65535) { DNE }
Trade Trade 65536 Parent (Child Range) 1 << 6 65535 0 (1 - 65535) { DNE }
World Container World Container 1 Parent 1 << 7 0 0 4000
World Container World Container 2 Parent 1 << 7 1 0 4001
World Container World Container 3 Parent 1 << 7 2 0 4002
World Container World Container 4 Parent 1 << 7 3 0 4003
World Container World Container 5 Parent 1 << 7 4 0 4004
World Container World Container 6 Parent 1 << 7 5 0 4005
World Container World Container 7 Parent 1 << 7 6 0 4006
World Container World Container 8 Parent 1 << 7 7 0 4007
World Container World Container 9 Parent 1 << 7 8 0 4008
World Container World Container 10 Parent 1 << 7 9 0 4009
World Container World Container <…> Parent 1 << 7 <…> 0 { DNE }
World Container World Container 65536 Parent 1 << 7 65535 0 { DNE }
Cursor Buffer Cursor Buffer Parent 1 << 8 (0 - 36 { client max }) 0 8000 - 8101 { db max: 8999 }
Overload Items Overload Items Parent 1 << 9 (0 - 65535) 0 { DNE }
Buy Back Buy Back Parent 1 << 10 (0 - 65535) 0 { DNE }
- Each range would essentially be unlimited, as would the number of bag slots.
- The 'Overload Items' range would contain items that are pushed to cursor when the cursor buffer is full.
- The 'Buy Back' range accomodates the RoF client's merchant buy back of deleted items.
- { DNE } - 'Does Not Exist'
Some mild conversions will be needed for all clients, more for older ones. This probably doesn't match what the RoF client uses, but is
likely closer than the existing if it uses anything resembling the VoA.
This also gives us the flexibility we need for parsing range functions.