Skip to content

Instantly share code, notes, and snippets.

@Ivaar
Last active May 18, 2020 00:30
Show Gist options
  • Save Ivaar/497ff4c74b1a85dbbba6de22e7b0bf85 to your computer and use it in GitHub Desktop.
Save Ivaar/497ff4c74b1a85dbbba6de22e7b0bf85 to your computer and use it in GitHub Desktop.
return {
[0] = '+Procure: Ceizak Battlegrounds', -- 0
[1] = '+Procure: Foret de Hennetiel',
[2] = '+Procure: Morimar Basalt Fields',
[3] = '+Procure: Yorcia Weald',
[4] = '+Procure: Marjami Ravine',
[5] = '+Procure: Kamihr Drifts',
[6] = '+Procure: Cirdas Caverns',
[7] = "+Procure: Outer Ra'Kaznar",
[8] = '+Clear: Ceizak Battlegrounds',
[9] = '+Clear: Foret de Hennetiel',
[10] = '+Clear: Morimar Basalt Fields',
[11] = '+Clear: Yorcia Weald',
[12] = '+Clear: Marjami Ravine',
[13] = '+Clear: Kamihr Drifts',
[14] = '+Clear: Cirdas Caverns',
[15] = "+Clear: Outer Ra'Kaznar",
[16] = '+Preserve: Ceizak Battlegrounds', -- 64
[17] = '+Preserve: Yahse Hunting Grounds',
[18] = '+Preserve: Foret de Hennetiel',
[19] = '+Preserve: Morimar Basalt Fields',
[20] = '+Preserve: Yorcia Weald',
[21] = '+Preserve: Marjami Ravine',
[22] = '+Preserve: Kamihr Drifts',
[23] = '+Preserve: Cirdas Caverns',
[24] = "+Preserve: Outer Ra'Kaznar",
[25] = '+Patrol: Rala Waterways',
[26] = '+Patrol: Sih Gates',
[27] = '+Patrol: Moh Gates',
[28] = '+Patrol: Cirdas Caverns',
[29] = '+Patrol: Dho Gates',
[30] = '+Patrol: Woh Gates',
[31] = "+Patrol: Outer Ra'Kaznar",
[32] = '+Provide: Foret de Hennetiel', -- 16
[33] = '+Provide: Morimar Basalt Fields',
[34] = '+Provide: Yorcia Weald',
[35] = '+Provide: Marjami Ravine',
[36] = '+Provide: Kamihr Drifts',
[37] = '+Deliver: Foret de Hennetiel',
[38] = '+Deliver: Morimar Basalt Fields',
[39] = '+Deliver: Yorcia Weald',
[40] = '+Deliver: Marjami Ravine',
[41] = '+Deliver: Kamihr Drifts',
[42] = '+Support: Ceizak Battlegrounds',
[43] = '+Support: Foret de Hennetiel',
[44] = '+Support: Morimar Basalt Fields',
[45] = '+Support: Yorcia Weald',
[46] = '+Support: Marjami Ravine',
[47] = '+Support: Kamihr Drifts',
[48] = '+Survey: Ceizak Battlegrounds', -- 48
[49] = '+Survey: Foret de Hennetiel',
[50] = '+Survey: Morimar Basalt Fields',
[51] = '+Survey: Yorcia Weald',
[52] = '+Survey: Marjami Ravine',
[53] = '+Survey: Kamihr Drifts',
[54] = '+Survey: Sih Gates',
[55] = '+Survey: Cirdas Caverns',
[56] = '+Survey: Dho Gates',
[57] = '+Analyze: Foret de Hennetiel',
[58] = '+Analyze: Morimar Basalt Fields',
[59] = '+Analyze: Yorcia Weald',
[60] = '+Analyze: Marjami Ravine',
[61] = '+Analyze: Kamihr Drifts',
[62] = '+Analyze: Cirdas Caverns',
[63] = "+Analyze: Outer Ra'Kaznar",
[64] = '+Gather: Rala Waterways', -- 32
[65] = '+Gather: Ceizak Battlegrounds',
[66] = '+Gather: Yahse Hunting Grounds',
[67] = '+Gather: Foret de Hennetiel',
[68] = '+Gather: Morimar Basalt Fields',
[69] = '+Gather: Yorcia Weald',
[70] = '+Gather: Marjami Ravine',
[71] = '+Gather: Kamihr Drifts',
[72] = '+Gather: Sih Gates',
[73] = '+Gather: Moh Gates',
[74] = '+Gather: Cirdas Caverns',
[75] = '+Gather: Dho Gates',
[76] = '+Gather: Woh Gates',
[77] = "+Gather: Outer Ra'Kaznar",
[78] = "+Gather: Ra'Kaznar Inner Court",
[79] = '+Gather:',
[80] = '+Recover: Ceizak Battlegrounds', -- 80
[81] = '+Recover: Foret de Hennetiel',
[82] = '+Recover: Morimar Basalt Fields',
[83] = '+Recover: Yorcia Weald',
[84] = '+Recover: Marjami Ravine',
[85] = '+Recover: Kamihr Drifts',
[86] = '+Research: Rala Waterways',
[87] = '+Research: Ceizak Battlegrounds',
[88] = '+Research: Foret de Hennetiel',
[89] = '+Research: Morimar Basalt Fields',
[90] = '+Research: Yorcia Weald',
[91] = '+Research: Marjami Ravine',
[92] = '+Research: Kamihr Drifts',
[93] = '+Boost: Foret de Hennetiel',
[94] = '+Boost: Marjami Ravine',
[95] = '+Boost: Kamihr Drifts',
}
_addon.name = 'QuestLog'
_addon.commands = {'quest','ql'}
require('luau')
bit = require('bit')
packets = require('packets')
local cmds = {
abyssea = S{'abyssea','aby'},
adoulin = S{'adoulin','soa'},
coalition = S{'coalition','ca'},
}
local maps = {
quests = {
abyssea = require('quests-abyssea'),
coalition = require('coalition-assignments'),
adoulin = require('quests-adoulin'),
other = require('quests-other'),
}
}
local quests = {completed={},current={}}
function to_set(data)
return {data:unpack('q64':rep(#data/4))}
end
function to_list(data)
local t = {}
for x = 0, 8*#data-1 do
if data:unpack('q', math.floor(x/8)+1, x%8+1) then
t[#t+1] = x
end
end
return t
end
function shift_assignments(data)
return data:sub(1,2) .. data:sub(9,10) ..
data:sub(3,4) .. data:sub(7,8) ..
data:sub(5,6) .. data:sub(11)
end
windower.register_event('incoming chunk', function(id, data, modified, injected, blocked)
if id == 0x056 then
local p = packets.parse('incoming', data)
local Type = bit.band(p.Type, 0xFFFF)
if Type == 0x0070 then
quests.current.other = p['Quest Flags']
elseif Type == 0x00B0 then
quests.completed.other = p['Quest Flags']
elseif Type == 0x00E0 then
quests.current.abyssea = p['Quest Flags']
elseif Type == 0x00E8 then
quests.completed.abyssea = p['Quest Flags']
elseif Type == 0x00F0 then
quests.current.adoulin = p['Quest Flags']
elseif Type == 0x00F8 then
quests.completed.adoulin = p['Quest Flags']
elseif Type == 0x0100 then
quests.current.coalition = p['Quest Flags']
elseif Type == 0x0108 then
quests.completed.coalition = p['Quest Flags']
end
end
end)
function addon_error(str)
windower.add_to_chat(167, 'You must change areas or complete %s quests before using this command.':format(str))
end
function log_quests(quest_type,start,finish)
if not quests.completed[quest_type] then
addon_error(quest_type)
return true
end
local completed = to_set(quests.completed[quest_type])
local current = to_set(quests.current[quest_type])
for x = start, finish do
if not completed[x+1] and maps.quests[quest_type][x] then
windower.add_to_chat(current[x+1] and 167 or 207, maps.quests[quest_type][x])
end
end
end
windower.register_event('addon command', function(...)
if arg[1] == 'eval' then
assert(loadstring(table.concat(arg, ' ',2)))()
elseif cmds.abyssea:contains(arg[1]) then
log_quests('abyssea',0,86)
elseif cmds.adoulin:contains(arg[1]) then
log_quests('adoulin',0,143)
log_quests('other',200,209)
elseif cmds.coalition:contains(arg[1]) then
if not quests.completed.coalition then
addon_error('coalition assignment')
return
end
local red = 167
local green = 204
local blue = 207
local yellow = 159
local complete_count,current_count = 0,0
local current_coalition = to_set(shift_assignments(quests.current.coalition))
local completed_coalition = to_set(shift_assignments(quests.completed.coalition))
windower.add_to_chat(blue, 'Inactive\31\204 Completed\31\167 Current\31\159 Completed + Current')
for id = 0, #maps.quests.coalition do
if #maps.quests.coalition[id] > 8 then
local complete = completed_coalition[id+1]
local current = current_coalition[id+1]
if complete then
complete_count = complete_count + 1
end
if current then
current_count = current_count + 1
end
local color = complete and current and yellow or complete and green or current and red or blue
windower.add_to_chat(color, maps.quests.coalition[id]:sub(2))
end
end
windower.add_to_chat(blue,'%d/95 Complete and %d Current assignments':format(complete_count, current_count))
end
end)
return {
[0] = 'Catering Capers',
[1] = 'Gift of Light',
[2] = 'Fear of the Dark III',
[3] = 'An Eye for Revenge',
[4] = 'Unbreak His Heart',
[5] = 'Explosive Endeavors',
[6] = 'The Angling Armorer',
[7] = 'Water of Life',
[8] = 'Out of Touch',
[9] = 'Lost Memories',
[10] = 'Hope Blooms on the Battlefield',
[11] = 'Of Malnourished Martellos',
[12] = 'Rose on the Heath',
[13] = 'Full-of-Himself Alchemist',
[14] = 'The Walking Wounded',
[15] = 'Shady Business Redux',
[16] = 'Addled Mind, Undying Dreams',
[17] = 'The Soul of the Matter',
[18] = 'Secret Agent Man',
[19] = 'Playing Paparazzi',
[20] = 'His Box, His Beloved',
[21] = 'Weapons, Not Worries',
[22] = 'Cleansing the Canyon',
[23] = 'Savory Salvation',
[24] = 'Bringing Down the Mountain',
[25] = 'A Sterling Specimen',
[26] = 'For Love of a Daughter',
[27] = 'Sisters in Crime',
[28] = 'When Good Cardians Go Bad',
[29] = 'Tangling with Tongue-twisters',
[30] = 'A Ward to End All Wards',
[31] = "The Boxwatcher's Behest",
[32] = 'His Bridge, His Beloved',
[33] = 'Bad Communication',
[34] = 'Family Ties',
[35] = 'Aqua Pura',
[36] = 'Aqua Puraga',
[37] = 'Whither the Whisker',
[38] = 'Scattered Shells, Scattered Mind',
[39] = 'Wayward Wares',
[40] = 'Looking for Lookouts',
[41] = 'Flown the Coop',
[42] = 'Threadbare Tribulations',
[43] = "An Offer You Can't Refuse",
[44] = 'Something in the Air',
[45] = 'An Acrididaen Anodyne',
[46] = 'Hazy Prospects',
[47] = 'For Want of a Pot',
[48] = 'Missing in Action',
[49] = 'I Dream of Flowers',
[50] = 'Destiny Odyssey',
[51] = 'Unidentified Research Object',
[52] = 'Cookbook of Hope Restoring',
[53] = 'Smoke over the Coast',
[54] = 'Soil and Green',
[55] = 'Dropping the Bomb',
[56] = 'Wanted: Medical Supplies',
[57] = 'Voices from Beyond',
[58] = 'Benevolence Lost',
[59] = "Brugaire's Ambition",
[60] = 'Chocobo Panic',
[61] = 'The Egg Enthusiast',
[62] = 'Getting Lucky',
[63] = "Her Father's Legacy",
[64] = 'The Mysterious Head Patrol',
[65] = 'Master Missing, Master Missed',
[66] = 'The Perils of Kororo',
[67] = 'Let There Be Light',
[68] = 'Look Out Below',
[69] = 'Home, Home on the Range',
[70] = 'Imperial Espionage',
[71] = 'Imperial Espionage II',
[72] = 'Boreal Blossoms',
[73] = 'Brothers in Arms',
[74] = 'Scouts Astray',
[75] = 'Frozen Flame Redux',
[76] = "Slip Slidin' Away",
[77] = 'Classrooms Without Borders',
[78] = 'The Secret Ingredient',
[79] = 'Help Not Wanted',
[80] = 'The Titus Touch',
[81] = 'Slacking Subordinates',
[82] = 'Motherly Love',
[83] = 'Look to the Sky',
[84] = 'The Unmarked Tomb',
[85] = 'Proof of the Lion',
[86] = 'Brygid the Stylist Strikes Back',
[87] = 'Dominion Op #01 (Altepa)',
[88] = 'Dominion Op #02 (Altepa)',
[89] = 'Dominion Op #03 (Altepa)',
[90] = 'Dominion Op #04 (Altepa)',
[91] = 'Dominion Op #05 (Altepa)',
[92] = 'Dominion Op #06 (Altepa)',
[93] = 'Dominion Op #07 (Altepa)',
[94] = 'Dominion Op #08 (Altepa)',
[95] = 'Dominion Op #09 (Altepa)',
[96] = 'Dominion Op #10 (Altepa)',
[97] = 'Dominion Op #11 (Altepa)',
[98] = 'Dominion Op #12 (Altepa)',
[99] = 'Dominion Op #13 (Altepa)',
[100] = 'Dominion Op #14 (Altepa)',
[101] = 'Dominion Op #01 (Uleguerand)',
[102] = 'Dominion Op #02 (Uleguerand)',
[103] = 'Dominion Op #03 (Uleguerand)',
[104] = 'Dominion Op #04 (Uleguerand)',
[105] = 'Dominion Op #05 (Uleguerand)',
[106] = 'Dominion Op #06 (Uleguerand)',
[107] = 'Dominion Op #07 (Uleguerand)',
[108] = 'Dominion Op #08 (Uleguerand)',
[109] = 'Dominion Op #09 (Uleguerand)',
[110] = 'Dominion Op #10 (Uleguerand)',
[111] = 'Dominion Op #11 (Uleguerand)',
[112] = 'Dominion Op #12 (Uleguerand)',
[113] = 'Dominion Op #13 (Uleguerand)',
[114] = 'Dominion Op #14 (Uleguerand)',
[115] = 'Dominion Op #01 (Grauberg)',
[116] = 'Dominion Op #02 (Grauberg)',
[117] = 'Dominion Op #03 (Grauberg)',
[118] = 'Dominion Op #04 (Grauberg)',
[119] = 'Dominion Op #05 (Grauberg)',
[120] = 'Dominion Op #06 (Grauberg)',
[121] = 'Dominion Op #07 (Grauberg)',
[122] = 'Dominion Op #08 (Grauberg)',
[123] = 'Dominion Op #09 (Grauberg)',
[124] = 'Ward Warden I (Attohwa)',
[125] = 'Ward Warden I (Misareaux)',
[126] = 'Ward Warden I (Vunkerl)',
[127] = 'Ward Warden II (Attohwa)',
[128] = 'Ward Warden II (Misareaux)',
[129] = 'Ward Warden II (Vunkerl)',
[130] = 'Desert Rain I (Attohwa)',
[131] = 'Desert Rain I (Misareaux)',
[132] = 'Desert Rain I (Vunkerl)',
[133] = 'Desert Rain II (Attohwa)',
[134] = 'Desert Rain II (Misareaux)',
[135] = 'Desert Rain II (Vunkerl)',
[136] = 'Crimson Carpet I (Attohwa)',
[137] = 'Crimson Carpet I (Misareaux)',
[138] = 'Crimson Carpet I (Vunkerl)',
[139] = 'Crimson Carpet II (Attohwa)',
[140] = 'Crimson Carpet II (Misareaux)',
[141] = 'Crimson Carpet II (Vunkerl)',
[142] = 'Refuel and Replenish (La Theine)',
[143] = 'Refuel and Replenish (Konschtat)',
[144] = 'Refuel and Replenish (Tahrongi)',
[145] = 'Refuel and Replenish (Attohwa)',
[146] = 'Refuel and Replenish (Misareaux)',
[147] = 'Refuel and Replenish (Vunkerl)',
[148] = 'Refuel and Replenish (Altepa)',
[149] = 'Refuel and Replenish (Uleguerand)',
[150] = 'Refuel and Replenish (Grauberg)',
[151] = 'A Mightier Martello (La Theine)',
[152] = 'A Mightier Martello (Konschtat)',
[153] = 'A Mightier Martello (Tahrongi)',
[154] = 'A Mightier Martello (Attohwa)',
[155] = 'A Mightier Martello (Misareaux)',
[156] = 'A Mightier Martello (Vunkerl)',
[157] = 'A Mightier Martello (Altepa)',
[158] = 'A Mightier Martello (Uleguerand)',
[159] = 'A Mightier Martello (Grauberg)',
[160] = 'A Journey Begins',
[161] = 'The Truth Beckons',
[162] = 'Dawn of Death',
[163] = 'A Goldstruck Gigas',
[164] = 'To Paste a Peiste',
[165] = 'Megadrile Menace',
[166] = 'The Forbidden Frontier',
[167] = 'First Contact',
[168] = 'An Officer and a Pirate',
[169] = 'Heart of Madness',
[170] = 'Tenuous Existence',
[171] = 'Champions of Abyssea',
[172] = 'The Beast of Bastore',
[173] = 'A Delectable Demon',
[174] = 'A Fluttery Fiend',
[175] = 'Scars of Abyssea',
[176] = 'A Beaked Blusterer',
[177] = 'A Man-eating Mite',
[178] = 'An Ulcerous Uragnite',
[179] = 'Heroes of Abyssea',
[180] = "A Sea Dog's Summons",
[181] = 'Death and Rebirth',
[182] = 'Emissaries of God',
[183] = 'Beneath a Blood-red Sky',
[184] = 'The Wyrm God',
[185] = 'Meanwhile, Back on Abyssea',
[186] = 'A Moonlight Requite',
[187] = 'Dominion Op #10 (Grauberg)',
[188] = 'Dominion Op #11 (Grauberg)',
[189] = 'Dominion Op #12 (Grauberg)',
[190] = 'Dominion Op #13 (Grauberg)',
[191] = 'Dominion Op #14 (Grauberg)',
}
return {
[0] = 'Twitherym Dust',
[1] = 'To Catch a Predator',
[2] = 'Empty Nest',
[5] = "Don't Clam Up on Me Now",
[6] = 'Hop to It',
[9] = 'Boiling Over',
[10] = 'Poisoning the Well',
[12] = 'Unsullied Lands',
[16] = 'No Rime Like the Present',
[18] = 'A Geothermal Expedition',
[22] = 'Endeavoring to Awaken',
[23] = 'Forging New Bonds',
[24] = 'Legacies Lost and Found',
[25] = "Destiny's Device",
[26] = 'Granddaddy Dearest',
[27] = 'Wayward Waypoints',
[28] = 'One Good Turn...',
[29] = 'F.A.I.L.ure Is Not an Option',
[30] = 'Order Up',
[31] = 'It Never Goes Out of Style',
[32] = 'Water, Water, Everywhere',
[33] = 'Dirt Cheap',
[34] = 'Flower Power',
[35] = 'Elementary, My Dear Sylvie',
[36] = 'For Whom the Bell Tolls',
[37] = 'The Bloodline of Zacariah',
[38] = 'The Communion',
[39] = 'Full Fields',
[40] = 'Green Groves',
[41] = 'Mining Missive',
[42] = 'Pond Probing',
[43] = 'Coastal Chaos',
[44] = 'Seed Sowing',
[45] = 'Flotsam Finding',
[46] = 'Flavors of Our Lives',
[47] = 'Courtesy Crustacean',
[48] = 'Trinket for the Tyrant',
[49] = 'Hypnotic Hospitality',
[50] = 'Western Waypoints, Ho!',
[51] = 'Wes...Eastern Waypoints, Ho!',
[53] = 'Grind to Sawdust',
[54] = 'Breaking the Ice',
[55] = "I'm on a Boat",
[56] = "A Stone's Throw Away",
[57] = 'Hide and Go Peak',
[58] = 'The Whole Place Is Abuzz',
[59] = 'Orobon Appetit',
[60] = 'Talk About Wrinkly Skin',
[61] = 'No Love Lost',
[62] = 'Did You Feel That?',
[70] = "Don't Ever Leaf Me",
[71] = 'Keep Your Bloomers On, Erisa',
[72] = 'Scaredy-Cats',
[73] = 'Raptor Rapture',
[74] = 'Exotic Delicacies',
[75] = "A Pioneer's Best (Imaginary) Friend",
[76] = 'Hunger Strikes',
[77] = 'The Old Man and the Harpoon',
[78] = 'A Certain Substitute Patrolman',
[79] = 'It Sets My Heart Aflutter',
[82] = 'Transporting',
[84] = 'The Starving',
[85] = 'Fertile Ground',
[88] = '"Always more," Quoth the Ravenous',
[89] = 'Meg-alomaniac',
[91] = 'The Longest Way Round...',
[93] = 'A Good Pair of Crocs',
[94] = 'Cafe...teria',
[96] = 'A Shot in the Dark',
[100] = 'Open the Floodgates',
[102] = 'No Laughing Matter',
[103] = 'All the Way to the Bank',
[104] = 'To Laugh Is to Love',
[105] = 'A Barrel of Laughs',
[108] = 'Vegetable Vegetable Revolution',
[109] = 'Vegetable Vegetable Evolution',
[110] = 'Vegetable Vegetable Crisis',
[111] = 'Vegetable Frustration',
[114] = 'A Thirst for the Ages',
[115] = 'A Thirst for the Eons',
[116] = 'A Thirst for Eternity',
[117] = 'A Thirst Before Time',
[118] = 'Dances with Luopans',
[119] = 'Children of the Rune',
[120] = 'Flowers for Svenja',
[121] = 'Thorn in the Side',
[122] = 'Do Not Go Into the Light',
[123] = 'Velkkovert Operations',
[124] = 'Hypocritical Oath',
[125] = 'The Good, the Bad, the Clement',
[126] = "Lerene's Lament",
[127] = 'The Secret to Success',
[128] = 'No Mercy for the Wicked',
[129] = 'Mistress of Ceremonies',
[131] = 'Saved by the Bell',
[132] = 'Quiescence',
[133] = 'Sick and Tired',
[134] = 'Geomancerrific',
[135] = 'Rune Fencing the Night Away',
[136] = 'The Weatherspoon Inquisition',
[137] = 'Eye of the Beholder',
[138] = 'The Curious Case of Melvien',
[139] = 'Not-So-Clean Bill',
[140] = 'In the Land of the Blind',
[141] = 'The Weatherspoon War',
[142] = 'Treasures of the Earth',
[143] = 'Epiphany',
}
return {
[0] = 'Rycharde the Chef',
[1] = 'Way of the Cook',
[2] = 'Unending Chase',
[3] = 'His Name Is Valgeir',
[4] = 'Expertise',
[5] = 'The Clue',
[6] = 'The Basics',
[7] = "Orlando's Antiques",
[8] = 'The Sand Charm',
[9] = "A Potter's Preference",
[10] = 'The Old Lady',
[11] = "Fisherman's Heart",
[16] = 'Donate to Recycling',
[17] = 'Under the Sea',
[18] = 'Only the Best',
[19] = "An Explorer's Footsteps",
[20] = 'Cargo',
[21] = 'The Gift',
[22] = 'The Real Gift',
[23] = 'The Rescue',
[24] = 'Elder Memories',
[25] = 'Test My Mettle',
[26] = 'Inside the Belly',
[27] = 'Trial by Lightning',
[28] = 'Trial-Size Trial by Lightning',
[29] = "It's Raining Mannequins",
[30] = 'Recycling Rods',
[31] = 'Picture Perfect',
[32] = 'Waking the Beast',
[33] = 'Survival of the Wisest',
[34] = 'Monstrosity',
[35] = "Kupofried's H2H Moogle Magic",
[36] = "Kupofried's Dagger Moogle Magic",
[37] = "Kupofried's Sword Moogle Magic",
[38] = "Kupofried's Great Sword Moogle Magic",
[39] = "Kupofried's Axe Moogle Magic",
[40] = "Kupofried's Great Axe Moogle Magic",
[41] = "Kupofried's Scythe Moogle Magic",
[42] = "Kupofried's Polearm Moogle Magic",
[43] = "Kupofried's Katana Moogle Magic",
[44] = "Kupofried's Great Katana Moogle Magic",
[45] = "Kupofried's Club Moogle Magic",
[46] = "Kupofried's Staff Moogle Magic",
[47] = "Kupofried's Archery Moogle Magic",
[48] = "Kupofried's Marksmanship Moogle Magic",
[64] = "A Hard Day's Knight",
[65] = 'X Marks the Spot',
[66] = 'A Bitter Past',
[67] = 'The Call of the Sea',
[68] = 'Paradise, Salvation, and Maps',
[69] = 'Go! Go! Gobmuffin!',
[70] = 'The Big One',
[71] = 'Fly High',
[72] = 'Unforgiven',
[73] = 'Secrets of Ovens Lost',
[74] = 'Petals for Parelbriaux',
[75] = 'Elderly Pursuits',
[76] = 'In the Name of Science',
[77] = 'Behind the Smile',
[78] = 'Knocking on Forbidden Doors',
[79] = 'Confessions of a Bellmaker',
[80] = 'In Search of the Truth',
[81] = 'Uninvited Guests',
[82] = 'Tango with a Tracker',
[83] = 'Requiem of Sin',
[84] = 'VW Op. #026: Tavnazian Terrors',
[85] = 'VW Op. #004: Bibiki Bombardment',
[96] = 'Bombs Away!',
[97] = 'Mithran Delicacies',
[100] = 'Give a Moogle a Break',
[101] = "The Moogle's Picnic!",
[102] = 'Moogles in the Wild',
[103] = 'Missionary Moblin',
[104] = 'For the Birds',
[105] = 'Better the Demon You Know',
[106] = 'An Understanding Overlord?',
[107] = 'An Affable Adamantking?',
[108] = 'A Moral Manifest?',
[109] = 'A Generous General?',
[110] = 'Records of Eminence',
[111] = 'Unity Concord',
[200] = 'Titillating Tomes',
[201] = 'Release the Fleece',
[202] = 'Feeding Frenzy',
[203] = 'Cry Not, Caretaker',
[204] = "Chacharoon's Cheer",
[205] = 'Trial of the Chacharoon',
[206] = 'Doctor Chacharoon',
[207] = 'Rowing Together',
[208] = 'Glittering Gals',
[209] = 'Sally Forth!',
}
@cfuj
Copy link

cfuj commented May 17, 2020

How difficult would it be to use this to get mission progress as well? Do you know what packets I might find the information in?

@Ivaar
Copy link
Author

Ivaar commented May 18, 2020

Its the same packet, just a different variation. I posted mission/quest luas extracted from dat files in windowers discord https://discord.gg/v6pk6uy. I would prefer if we moved the conversation to discord as there are several members with knowledge and interest who can help you get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment