// Maps a tool kind to a set of abilities
// A set of abilities is a primary, a secondary, and a vec of all extra abilities
({
    Tool(Sword): (
        primary: "common.abilities.sword.triplestrike",
        secondary: "common.abilities.sword.dash",
        abilities: [
            (Some(Sword(UnlockSpin)), "common.abilities.sword.spin"),
        ],
    ),
    Tool(Axe): (
        primary: "common.abilities.axe.doublestrike",
        secondary: "common.abilities.axe.spin",
        abilities: [
            (Some(Axe(UnlockLeap)), "common.abilities.axe.leap"),
        ],
    ),
    Tool(Hammer): (
        primary: "common.abilities.hammer.singlestrike",
        secondary: "common.abilities.hammer.charged",
        abilities: [
            (Some(Hammer(UnlockLeap)), "common.abilities.hammer.leap"),
        ],
    ),
    Tool(Bow): (
        primary: "common.abilities.bow.charged",
        secondary: "common.abilities.bow.repeater",
        abilities: [
            (Some(Bow(UnlockShotgun)), "common.abilities.bow.shotgun"),
        ],
    ),
    Tool(Staff): (
        primary: "common.abilities.staff.firebomb",
        secondary: "common.abilities.staff.flamethrower",
        abilities: [
            (Some(Staff(UnlockShockwave)), "common.abilities.staff.fireshockwave"),
        ],
    ),
    Tool(Sceptre): (
        primary: "common.abilities.sceptre.lifestealbeam",
        secondary: "common.abilities.sceptre.healingaura",
        abilities: [
            (Some(Sceptre(UnlockAura)), "common.abilities.sceptre.wardingaura"),
        ],
    ),
    Custom("Husk"): (
        primary: "common.abilities.custom.husk.singlestrike",
        secondary: "common.abilities.custom.husk.triplestrike",
        abilities: [],
    ),
    Custom("Husk Brute"): (
        primary: "common.abilities.custom.husk_brute.singlestrike",
        secondary: "common.abilities.custom.husk_brute.chargedmelee",
        abilities: [],
    ),
    Tool(Spear): (
        primary: "common.abilities.spear.doublestrike",
        secondary: "common.abilities.spear.dash",
        abilities: [],
    ),
    Custom("Hammer Simple"): (
        primary: "common.abilities.hammersimple.doublestrike",
        secondary: "common.abilities.hammersimple.doublestrike",
        abilities: [],
    ),
    // TODO: Later investigate if we want to make this back to a simple axe when more things need a simpler axe ability set
    Custom("Gnarling Axe"): (
        primary: "common.abilities.gnarling.axe.chop",
        secondary: "common.abilities.gnarling.axe.chop",
        abilities: [],
    ),
    Custom("Gnarling Dagger"): (
        primary: "common.abilities.gnarling.dagger.stab",
        secondary: "common.abilities.gnarling.dagger.stab",
        abilities: [],
    ),
    Custom("Gnarling Blowgun"): (
        primary: "common.abilities.gnarling.blowgun.dart",
        secondary: "common.abilities.gnarling.blowgun.dart",
        abilities: [],
    ),
    Custom("Gnarling Chieftain"): (
        primary: "common.abilities.gnarling.chieftain.flamestrike",
        secondary: "common.abilities.gnarling.chieftain.firebarrage",
        abilities: [
            (None, "common.abilities.gnarling.chieftain.fireshockwave"),
            (None, "common.abilities.gnarling.chieftain.redtotem"),
            (None, "common.abilities.gnarling.chieftain.greentotem"),
            (None, "common.abilities.gnarling.chieftain.whitetotem"),
        ],
    ),
    Custom("Gnarling Totem Red"): (
        primary: "common.abilities.gnarling.totem.red",
        secondary: "common.abilities.gnarling.totem.red",
        abilities: [],
    ),
    Custom("Gnarling Totem Green"): (
        primary: "common.abilities.gnarling.totem.green",
        secondary: "common.abilities.gnarling.totem.green",
        abilities: [],
    ),
    Custom("Gnarling Totem White"): (
        primary: "common.abilities.gnarling.totem.white",
        secondary: "common.abilities.gnarling.totem.white",
        abilities: [],
    ),
    Custom("Deadwood"): (
        primary: "common.abilities.custom.deadwood.lifestealbeam",
        secondary: "common.abilities.custom.deadwood.dash",
        abilities: [],
    ),
    Custom("Mandragora"): (
        primary: "common.abilities.custom.mandragora.basic",
        secondary: "common.abilities.custom.mandragora.scream",
        abilities: [],
    ),
    Custom("Wood Golem"): (
        primary: "common.abilities.custom.woodgolem.strike",
        secondary: "common.abilities.custom.woodgolem.spin",
        abilities: [
            (None, "common.abilities.custom.woodgolem.shockwave")
        ],
    ),
    Custom("Sword Simple"): (
        primary: "common.abilities.swordsimple.doublestrike",
        secondary: "common.abilities.swordsimple.dash",
        abilities: [],
    ),
    Custom("Staff Simple"): (
        primary: "common.abilities.staffsimple.firebomb",
        secondary: "common.abilities.staffsimple.flamethrower",
        abilities: [],
    ),
    Custom("Bow Simple"): (
        primary: "common.abilities.bowsimple.basic",
        secondary: "common.abilities.bowsimple.basic",
        abilities: [],
    ),
    Custom("Axe Simple"): (
        primary: "common.abilities.axesimple.doublestrike",
        secondary: "common.abilities.axesimple.doublestrike",
        abilities: [],
    ),
    Custom("Dagger Simple"): (
        primary: "common.abilities.daggersimple.singlestrike",
        secondary: "common.abilities.daggersimple.singlestrike",
        abilities: [],
    ),
    Tool(Dagger): (
        primary: "common.abilities.dagger.tempbasic",
        secondary: "common.abilities.dagger.tempbasic",
        abilities: [],
    ),
    Tool(Shield): (
        primary: "common.abilities.shield.tempbasic",
        secondary: "common.abilities.shield.block",
        abilities: [],
    ),
    Custom("Stone Golem"): (
        primary: "common.abilities.custom.stonegolemfist.singlestrike",
        secondary: "common.abilities.custom.stonegolemfist.shockwave",
        abilities: [
            (None, "common.abilities.custom.stonegolemfist.spin"),
        ],
    ),
    Custom("Beast Claws"): (
        primary: "common.abilities.custom.beastclaws.basic",
        secondary: "common.abilities.custom.beastclaws.basic",
        abilities: [],
    ),
    Custom("Wendigo Magic"): (
        primary: "common.abilities.custom.wendigomagic.frostbomb",
        secondary: "common.abilities.custom.wendigomagic.singlestrike",
        abilities: [],
    ),
    Custom("Tidal Warrior"): (
        primary: "common.abilities.custom.tidalwarrior.pincer",
        secondary: "common.abilities.custom.tidalwarrior.scuttle",
        abilities: [
            (None, "common.abilities.custom.tidalwarrior.bubbles"),
            (None, "common.abilities.custom.tidalwarrior.totem"),
        ],
    ),
    Custom("Tidal Totem"): (
        primary: "common.abilities.custom.tidalwarrior.totem_wave",
        secondary: "common.abilities.custom.tidalwarrior.totem_wave",
        abilities: [],
    ),
    // Note: Consider making a ranking system once we get more entities
    // TODO: Make all purple item droppers have purple CR and a unique skillset
    Custom("Quad Med Quick"): (
        primary: "common.abilities.custom.quadmedquick.triplestrike",
        secondary: "common.abilities.custom.quadmedquick.dash",
        abilities: [],
    ),
    Custom("Quad Med Jump"): (
        primary: "common.abilities.custom.quadmedjump.leap",
        secondary: "common.abilities.custom.quadmedjump.doublestrike",
        abilities: [
            (None, "common.abilities.custom.quadmedjump.quickleap"),
        ],
    ),
    Custom("Quad Med Charge"): (
        primary: "common.abilities.custom.quadmedcharge.doublestrike",
        secondary: "common.abilities.custom.quadmedcharge.dash",
        abilities: [],
    ),
    Custom("Quad Med Hoof"): (
        primary: "common.abilities.custom.quadmedhoof.basic",
        secondary: "common.abilities.custom.quadmedhoof.basic",
        abilities: [],
    ),
    Custom("Quad Med Basic"): (
        primary: "common.abilities.custom.quadmedbasic.singlestrike",
        secondary: "common.abilities.custom.quadmedbasic.triplestrike",
        abilities: [],
    ),
    Custom("Basilisk"): (
        primary: "common.abilities.custom.basilisk.petrify",
        secondary: "common.abilities.custom.basilisk.triplestrike",
        abilities: [
            (None, "common.abilities.custom.basilisk.dash"),
        ],
    ),
    Custom("Asp"): (
        primary: "common.abilities.custom.asp.singlestrike",
        secondary: "common.abilities.custom.asp.firebomb",
        abilities: [],
    ),
    Custom("Maneater"): (
        primary: "common.abilities.custom.maneater.singlestrike",
        secondary: "common.abilities.custom.maneater.poisonball",
        abilities: [],
    ),
    Custom("Quad Low Breathe"): (
        primary: "common.abilities.custom.quadlowbreathe.flamethrower",
        secondary: "common.abilities.custom.quadlowbreathe.triplestrike",
        abilities: [
            (None, "common.abilities.custom.quadlowbreathe.dash"),
        ],
    ),
    Custom("Quad Low Tail"): (
        primary: "common.abilities.custom.quadlowtail.charged",
        secondary: "common.abilities.custom.quadlowtail.triplestrike",
        abilities: [],
    ),
    Custom("Quad Low Quick"): (
        primary: "common.abilities.custom.quadlowquick.dash",
        secondary: "common.abilities.custom.quadlowquick.quadstrike",
        abilities: [],
    ),
    Custom("Quad Low Basic"): (
        primary: "common.abilities.custom.quadlowbasic.triplestrike",
        secondary: "common.abilities.custom.quadlowbasic.singlestrike",
        abilities: [],
    ),
    Custom("Quad Low Beam"): (
        primary: "common.abilities.custom.quadlowbeam.lifestealbeam",
        secondary: "common.abilities.custom.quadlowbreathe.triplestrike",
        abilities: [
            (None, "common.abilities.custom.quadlowbreathe.dash"),
        ],
    ),
    Custom("Quad Small Basic"): (
        primary: "common.abilities.custom.quadsmallbasic.singlestrike",
        secondary: "common.abilities.custom.quadsmallbasic.singlestrike",
        abilities: [],
    ),
    Custom("Theropod Basic"): (
        primary: "common.abilities.custom.theropodbasic.triplestrike",
        secondary: "common.abilities.custom.theropodbasic.triplestrike",
        abilities: [],
    ),
    Custom("Theropod Bird"): (
        primary: "common.abilities.custom.theropodbird.triplestrike",
        secondary: "common.abilities.custom.theropodbird.triplestrike",
        abilities: [],
    ),
    Custom("Theropod Charge"): (
        primary: "common.abilities.custom.theropodbasic.triplestrike",
        secondary: "common.abilities.custom.theropodbasic.dash",
        abilities: [],
    ),
    // Arthropods
    Custom("Antlion"): (
        primary: "common.abilities.custom.arthropods.antlion.singlestrike",
        secondary: "common.abilities.custom.arthropods.antlion.charge",
        abilities: [],
    ),
    Custom("Black Widow"): (
        primary: "common.abilities.custom.arthropods.blackwidow.singlestrike",
        secondary: "common.abilities.custom.arthropods.blackwidow.ensnaringwebs",
        abilities: [
            (None, "common.abilities.custom.arthropods.blackwidow.poisonball"),
        ],
    ),
    Custom("Horn Beetle"): (
        primary: "common.abilities.custom.arthropods.hornbeetle.singlestrike",
        secondary: "common.abilities.custom.arthropods.hornbeetle.harden",
        abilities: [
            (None, "common.abilities.custom.arthropods.hornbeetle.leap"),
        ],
    ),
    Custom("Tarantula"): (
        primary: "common.abilities.custom.arthropods.tarantula.singlestrike",
        secondary: "common.abilities.custom.arthropods.tarantula.ensnaringwebs",
        abilities: [
            (None, "common.abilities.custom.arthropods.tarantula.leap"),
        ],
    ),
    Custom("Weevil"): (
        primary: "common.abilities.custom.arthropods.weevil.singlestrike",
        secondary: "common.abilities.custom.arthropods.weevil.harden",
        abilities: [
            (None, "common.abilities.custom.arthropods.weevil.threadshot"),
        ],
    ),
    /// TODO: Organize the rest into further catagories and give purple tier droppers+ custom skillsets
    Custom("Turret"): (
        primary: "common.abilities.custom.turret.arrows",
        secondary: "common.abilities.custom.turret.arrows",
        abilities: [],
    ),
    Custom("Haniwa Sentry"): (
        primary: "common.abilities.custom.turret.flamethrower",
        secondary: "common.abilities.custom.turret.flamethrower",
        abilities: [],
    ),
    Custom("Mindflayer"): (
        primary: "common.abilities.custom.mindflayer.cursedflames",
        secondary: "common.abilities.custom.mindflayer.necroticvortex",
        abilities: [
            (None, "common.abilities.custom.mindflayer.dimensionaldoor"),
            (None, "common.abilities.custom.mindflayer.necroticsphere"),
            (None, "common.abilities.custom.mindflayer.summonminions"),
        ],
    ),
    Custom("Minotaur"): (
        primary: "common.abilities.custom.minotaur.cleave",
        secondary: "common.abilities.custom.minotaur.cripplingstrike",
        abilities: [
            (None, "common.abilities.custom.minotaur.charge"),
            (None, "common.abilities.custom.minotaur.frenzy"),
        ],
    ),
    Custom("Clay Golem"): (
        primary: "common.abilities.custom.claygolem.strike",
        secondary: "common.abilities.custom.claygolem.laser",
        abilities: [
            (None, "common.abilities.custom.claygolem.shockwave"),
            (None, "common.abilities.custom.claygolem.rocket"),
        ],
    ),
    Custom("Yeti"): (
        primary: "common.abilities.custom.yeti.strike",
        secondary: "common.abilities.custom.yeti.icespikes",
        abilities: [
            (None, "common.abilities.custom.yeti.frostbreath"),
            (None, "common.abilities.custom.yeti.snowball"),
        ],
    ),
    Custom("Harvester"): (
        primary: "common.abilities.custom.harvester.scythe",
        secondary: "common.abilities.custom.harvester.firebreath",
        abilities: [
            (None, "common.abilities.custom.harvester.ensnaringvines"),
            (None, "common.abilities.custom.harvester.explodingpumpkin"),
        ],
    ),
    Custom("Oni"): (
        primary: "common.abilities.custom.oni.dash",
        secondary: "common.abilities.custom.oni.doublestrike",
        abilities: [],
    ),
    Custom("Bird Large Breathe"): (
        primary: "common.abilities.custom.birdlargebreathe.firebomb",
        secondary: "common.abilities.custom.birdlargebreathe.triplestrike",
        abilities: [
            (None, "common.abilities.custom.birdlargebreathe.flamethrower"),
        ],
    ),
    Custom("Bird Large Fire"): (
        primary: "common.abilities.custom.birdlargefire.firebomb",
        secondary: "common.abilities.custom.birdlargefire.triplestrike",
        abilities: [
            (None, "common.abilities.custom.birdlargefire.fireshockwave"),
        ],
    ),
    Custom("Bird Large Basic"): (
        primary: "common.abilities.custom.birdlargebasic.triplestrike",
        secondary: "common.abilities.custom.birdlargebasic.summontornadoes",
        abilities: [
            (None, "common.abilities.custom.birdlargebasic.dash"),
        ],
    ),
    Custom("Tornado"): (
        primary: "common.abilities.custom.tornado.spin",
        secondary: "common.abilities.empty.basic",
        abilities: [],
    ),
    Custom("Golf Club"): (
        primary: "common.abilities.hammer.singlestrike",
        secondary: "common.abilities.tool.golf_club.charged",
        abilities: [],
    ),
    Tool(Debug): (
        primary: "common.abilities.debug.forwardboost",
        secondary: "common.abilities.debug.upboost",
        abilities: [
            (None, "common.abilities.debug.possess"),
        ],
    ),
    Tool(Farming): (
        primary: "common.abilities.farming.basic",
        secondary: "common.abilities.farming.basic",
        abilities: [],
    ),
    Tool(Pick): (
        primary: "common.abilities.pick.swing",
        secondary: "common.abilities.pick.swing",
        abilities: [],
    ),
    Tool(Empty): (
        primary: "common.abilities.empty.basic",
        secondary: "common.abilities.empty.basic",
        abilities: [],
    ),
})
