Files
Questie-X/Database/itemDB.lua
T

131 lines
4.3 KiB
Lua

---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB");
QuestieDB.itemKeys = {
['name'] = 1, -- string
['npcDrops'] = 2, -- table or nil, NPC IDs
['objectDrops'] = 3, -- table or nil, object IDs
['itemDrops'] = 4, -- table or nil, item IDs
['startQuest'] = 5, -- int or nil, ID of the quest started by this item
['questRewards'] = 6, -- table or nil, quest IDs
['flags'] = 7, -- int or nil, see: https://github.com/cmangos/issues/wiki/Item_template#flags
['foodType'] = 8, -- int or nil, see https://github.com/cmangos/issues/wiki/Item_template#foodtype
['itemLevel'] = 9, -- int, the level of this item
['requiredLevel'] = 10, -- int, the level required to equip/use this item
['ammoType'] = 11, -- int,
['class'] = 12, -- int,
['subClass'] = 13, -- int,
['vendors'] = 14, -- table or nil, NPC IDs
['relatedQuests'] = 15, -- table or nil, IDs of quests that are related to this item
['teachesSpell'] = 16, -- int, spellID taught by this item upon use
}
QuestieDB.itemKeysReversed = {}
local key, id = next(QuestieDB.itemKeys)
while key do
QuestieDB.itemKeysReversed[id] = key
key, id = next(QuestieDB.itemKeys, key)
end
-- item class/subClass combinations
--class subClass
-- 0 0 Consumable
-- 1 0 Container, Bag
-- 1 1 Container, Soul bag
-- 1 2 Container, Herb bag
-- 1 3 Container, Enchanting bag
-- 1 4 Container, Engineering bag
-- 2 0 Weapon, Axe 1H
-- 2 1 Weapon, Axe 2H
-- 2 2 Weapon, Bow
-- 2 3 Weapon, Gun
-- 2 4 Weapon, Mace 1H
-- 2 5 Weapon, Mace 2H
-- 2 6 Weapon, Polearm
-- 2 7 Weapon, Sword 1H
-- 2 8 Weapon, Sword 2H
-- 2 10 Weapon, Staff
-- 2 13 Weapon, Fist weapon
-- 2 14 Weapon, Miscellaneous
-- 2 15 Weapon, Dagger
-- 2 16 Weapon, Thrown
-- 2 17 Weapon, Spear
-- 2 18 Weapon, Crossbow
-- 2 19 Weapon, Wand
-- 2 20 Weapon, Fishing pole
-- 4 0 Armor, Miscellaneous
-- 4 1 Armor, Cloth
-- 4 2 Armor, Leather
-- 4 3 Armor, Mail
-- 4 4 Armor, Plate
-- 4 6 Armor, Shield
-- 4 7 Armor, Libram
-- 4 8 Armor, Idol
-- 4 9 Armor, Totem
-- 5 0 Reagent
-- 6 2 Projectile, Arrow
-- 6 3 Projectile, Bullet
-- 7 0 Trade goods, Trade goods
-- 7 1 Trade goods, Parts
-- 7 2 Trade goods, Explosives
-- 7 3 Trade goods, Devices
-- 9 0 Recipe, Book
-- 9 1 Recipe, Leatherworking
-- 9 2 Recipe, Tailoring
-- 9 3 Recipe, Engineering
-- 9 4 Recipe, Blacksmithing
-- 9 5 Recipe, Cooking
-- 9 6 Recipe, Alchemy
-- 9 7 Recipe, First aid
-- 9 8 Recipe, Enchanting
-- 9 9 Recipe, Fishing
-- 11 2 Quiver
-- 11 3 Ammo pouch
-- 12 0 Quest
-- 13 0 Key
-- 13 1 Lockpick
-- 15 0 Miscellaneous, Junk
QuestieDB.itemClasses = {
QUEST = 12,
}
QuestieDB.itemCompilerTypes = {
["foodType"] = "u8",
["itemLevel"] = "u16",
["flags"] = "u32",
["startQuest"] = "u24",
["requiredLevel"] = "u8",
["ammoType"] = "u8",
["class"] = "u8",
["subClass"] = "u8",
["npcDrops"] = "u16u24array",
["objectDrops"] = "u8u24array",
["itemDrops"] = "u8u24array",
["vendors"] = "u8u24array",
["relatedQuests"] = "u8u24array",
["questRewards"] = "u8u24array",
["name"] = "u8string",
["teachesSpell"] = "u24",
}
QuestieDB.itemCompilerOrder = { -- order easily skipable data first for efficiency
--static size
"flags", "startQuest", "itemLevel", "requiredLevel", "foodType", "ammoType", "class", "subClass", "teachesSpell",
-- variable size
"name", "relatedQuests", "questRewards", "npcDrops", "objectDrops", "vendors", "itemDrops"
}
-- temporary, until we remove the old db funcitons
QuestieDB._itemAdapterQueryOrder = {}
local key, id = next(QuestieDB.itemKeys)
while key do
QuestieDB._itemAdapterQueryOrder[id] = key
key, id = next(QuestieDB.itemKeys, key)
end
-- itemData is nil until a DB plugin sets it