127 lines
4.2 KiB
Lua
127 lines
4.2 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 = {}
|
|
for key, id in pairs(QuestieDB.itemKeys) do
|
|
QuestieDB.itemKeysReversed[id] = 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 = {}
|
|
for key, id in pairs(QuestieDB.itemKeys) do
|
|
QuestieDB._itemAdapterQueryOrder[id] = key
|
|
end
|
|
|
|
-- itemData is nil until a DB plugin sets it
|