local mq = require("mq") -- Ordered list of named mobs from the 3 Paradigm of Hate waves local mobList = { -- Starter NPC "Paradigm of Fate", -- Wave 1 "Agent of Zarrin", "Hates Heat", "Tyranthrax", "The Puppetmaster", "Innoruuk", "Abyssal Dreadlord", "Vaeltheris, Weaver of Fates", -- Wave 2 "General Kurn", "Xiardoth the Lost", "Vampire Lord Choso", "Atrebe Sathir", "The Incarnate Droga", "Ancient Nurgan Beast", "Khorathis, Hoof of the Eclipse", -- Wave 3 "Kotiz", "Trakanon", "Lanys", "Temporal Event", "Ashiir", "Queen Drusella", "The Dragon Rider" } -- Helper function to wait until the mob dies or disappears local function waitForMobToDie(name) while mq.TLO.SpawnCount(string.format("npc \"%s\" radius 500", name))() > 0 do mq.delay(500) end end -- Main loop for _, mobName in ipairs(mobList) do if mq.TLO.Spawn(string.format("npc \"%s\" radius 500", mobName))() then printf(">> Targeting %s", mobName) mq.cmdf("/target npc \"%s\" radius 500", mobName) mq.delay(500) if mq.TLO.Target.ID() > 0 then mq.cmd("/nav target") mq.delay(500) while mq.TLO.Navigation.Active() do mq.delay(100) end mq.cmd("/attack on") waitForMobToDie(mobName) mq.delay(1000) mq.cmd("/attack off") printf(">> %s defeated.", mobName) end else printf(">> %s not found in zone, skipping...", mobName) end end printf(">> All mobs in list processed.")