diff --git a/addons/EmpyPopTracker/EmpyPopTracker.lua b/addons/EmpyPopTracker/EmpyPopTracker.lua
new file mode 100644
index 000000000..a87bbf5d2
--- /dev/null
+++ b/addons/EmpyPopTracker/EmpyPopTracker.lua
@@ -0,0 +1,326 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+_addon.name = 'Empy Pop Tracker'
+_addon.author = 'Dean James (Xurion of Bismarck)'
+_addon.commands = { 'ept', 'empypoptracker' }
+_addon.version = '2.0.0'
+
+config = require('config')
+res = require('resources')
+nm_data = require('nms/index')
+
+active = false
+
+local EmpyPopTracker = {}
+
+local defaults = {}
+defaults.text = {}
+defaults.text.pos = {}
+defaults.text.pos.x = 0
+defaults.text.pos.y = 0
+defaults.text.bg = {}
+defaults.text.bg.alpha = 150
+defaults.text.bg.blue = 0
+defaults.text.bg.green = 0
+defaults.text.bg.red = 0
+defaults.text.bg.visible = true
+defaults.text.padding = 8
+defaults.text.text = {}
+defaults.text.text.font = 'Consolas'
+defaults.text.text.size = 10
+defaults.tracking = 'briareus'
+defaults.visible = true
+defaults.add_to_chat_mode = 8
+
+EmpyPopTracker.settings = config.load(defaults)
+EmpyPopTracker.text = require('texts').new(EmpyPopTracker.settings.text, EmpyPopTracker.settings)
+
+colors = {}
+colors.success = '\\cs(100,255,100)'
+colors.danger = '\\cs(255,50,50)'
+colors.warning = '\\cs(255,170,0)'
+colors.close = '\\cr'
+
+function owns_item(id, items)
+ for _, bag in ipairs(items) do
+ for _, item in ipairs(bag) do
+ if item.id == id then
+ return true
+ end
+ end
+ end
+
+ return false
+end
+
+function owns_key_item(id, items)
+ local owned = false
+
+ for _, item_id in pairs(items) do
+ if item_id == id then
+ owned = true
+ break
+ end
+ end
+
+ return owned
+end
+
+function item_treasure_pool_count(id, treasure)
+ local count = 0
+
+ for _, item in pairs(treasure) do
+ if item.item_id == id then
+ count = count + 1
+ end
+ end
+
+ return count
+end
+
+function ucwords(str)
+ local result = string.gsub(str, '(%a)([%w_\']*)', function(first, rest)
+ return first:upper() .. rest:lower()
+ end)
+
+ return result
+end
+
+function get_indent(depth)
+ return string.rep(' ', depth)
+end
+
+function generate_text(data, key_items, items, depth)
+ local text = depth == 1 and data.name or ''
+ for _, pop in pairs(data.pops) do
+ local resource
+ local item_scope
+ local owns_pop
+ local in_pool_count = 0
+ local item_identifier = ''
+
+ if pop.type == 'key item' then
+ resource = res.key_items[pop.id]
+ owns_pop = owns_key_item(pop.id, key_items)
+ item_identifier = 'Ж '
+ else
+ resource = res.items[pop.id]
+ owns_pop = owns_item(pop.id, items)
+ in_pool_count = item_treasure_pool_count(pop.id, items.treasure)
+ end
+
+ local pop_name = 'Unknown pop'
+ if resource then
+ pop_name = ucwords(resource.name)
+ end
+
+ --separator line for each top-level mob
+ if depth == 1 then
+ text = text .. '\n'
+ end
+
+ local item_colour
+ if owns_pop then
+ item_colour = colors.success
+ else
+ item_colour = colors.danger
+ end
+
+ local pool_notification = ''
+ if in_pool_count > 0 then
+ pool_notification = colors.warning .. ' [' .. in_pool_count .. ']' .. colors.close
+ end
+ text = text .. '\n' .. get_indent(depth) .. pop.dropped_from.name .. '\n' .. get_indent(depth) .. ' >> ' .. item_colour .. item_identifier .. pop_name .. colors.close .. pool_notification
+ if pop.dropped_from.pops then
+ text = text .. generate_text(pop.dropped_from, key_items, items, depth + 1)
+ end
+ end
+
+ return text
+end
+
+EmpyPopTracker.generate_info = function(nm, key_items, items)
+ local info = {
+ has_all_kis = true,
+ text = ''
+ }
+
+ if nm.pops then
+ for _, key_item_data in pairs(nm.pops) do
+ local has_pop_ki = owns_key_item(key_item_data.id, key_items)
+
+ if not has_pop_ki then
+ info.has_all_kis = false
+ end
+ end
+ end
+
+ info.text = generate_text(nm, key_items, items, 1)
+
+ return info
+end
+
+function find_nms(pattern)
+ local matching_nms = {}
+ local lower_pattern = pattern:lower()
+ for _, nm in pairs(nm_data) do
+ local nm_name = nm.name:lower()
+ local result = windower.wc_match(nm_name, lower_pattern)
+ if result then
+ table.insert(matching_nms, nm_name)
+ end
+ end
+
+ return matching_nms
+end
+
+windower.register_event('addon command', function(command, ...)
+ command = command and command:lower() or 'help'
+
+ if commands[command] then
+ commands[command](...)
+ else
+ commands.help()
+ end
+end)
+
+commands = {}
+
+commands.track = function(...)
+ local args = {...}
+ local nm_search_pattern = args[1]
+ local matching_nm_names = find_nms(nm_search_pattern)
+
+ if #matching_nm_names == 0 then
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, 'Unable to find a NM using: "' .. nm_search_pattern .. '"')
+ elseif #matching_nm_names > 1 then
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, '"' .. nm_search_pattern .. '" matches ' .. #matching_nm_names .. ' NMs. Please be more explicit:')
+ for key, matching_file_name in pairs(matching_nm_names) do
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, ' Match ' .. key .. ': ' .. ucwords(matching_file_name))
+ end
+ else
+ active = true
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, 'Now tracking: ' .. ucwords(matching_nm_names[1]))
+ EmpyPopTracker.settings.tracking = matching_nm_names[1]
+ EmpyPopTracker.update()
+ commands.show()
+ end
+end
+commands.t = commands.track
+
+commands.hide = function()
+ active = false
+ EmpyPopTracker.text:visible(false)
+ EmpyPopTracker.settings.visible = false
+ EmpyPopTracker.settings:save()
+end
+
+commands.show = function()
+ active = true
+ EmpyPopTracker.text:visible(true)
+ EmpyPopTracker.settings.visible = true
+ EmpyPopTracker.settings:save()
+ EmpyPopTracker.update()
+end
+
+commands.help = function()
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, '---Empy Pop Tracker---')
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, 'Available commands:')
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, '//ept track briareus - tracks Briareus pops (search patterns such as apadem* work too!)')
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, '//ept hide - hides the UI')
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, '//ept show - shows the UI')
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, '//ept list - lists all trackable NMs')
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, '//ept help - displays this help')
+end
+
+commands.list = function()
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, '---Empy Pop Tracker---')
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, 'Trackable NMs:')
+ for _, nm in pairs(nm_data) do
+ windower.add_to_chat(EmpyPopTracker.settings.add_to_chat_mode, ucwords(nm.name))
+ end
+end
+
+commands.bg = function()
+ local tracking_nm = nm_data[EmpyPopTracker.settings.tracking]
+ local url = 'https://www.bg-wiki.com/bg/' .. tracking_nm.name
+ windower.open_url(url)
+end
+
+EmpyPopTracker.update = function()
+ local key_items = windower.ffxi.get_key_items()
+ local items = windower.ffxi.get_items()
+ local tracked_nm_data = nm_data[EmpyPopTracker.settings.tracking]
+ local generated_info = EmpyPopTracker.generate_info(tracked_nm_data, key_items, items)
+ EmpyPopTracker.text:text(generated_info.text)
+ if generated_info.has_all_kis then
+ EmpyPopTracker.text:bg_color(0, 75, 0)
+ else
+ EmpyPopTracker.text:bg_color(0, 0, 0)
+ end
+ if EmpyPopTracker.settings.visible then
+ EmpyPopTracker.text:visible(true)
+ end
+end
+
+windower.register_event('load', function()
+ if windower.ffxi.get_info().logged_in and EmpyPopTracker.settings.visible then
+ active = true
+ EmpyPopTracker.update()
+ end
+end)
+
+windower.register_event('add item', 'remove item', function()
+ if active then
+ EmpyPopTracker.update()
+ end
+end)
+
+windower.register_event('incoming chunk', function(id)
+ --0x055: KI update
+ --0x0D2: Treasure pool addition
+ --0x0D3: Treasure pool lot/drop
+ if active and id == 0x055 or id == 0x0D2 or id == 0x0D3 then
+ EmpyPopTracker.update()
+ end
+end)
+
+windower.register_event('login', function()
+ if EmpyPopTracker.settings.visible then
+ EmpyPopTracker.text:visible(true)
+ active = true
+ end
+end)
+
+windower.register_event('logout', function()
+ EmpyPopTracker.text:visible(false)
+ active = false
+end)
+
+return EmpyPopTracker
diff --git a/addons/EmpyPopTracker/README.md b/addons/EmpyPopTracker/README.md
new file mode 100644
index 000000000..f674c3c94
--- /dev/null
+++ b/addons/EmpyPopTracker/README.md
@@ -0,0 +1,53 @@
+# FFXI Empyrean Pop Tracker
+
+An FFXI Windower 4 addon that tracks items and key items for popping Empyrean NMs in Abyssea, such as Briareus, Apademak and Sobek.
+
+ 
+
+Key items are identified by the Zhe (Ж) character. Treasure pool counts for pop items are listed in amber after the item in the format of [3] (assuming 3 of that item in the pool).
+
+## Load
+
+`//lua load empypoptracker`
+
+## Track an NM
+
+`//ept track glavoid` tracks Glavoid pop items/key items.
+
+You can also track an NM by using a wildcard pattern, because fuck having to remember how to spell Itzpapalotl:
+
+`//ept track itz*`
+
+For a full list of trackable NMs, see the nms directory or use the `list` command (see below).
+
+## Other Commands
+
+### List Trackable NMs
+
+`//ept list`
+
+### Open BG Wiki for NM
+
+`//ept bg`
+
+### Hide UI
+
+`//ept hide`
+
+### Show UI
+
+`//ept show`
+
+### Display Help
+
+`//ept help`
+
+## Where is Fistule?
+
+Fistule is a unique NM when compared to the others. It does not require KIs that can be tracked, so it isn't included with the addon.
+
+## Contributing
+
+Notice something not quite right? [Raise an issue](https://github.com/xurion/ffxi-empy-pop-tracker/issues).
+
+[Pull requests](https://github.com/xurion/ffxi-empy-pop-tracker/pulls) welcome!
diff --git a/addons/EmpyPopTracker/nms/README.md b/addons/EmpyPopTracker/nms/README.md
new file mode 100644
index 000000000..d9e9278bd
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/README.md
@@ -0,0 +1,64 @@
+# NM data
+
+The data structure for each trackable NM uses a series of nested NM entities. A standard NM entity contains the following data:
+
+| Key | Type | Required? | Description |
+| ------------------- | --------- | --------- | ------------------------------ |
+| name | String | Required | Name of the NM |
+| pops | Table | Optional | The pop information for the NM |
+| pops{}.id | Number | Required | The ID of the item/key item |
+| pops{}.type | String | Required | Either "key item" or "item" |
+| pops{}.dropped_from | NM Entity | Required | A nested set of NM information |
+
+A simple example of the above would be:
+
+```lua
+{
+ name = 'Azdaja',
+ pops = { {
+ id = 1531, --Vacant Bugard Eye
+ type = 'key item',
+ dropped_from = { name = 'Deelgeed, Timed (F-9/F-10)' }
+ } }
+}
+```
+
+A larger example with multiple nested entites:
+
+```lua
+{
+ name = 'Bukhis',
+ pops = { {
+ id = 1508, --Ingrown Taurus Nail
+ type = 'key item',
+ dropped_from = {
+ name = 'Khalkotaur, Forced (F-4)',
+ pops = { {
+ id = 3098, --Gnarled Taurus Horn
+ type = 'item',
+ dropped_from = { name = 'Aestutaur (G-9/G-10)' }
+ } }
+ }
+ }, {
+ id = 1509, --Ossified Gargouille Hand
+ type = 'key item',
+ dropped_from = {
+ name = 'Quasimodo, Forced (F-4)',
+ pops = { {
+ id = 3099, --Gargouille Stone
+ type = 'item',
+ dropped_from = {
+ name = 'Gruesome Gargouille (F-10/G-10)'
+ }
+ } }
+ }
+ }, {
+ id = 1510, --Imbrued Vampyr Fang
+ type = 'key item',
+ dropped_from = { name = 'Lord Varney, Timed (G-10/H-10)' }
+ } }
+}
+
+```
+
+The main addon file requires the index.lua file which in turn is responsible for requiring and returning data for each nm.
diff --git a/addons/EmpyPopTracker/nms/alfard.lua b/addons/EmpyPopTracker/nms/alfard.lua
new file mode 100644
index 000000000..ee492fd25
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/alfard.lua
@@ -0,0 +1,58 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Alfard',
+ pops = { {
+ id = 1530, --Venomous hydra fang
+ type = 'key item',
+ dropped_from = {
+ name = 'Ningishzida, Forced (I-7/I-8)',
+ pops = { {
+ id = 3262, --Jaculus Wing
+ type = 'item',
+ dropped_from = { name = 'Jaculus, Timed (I-8)' }
+ }, {
+ id = 3261, --Minaruja Skull
+ type = 'item',
+ dropped_from = {
+ name = 'Minaruja, Forced (I-10)',
+ pops = { {
+ id = 3267, --Pursuer's Wing
+ type = 'item',
+ dropped_from = { name = 'Faunus Wyvern (I-9)' }
+ } }
+ }
+ }, {
+ id = 3268, --High-Quality Wivre Hide
+ type = 'item',
+ dropped_from = { name = 'Glade Wivre (I-8)' }
+ } }
+ }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/apademak.lua b/addons/EmpyPopTracker/nms/apademak.lua
new file mode 100644
index 000000000..4ecec8aec
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/apademak.lua
@@ -0,0 +1,57 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Apademak',
+ pops = { {
+ id = 1525, --Torn Khimaira Wing
+ type = 'key item',
+ dropped_from = {
+ name = 'Dhorme Khimaira, Forced (F-7)',
+ pops = { {
+ id = 3246, --Snow God Core
+ type = 'item',
+ dropped_from = {
+ name = 'Upas-Kamuy, Forced (G-5)',
+ pops = { {
+ id = 3252, --Gelid Arm
+ dropped_from = { name = 'Snowflake (G-5)' }
+ } }
+ }
+ }, {
+ id = 3247, --Sisyphus Fragment
+ type = 'item',
+ dropped_from = { name = 'Sisyphus, Timed (F-6/G-6)' }
+ }, {
+ id = 3253, --High-quality marid hide
+ type = 'item',
+ dropped_from = { name = 'Olyphant (F-6)' }
+ } }
+ }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/azdaja.lua b/addons/EmpyPopTracker/nms/azdaja.lua
new file mode 100644
index 000000000..cb06f668d
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/azdaja.lua
@@ -0,0 +1,36 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Azdaja',
+ pops = { {
+ id = 1531, --Vacant Bugard Eye
+ type = 'key item',
+ dropped_from = { name = 'Deelgeed, Timed (F-9/F-10)' }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/briareus.lua b/addons/EmpyPopTracker/nms/briareus.lua
new file mode 100644
index 000000000..7b2e68d4b
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/briareus.lua
@@ -0,0 +1,65 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Briareus',
+ pops = { {
+ id = 1482, --Dented Gigas Shield
+ type = 'key item',
+ dropped_from = {
+ name = 'Adamastor, Forced (C-4)',
+ pops = { {
+ id = 2894, --Trophy Shield
+ type = 'item',
+ dropped_from = { name = 'Bathyal Gigas (C-5/D-5)' }
+ } }
+ }
+ }, {
+ id = 1484, --Severed Gigas Collar
+ type = 'key item',
+ dropped_from = {
+ name = 'Grandgousier, Forced (F-10)',
+ pops = { {
+ id = 2896, --Massive Armband
+ type = 'item',
+ dropped_from = { name = 'Demersal Gigas (E-9/F-9)' }
+ } }
+ }
+ }, {
+ id = 1483, --Warped Gigas Armband
+ type = 'key item',
+ dropped_from = {
+ name = 'Pantagruel, Forced (F-7)',
+ pops = { {
+ id = 2895, --Oversized Sock
+ type = 'item',
+ dropped_from = { name = 'Hadal Gigas (F-6/F-7)' }
+ } }
+ }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/bukhis.lua b/addons/EmpyPopTracker/nms/bukhis.lua
new file mode 100644
index 000000000..b1926152a
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/bukhis.lua
@@ -0,0 +1,60 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Bukhis',
+ pops = { {
+ id = 1508, --Ingrown Taurus Nail
+ type = 'key item',
+ dropped_from = {
+ name = 'Khalkotaur, Forced (F-4)',
+ pops = { {
+ id = 3098, --Gnarled Taurus Horn
+ type = 'item',
+ dropped_from = { name = 'Aestutaur (G-9/G-10)' }
+ } }
+ }
+ }, {
+ id = 1509, --Ossified Gargouille Hand
+ type = 'key item',
+ dropped_from = {
+ name = 'Quasimodo, Forced (F-4)',
+ pops = { {
+ id = 3099, --Gargouille Stone
+ type = 'item',
+ dropped_from = {
+ name = 'Gruesome Gargouille (F-10/G-10)'
+ }
+ } }
+ }
+ }, {
+ id = 1510, --Imbrued Vampyr Fang
+ type = 'key item',
+ dropped_from = { name = 'Lord Varney, Timed (G-10/H-10)' }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/carabosse.lua b/addons/EmpyPopTracker/nms/carabosse.lua
new file mode 100644
index 000000000..ad9aa0079
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/carabosse.lua
@@ -0,0 +1,54 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Carabosse',
+ pops = { {
+ id = 1485, --Pellucid Fly Eye
+ type = 'key item',
+ dropped_from = {
+ name = 'La Theine Liege, Forced (I-7)',
+ pops = { {
+ id = 2897, --Transparent Insect Wing
+ type = 'item',
+ dropped_from = { name = 'Plateau Glider (H-7)' }
+ } }
+ }
+ }, {
+ id = 1486, --Shimmering Pixie Pinion
+ type = 'key item',
+ dropped_from = {
+ name = 'Baba Yaga, Forced (H-7)',
+ pops = { {
+ id = 2898, --Piceous Scale
+ type = 'item',
+ dropped_from = { name = 'Farfadet (H-7)' }
+ } }
+ }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/chloris.lua b/addons/EmpyPopTracker/nms/chloris.lua
new file mode 100644
index 000000000..df7451eed
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/chloris.lua
@@ -0,0 +1,113 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Chloris',
+ pops = { {
+ id = 1470, --Gory Scorpion Claw
+ type = 'key item',
+ dropped_from = {
+ name = 'Hedetet, Forced (F-7)',
+ pops = { {
+ id = 2921, --Venomous Scorpion Stinger
+ type = 'item',
+ dropped_from = { name = 'Canyon Scorpion (F-7)' }
+ }, {
+ id = 2948, --Acidic Humus
+ type = 'item',
+ dropped_from = {
+ name = 'Gancanagh, Forced (H-8)',
+ pops = { {
+ id = 2920, --Alkaline Humus
+ type = 'item',
+ dropped_from = { name = 'Pachypodium (H-8)' }
+ } }
+ }
+ } }
+ }
+ }, {
+ id = 1469, --Torn Bat Wing
+ type = 'key item',
+ dropped_from = {
+ name = 'Treble Noctules, Forced (I-9)',
+ pops = { {
+ id = 2919, --Bloody Fang
+ type = 'item',
+ dropped_from = { name = 'Blood Bat (I-9)' }
+ }, {
+ id = 2947, --Exorcised Skull
+ type = 'item',
+ dropped_from = {
+ name = 'Cannered Noz, Forced (F-6)',
+ pops = { {
+ id = 2918, --Baleful Skull
+ type = 'item',
+ dropped_from = { name = 'Caoineag (F-6)' }
+ } }
+ }
+ } }
+ }
+ }, {
+ id = 1468, --Veinous Hecteyes Eyelid
+ type = 'key item',
+ dropped_from = {
+ name = 'Ophanim, Forced (G-9)',
+ pops = { {
+ id = 2946, --Tarnished Pincer
+ type = 'item',
+ dropped_from = {
+ name = 'Vetehinen, Forced (H-10)',
+ pops = { {
+ id = 2916, --High-quality Limule Pincer
+ type = 'item',
+ dropped_from = { name = 'Gulch Limule (H-10)' }
+ }, {
+ id = 2917, --Bloodshot Hecteye
+ type = 'item',
+ dropped_from = { name = 'Beholder (G-9)' }
+ }, {
+ id = 2945, --Shriveled Wing
+ type = 'item',
+ dropped_from = {
+ name = 'Halimede, Forced (G-12)',
+ pops = { {
+ id = 2915, --High-quality Clionid Wing
+ type = 'item',
+ dropped_from = { name = 'Gully Clionid (G-12)' }
+ } }
+ }
+ } }
+ }
+ } }
+ }
+ }, {
+ id = 1471, --Mossy Adamantoise Shell
+ type = 'key item',
+ dropped_from = { name = 'Chukwa, Timed (F-5)' }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/cirein-croin.lua b/addons/EmpyPopTracker/nms/cirein-croin.lua
new file mode 100644
index 000000000..478c23ffe
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/cirein-croin.lua
@@ -0,0 +1,47 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Cirein-croin',
+ pops = { {
+ id = 1504, --Glistening Orobon Liver
+ type = 'key item',
+ dropped_from = {
+ name = 'Cep-Kamuy, Forced (F-4)',
+ pops = { {
+ id = 3089, --Orobon Cheekmeat
+ type = 'item',
+ dropped_from = { name = 'Ancient Orobon (F-5)' }
+ } }
+ }
+ }, {
+ id = 1505, --Doffed Poroggo Hat
+ type = 'key item',
+ dropped_from = { name = 'Heqet, Timed (I-6)' }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/dragua.lua b/addons/EmpyPopTracker/nms/dragua.lua
new file mode 100644
index 000000000..456a477b9
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/dragua.lua
@@ -0,0 +1,36 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Dragua',
+ pops = { {
+ id = 1521, --Bloodied Dragon Ear
+ type = 'key item',
+ dropped_from = { name = 'Hazhdiha, Timed (H-10)' }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/glavoid.lua b/addons/EmpyPopTracker/nms/glavoid.lua
new file mode 100644
index 000000000..9beca3c7d
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/glavoid.lua
@@ -0,0 +1,82 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Glavoid',
+ pops = { {
+ id = 1473, --Sodden Sandworm Husk
+ type = 'key item',
+ dropped_from = { name = 'Minhocao, Timed (I-6)' }
+ }, {
+ id = 1475, --Sticky Gnat Wing
+ type = 'key item',
+ dropped_from = { name = 'Adze, Timed (G-5)' }
+ }, {
+ id = 1472, --Fat-lined Cockatrice Skin
+ type = 'key item',
+ dropped_from = {
+ name = 'Alectryon (H-8)',
+ pops = { {
+ id = 2923, --Cockatrice Tailmeat
+ type = 'item',
+ dropped_from = { name = 'Cluckatrice (H-8)' }
+ }, {
+ id = 2949, --Quivering Eft Egg
+ type = 'item',
+ dropped_from = {
+ name = 'Abas, Forced (K-10)',
+ pops = { {
+ id = 2922, --Eft Egg
+ dropped_from = { name = 'Canyon Eft (J-10/J-11)' }
+ } }
+ }
+ } }
+ }
+ }, {
+ id = 1474, --Luxuriant manticore mane
+ type = 'key item',
+ dropped_from = {
+ name = 'Muscaliet, Forced (J-6)',
+ pops = { {
+ id = 2925, --Resilient Mane
+ type = 'item',
+ dropped_from = { name = 'Hieracosphinx (J-6)' }
+ }, {
+ id = 2950, --Smooth Whisker
+ type = 'item',
+ dropped_from = {
+ name = 'Tefenet, Forced (G-6)',
+ pops = { {
+ id = 2924, --Shocking Whisker
+ dropped_from = { name = 'Jaguarundi (G-6)' }
+ } }
+ }
+ } }
+ }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/index.lua b/addons/EmpyPopTracker/nms/index.lua
new file mode 100644
index 000000000..9091a466a
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/index.lua
@@ -0,0 +1,54 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+local nms = {
+ 'alfard',
+ 'apademak',
+ 'azdaja',
+ 'briareus',
+ 'bukhis',
+ 'carabosse',
+ 'chloris',
+ 'cirein-croin',
+ 'dragua',
+ 'glavoid',
+ 'isgebind',
+ 'itzpapalotl',
+ 'kukulkan',
+ 'orthrus',
+ 'sedna',
+ 'sobek',
+ 'ulhuadshi'
+}
+
+nm_data = {}
+for _, nm in pairs(nms) do
+ nm_data[nm] = require('nms/' .. nm)
+end
+
+return nm_data
diff --git a/addons/EmpyPopTracker/nms/isgebind.lua b/addons/EmpyPopTracker/nms/isgebind.lua
new file mode 100644
index 000000000..1fd4de0e6
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/isgebind.lua
@@ -0,0 +1,36 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Isgebind',
+ pops = { {
+ id = 1526, --Begrimed Dragon Hide
+ type = 'key item',
+ dropped_from = { name = 'Kur, Timed (I-5/J-5)' }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/itzpapalotl.lua b/addons/EmpyPopTracker/nms/itzpapalotl.lua
new file mode 100644
index 000000000..371d4ab8c
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/itzpapalotl.lua
@@ -0,0 +1,58 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Itzpapalotl',
+ pops = { {
+ id = 1488, --Venomous Wamoura Feeler
+ type = 'key item',
+ dropped_from = {
+ name = 'Granite Borer, Forced (K-10)',
+ pops = { {
+ id = 3072, --Withered Cocoon
+ type = 'item',
+ dropped_from = { name = 'Gullycampa (K-10)' }
+ } }
+ }
+ }, {
+ id = 1490, --Distended Chigoe Abdomen
+ type = 'key item',
+ dropped_from = { name = 'Tunga, Timed (K-10)' }
+ }, {
+ id = 1489, --Bulbous crawler cocoon
+ type = 'key item',
+ dropped_from = {
+ name = 'Blazing Eruca, Forced (J-10)',
+ pops = { {
+ id = 3073, --Eruca Egg
+ type = 'item',
+ dropped_from = { name = 'Ignis Eruca (J-10)' }
+ } }
+ }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/kukulkan.lua b/addons/EmpyPopTracker/nms/kukulkan.lua
new file mode 100644
index 000000000..d49fbc8ac
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/kukulkan.lua
@@ -0,0 +1,65 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Kukulkan',
+ pops = { {
+ id = 1466, --Mucid Ahriman Eyeball
+ type = 'key item',
+ dropped_from = {
+ name = 'Arimaspi, Forced (K-6)',
+ pops = { {
+ id = 2913, --Clouded Lens
+ type = 'item',
+ dropped_from = { name = 'Deep Eye (K-6/K-7)' }
+ } }
+ }
+ }, {
+ id = 1464, --Tattered Hippogryph Wing
+ type = 'key item',
+ dropped_from = {
+ name = 'Alkonost, Forced (H-6)',
+ pops = { {
+ id = 2912, --Giant Bugard Tusk
+ type = 'item',
+ dropped_from = { name = 'Ypotryll (I-7)' }
+ } }
+ }
+ }, {
+ id = 1465, --Cracked Wivre Horn
+ type = 'key item',
+ dropped_from = {
+ name = 'Keratyrannos, Forced (G-6)',
+ pops = { {
+ id = 2910, --Armored Dragonhorn
+ type = 'item',
+ dropped_from = { name = 'Mesa Wivre (G-6)' }
+ } }
+ }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/orthrus.lua b/addons/EmpyPopTracker/nms/orthrus.lua
new file mode 100644
index 000000000..16ff706e6
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/orthrus.lua
@@ -0,0 +1,57 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Orthrus',
+ pops = { {
+ id = 1520, --Steaming cerberus tongue
+ type = 'key item',
+ dropped_from = {
+ name = 'Amarok, Forced (E-6)',
+ pops = { {
+ id = 3231, --Sharabha Hide
+ type = 'item',
+ dropped_from = {
+ name = 'Sharabha, Forced (G-5)',
+ pops = { {
+ id = 3237,
+ dropped_from = { name = 'Dune Manticore (F-5/F-6)' }
+ } }
+ }
+ }, {
+ id = 3232, --Tiger King Hide
+ type = 'item',
+ dropped_from = { name = 'Ansherekh, Timed (F-8/G-8)' }
+ }, {
+ id = 3238, --H.Q. Dhalmel Hide
+ type = 'item',
+ dropped_from = { name = 'Camelopardalis (F-7/G-7)' }
+ } }
+ }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/sedna.lua b/addons/EmpyPopTracker/nms/sedna.lua
new file mode 100644
index 000000000..e2d95077c
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/sedna.lua
@@ -0,0 +1,47 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Sedna',
+ pops = { {
+ id = 1512, --Shimmering Pugil Scale
+ type = 'key item',
+ dropped_from = { name = 'Hrosshvalur, Timed (J-6)' }
+ }, {
+ id = 1511, --Glossy Sea Monk Sucker
+ type = 'key item',
+ dropped_from = {
+ name = 'Iku-Turso, Forced (J-7)',
+ pops = { {
+ id = 3100, --Moonbeam Clam
+ type = 'item',
+ dropped_from = { name = 'Jasconius (I-7/J-7)' }
+ } }
+ }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/sobek.lua b/addons/EmpyPopTracker/nms/sobek.lua
new file mode 100644
index 000000000..a9dcaa033
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/sobek.lua
@@ -0,0 +1,58 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Sobek',
+ pops = { {
+ id = 1500, --Molted Peiste Skin
+ type = 'key item',
+ dropped_from = { name = 'Gukumatz, Timed (J-11)' }
+ }, {
+ id = 1498, --Bloodstained Bugard Fang
+ type = 'key item',
+ dropped_from = {
+ name = 'Minax Bugard, Forced (K-10)',
+ pops = { {
+ id = 3085, --Bewitching Tusk
+ type = 'item',
+ dropped_from = { name = 'Abyssobugard (J-10/K-11)' }
+ } }
+ }
+ }, {
+ id = 1499, --Gnarled Lizard Nail
+ type = 'key item',
+ dropped_from = {
+ name = 'Sirrush, Forced (I-11)',
+ pops = { {
+ id = 3086, --Molt Scraps
+ type = 'item',
+ dropped_from = { name = 'Dusk Lizard (J-11)' }
+ } }
+ }
+ } }
+}
diff --git a/addons/EmpyPopTracker/nms/ulhuadshi.lua b/addons/EmpyPopTracker/nms/ulhuadshi.lua
new file mode 100644
index 000000000..38ead1379
--- /dev/null
+++ b/addons/EmpyPopTracker/nms/ulhuadshi.lua
@@ -0,0 +1,47 @@
+--[[
+Copyright © 2020, Dean James (Xurion of Bismarck)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Empy Pop Tracker nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Dean James (Xurion of Bismarck) BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+return {
+ name = 'Ulhuadshi',
+ pops = { {
+ id = 1492, --Shriveled Hecteyes Stalk
+ type = 'key item',
+ dropped_from = { name = 'Amun, Timed (H-8/I-9)' }
+ }, {
+ id = 1491, --Mucid Worm Segment
+ type = 'key item',
+ dropped_from = {
+ name = 'Pallid Percy, Forced (J-7)',
+ pops = { {
+ id = 3074, --Blanched Silver
+ type = 'item',
+ dropped_from = { name = 'Entozoon (J-7)' }
+ } }
+ }
+ } }
+}
diff --git a/addons/EmpyPopTracker/readme/demo-full.png b/addons/EmpyPopTracker/readme/demo-full.png
new file mode 100644
index 000000000..02df409da
Binary files /dev/null and b/addons/EmpyPopTracker/readme/demo-full.png differ
diff --git a/addons/EmpyPopTracker/readme/demo.png b/addons/EmpyPopTracker/readme/demo.png
new file mode 100644
index 000000000..db24c678e
Binary files /dev/null and b/addons/EmpyPopTracker/readme/demo.png differ
diff --git a/addons/addons.xml b/addons/addons.xml
index f09c2cb2d..dfc12b02d 100644
--- a/addons/addons.xml
+++ b/addons/addons.xml
@@ -205,6 +205,13 @@
https://github.com/tehkrizz/Lua/issues
http://www.ffxiah.com/player/Bahamut/Krizz
+
+ EmpyPopTracker
+ Dean James (Xurion of Bismarck)
+ Tracks items and key items for popping Empyrean NMs in Abyssea, such as Briareus, Apademak and Sobek.
+ https://github.com/xurion/ffxi-empy-pop-tracker/issues
+ https://www.ffxiah.com/forum/topic/54376/empyrean-pop-tracker-addon-10-years-late/
+
Enemybar
mmckee