Dust Devils
Combat level 110 · 130 hitpoints
A staple mid-level slayer task, modelled at the Catacombs of Kourend spawns, which the strategy page calls out as the default: "Unless killing them as part of Konar quo Maten or Krystilia's Slayer tasks, the Catacombs of Kourend are highly recommended for their ease of accessibility." Those are the level 110 devils (130 hitpoints), not the level 93 ones in the Smoke Dungeon.
Requirements
- 65 Slayer
- 70 combat
- Desert Treasure I (started) before the task can be assigned
- FACEMASK OR SLAYER HELMET MANDATORY: without one every hit is 16 and all four combat levels are fully drained
Pointers
- A FACEMASK OR SLAYER HELMET IS NOT OPTIONAL. Without one they always hit 16 and fully drain Attack, Strength, Ranged and Magic.
- They attack with RANGED MELEE, which is its own thing: "their attacks are considered melee, but they roll on the player's ranged defence rather than melee". So Protect from Melee blocks them while it is your RANGED defence bonus that decides whether they hit.
- Every defensive bonus on the stat block is ZERO and Defence is only 40, so nothing you bring is resisted. Their Magic and Ranged levels are 1, which is why magic accuracy against them is essentially free.
- 35% elemental weakness to AIR spells, added 25 June 2025. That only pays on standard-spellbook air casts, not on an Ancients barrage.
- The real method is AoE: the Catacombs spawns sit in a multicombat area, so people burst, barrage or chin a stack. This page ranks one target at a time and cannot see that.
- The Smoke Dungeon has a task-only multicombat pocket to the west; the rest of that dungeon is single-way and does allow a cannon.
What the sim brings here
Every worn slot and every inventory row below is the combat simulation's own output, at the style it ranks fastest for each account tier. Each line carries the channel that chose it: sim means the model solved it, and inherited means the value came through from the hand-authored loadout the solver starts from. Riding through a generator does not make a value derived, so those are marked rather than presented as the model's answer. A line marked unattributed carries a channel the model's own vocabulary no longer declares, so no word is put on it at all rather than one being read off the channel's spelling. Where the model has not answered a row, its own refusal is printed instead; where it has answered a row it doubts, the answer is printed with the doubt attached rather than withheld.
max tier, melee (Melee is fastest)
Worn gear: 11 of 11 slots chosen by the sim.
- Head: Facemask sim
- Cape: Infernal cape sim
- Neck: Amulet of rancour sim
- Ammo: Ancient blessing sim
- Weapon: Soulreaper axe sim
- Body: Torva platebody sim
- Shield: nothing sim
- Legs: Torva platelegs sim
- Hands: Ferocious gloves sim
- Feet: Avernic treads (max) sim
- Ring: Ultor ring sim
The model doubts this gear (tied with an identical item, so enumeration order decided): the head, ammo, body slots each hold an item the model cannot tell apart from an alternative the search could equally have taken, re-scored identical in this row's own bag. Enumeration order decided it, so the sim had NO REASON; that is not the same as the pick being wrong. SOLVED_GEAR_TIES names them.
Inventory: 3 of 4 rows chosen by the sim, 1 carrying no channel at all.
- Super combat potion(4) sim
- Prayer potion(4) x21 sim
- Zamorak brew(4) x2 sim
- Max cape ruled
Spellbook: Lunar. Grants Vengeance.
Trip: about 356.63 kills in 57 minutes, limited by prayer.
mid tier, melee (Melee is fastest)
Worn gear: 11 of 11 slots chosen by the sim.
- Head: Facemask sim
- Cape: Infernal cape sim
- Neck: Amulet of torture sim
- Ammo: Ancient blessing sim
- Weapon: Soulreaper axe sim
- Body: Torva platebody sim
- Shield: nothing sim
- Legs: Torva platelegs sim
- Hands: Ferocious gloves sim
- Feet: Primordial boots sim
- Ring: Ultor ring sim
The model doubts this gear (tied with an identical item, so enumeration order decided): the head, neck, ammo, body slots each hold an item the model cannot tell apart from an alternative the search could equally have taken, re-scored identical in this row's own bag. Enumeration order decided it, so the sim had NO REASON; that is not the same as the pick being wrong. SOLVED_GEAR_TIES names them.
Inventory: 3 of 4 rows chosen by the sim, 1 carrying no channel at all.
- Super combat potion(4) sim
- Prayer potion(4) x22 sim
- Zamorak brew(4) sim
- Teleport to house (tablet) ruled
Spellbook: Lunar. Grants Vengeance.
Trip: about 262.14 kills in 51 minutes, limited by prayer.
budget tier, melee (Melee is fastest)
Worn gear: 11 of 11 slots chosen by the sim.
- Head: Facemask sim
- Cape: Ardougne cloak 3 sim
- Neck: Amulet of strength sim
- Ammo: Rada's blessing 2 sim
- Weapon: Soulreaper axe sim
- Body: Bandos chestplate sim
- Shield: nothing sim
- Legs: Monk's robe sim
- Hands: Barrows gloves sim
- Feet: Primordial boots sim
- Ring: Ultor ring sim
The model doubts this gear (tied with an identical item, so enumeration order decided): the head, neck, ammo, legs slots each hold an item the model cannot tell apart from an alternative the search could equally have taken, re-scored identical in this row's own bag. Enumeration order decided it, so the sim had NO REASON; that is not the same as the pick being wrong. SOLVED_GEAR_TIES names them.
Inventory: 5 of 6 rows chosen by the sim, 1 carrying no channel at all.
- Achievement diary cape sim
- Super combat potion(4) sim
- Zamorak brew(4) sim
- Super restore(4) x20 sim
- Ancient brew(4) sim
- Ring of dueling(8) ruled
Spellbook: Lunar. Grants Vengeance.
Trip: about 266.45 kills in 56 minutes, limited by prayer.
What each of those badges means
- derived:ascent (sim): an accepted coordinate-ascent move: betterThan() preferred this candidate over the incumbent under the row objective and band. The weapon+ammo+shield pairing and the crystal set arrive here too, because both are offered to the same acceptance test.
- derived:cheapestEqual (sim): cheapestOfEquals(): at budget, an exactly-tied cheaper item replaced the one in this slot. It changes the price and, by construction, not the score.
- derived:composed (sim): balanceInventory() sized this row from the derived supply menu. The menu enumerates CONSUMABLES and narrows by style, tier and price; it is not the authored bag.
- derived:empty (sim): the finished loadout leaves this slot EMPTY, and that is an ANSWER rather than a gap: a two-handed weapon forfeits the shield and a weapon that stores its own ammunition frees the ammo slot. Recorded so a null slot is never read as unprovenanced.
- derived:obtainable (sim): canonicaliseObtainable(): the finished loadout named a variant the model cannot state a route to, and this pass swapped it for the obtainable equal.
- derived:seedWeapon (sim): the weapon the ascent BEGAN from, taken off the dps-ranked weapon shortlist, or the forced weapon of a multi-start seed. Never off a start loadout.
- derived:travel (sim): travelPlan(): the way IN, ranked out of the derived transport graph against this account's own unlocks, rather than copied from whatever a human typed. The way OUT is a separate channel (`ruled:escape`) because it is a typed choice, not a ranking.
- ruled:escape (ruled): escapeLeg(): the way OUT, taken from the typed per-tier table ESCAPE_PLAN and judged against the account, with nothing substituted and no fallback ladder. The ACCOUNT CHECK is a derivation; the CHOICE of item is not, so this is not a `derived:` channel. ESCAPE_PLAN carries no attributedTo field (PROVENANCE_BACKLOG: silent-and-unattributed), so this channel does not claim one either.