// 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.balancedstance", secondary: "common.abilities.sword.lunge", abilities: [], ), 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("Simple Flying Melee"): ( primary: "common.abilities.custom.simpleflyingmelee.singlestrike", secondary: "common.abilities.custom.simpleflyingmelee.singlestrike", abilities: [], ), 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 Small"): ( primary: "common.abilities.custom.theropodsmall.triplestrike", secondary: "common.abilities.custom.theropodsmall.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("Organ"): ( primary: "common.abilities.custom.organ.organaura", secondary: "common.abilities.custom.organ.organaura", 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"), ], ), // TODO: Allow ability sets to expand other ability sets Custom("Dagon"): ( primary: "common.abilities.custom.dagon.dagonbombs", secondary: "common.abilities.custom.dagon.seaurchins", abilities: [ (None, "common.abilities.custom.dagon.steamwave"), (None, "common.abilities.custom.cardinal.steambeam"), (None, "common.abilities.custom.dagon.steamheal"), ], ), Custom("Cardinal"): ( primary: "common.abilities.sceptre.lifestealbeam", secondary: "common.abilities.sceptre.healingaura", abilities: [ (None, "common.abilities.custom.cardinal.steambeam"), (None, "common.abilities.custom.cardinal.summonseacrocs"), ], ), 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: [], ), Custom("Bass"): ( primary: "common.abilities.music.bass", secondary: "common.abilities.music.bass", abilities: [], ), Custom("Flute"): ( primary: "common.abilities.music.flute", secondary: "common.abilities.music.flute", abilities: [], ), Custom("Harp"): ( primary: "common.abilities.music.harp", secondary: "common.abilities.music.harp", abilities: [], ), Custom("Perc"): ( primary: "common.abilities.music.perc", secondary: "common.abilities.music.perc", abilities: [], ), Custom("Kalimba"): ( primary: "common.abilities.music.kalimba", secondary: "common.abilities.music.kalimba", abilities: [], ), Custom("Melodica"): ( primary: "common.abilities.music.melodica", secondary: "common.abilities.music.melodica", abilities: [], ), Custom("Lute"): ( primary: "common.abilities.music.lute", secondary: "common.abilities.music.lute", abilities: [], ), Custom("Guitar"): ( primary: "common.abilities.music.guitar", secondary: "common.abilities.music.guitar", abilities: [], ), Custom("Sitar"): ( primary: "common.abilities.music.sitar", secondary: "common.abilities.music.sitar", 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: [], ), })