Files
Questie-Octo/References/QuestieOld/Database/npcDB.lua
T

86 lines
3.4 KiB
Lua

---@class QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB");
---@type Expansions
local Expansions = QuestieLoader:ImportModule("Expansions");
---@class DatabaseNpcKeys
QuestieDB.npcKeys = {
['name'] = 1, -- string
['minLevelHealth'] = 2, -- int
['maxLevelHealth'] = 3, -- int
['minLevel'] = 4, -- int
['maxLevel'] = 5, -- int
['rank'] = 6, -- int, see https://github.com/cmangos/issues/wiki/creature_template#rank
['spawns'] = 7, -- table {[zoneID(int)] = {coordPair(floatVector2D),...},...}
['waypoints'] = 8, -- table {[zoneID(int)] = {coordPair(floatVector2D),...},...}
['zoneID'] = 9, -- guess as to where this NPC is most common
['questStarts'] = 10, -- table {questID(int),...}
['questEnds'] = 11, -- table {questID(int),...}
['factionID'] = 12, -- int, see https://github.com/cmangos/issues/wiki/FactionTemplate.dbc
['friendlyToFaction'] = 13, -- string, Contains "A" and/or "H" depending on NPC being friendly towards those factions. nil if hostile to both.
['subName'] = 14, -- string, The title or function of the NPC, e.g. "Weapon Vendor"
['npcFlags'] = 15, -- int, Bitmask containing various flags about the NPCs function (Vendor, Trainer, Flight Master, etc.).
-- For flag values see https://github.com/cmangos/mangos-classic/blob/172c005b0a69e342e908f4589b24a6f18246c95e/src/game/Entities/Unit.h#L536
}
QuestieDB.npcKeysReversed = {}
for key, id in pairs(QuestieDB.npcKeys) do
QuestieDB.npcKeysReversed[id] = key
end
QuestieDB.npcCompilerTypes = {
['name'] = "u8string",
['minLevelHealth'] = "u32",
['maxLevelHealth'] = "u32",
['minLevel'] = "u8",
['maxLevel'] = "u8",
['rank'] = "u8",
['spawns'] = "spawnlist",
['waypoints'] = "waypointlist",
['zoneID'] = "u16",
['questStarts'] = "u8u24array",
['questEnds'] = "u8u24array",
['factionID'] = "u16",
['friendlyToFaction'] = "faction",
['subName'] = "u8string",
['npcFlags'] = "u32",
}
QuestieDB.npcCompilerOrder = { -- order easily skipable data first for efficiency
--static size
'minLevelHealth', 'maxLevelHealth', 'minLevel', 'maxLevel', 'rank', 'zoneID', 'factionID', 'friendlyToFaction', 'npcFlags',
-- variable size
'name', 'spawns', 'waypoints', 'questStarts', 'questEnds', 'subName'
}
---@enum NpcFlags
QuestieDB.npcFlags = {
NONE = 0,
GOSSIP = 1,
QUEST_GIVER = 2,
VENDOR = Questie.IsClassic and 4 or 128,
FLIGHT_MASTER = Questie.IsClassic and 8 or 8192,
TRAINER = 16,
SPIRIT_HEALER = Questie.IsClassic and 32 or 16384,
SPIRIT_GUIDE = Questie.IsClassic and 64 or 32768,
INNKEEPER = Questie.IsClassic and 128 or 65536,
BANKER = Questie.IsClassic and 256 or 131072,
PETITIONER = Questie.IsClassic and 512 or 262144,
TABARD_DESIGNER = Questie.IsClassic and 1024 or 524288,
BATTLEMASTER = Questie.IsClassic and 2048 or 1048576,
AUCTIONEER = Questie.IsClassic and 4096 or 2097152,
STABLEMASTER = Questie.IsClassic and 8192 or 4194304,
REPAIR = Questie.IsClassic and 16384 or 4096,
BARBER = (Expansions.Current >= Expansions.Wotlk) and 33554432 or nil,
ARCANE_REFORGER = Expansions.Current >= Expansions.Cata and 134217728 or nil,
TRANSMOGRIFIER = Expansions.Current >= Expansions.Cata and 268435456 or nil
}
-- temporary, until we remove the old db funcitons
QuestieDB._npcAdapterQueryOrder = {}
for key, id in pairs(QuestieDB.npcKeys) do
QuestieDB._npcAdapterQueryOrder[id] = key
end