// 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.balanced_combo", secondary: "common.abilities.sword.balanced_thrust", abilities: [ Simple(Some(Sword(OffensiveCombo)), "common.abilities.sword.offensive_combo"), Simple(Some(Sword(CripplingCombo)), "common.abilities.sword.crippling_combo"), Simple(Some(Sword(CleavingCombo)), "common.abilities.sword.cleaving_combo"), Simple(Some(Sword(DefensiveCombo)), "common.abilities.sword.defensive_combo"), Simple(Some(Sword(ParryingCombo)), "common.abilities.sword.parrying_combo"), Simple(Some(Sword(HeavyCombo)), "common.abilities.sword.heavy_combo"), Simple(Some(Sword(MobilityCombo)), "common.abilities.sword.mobility_combo"), Simple(Some(Sword(ReachingCombo)), "common.abilities.sword.reaching_combo"), // Damagey ones Contextualized({ Stance(None): (Some(Sword(BalancedFinisher)), "common.abilities.sword.balanced_finisher"), Stance(Sword(Offensive)): (Some(Sword(OffensiveFinisher)), "common.abilities.sword.offensive_finisher"), Stance(Sword(Crippling)): (Some(Sword(CripplingFinisher)), "common.abilities.sword.crippling_finisher"), Stance(Sword(Cleaving)): (Some(Sword(CleavingFinisher)), "common.abilities.sword.cleaving_finisher"), Stance(Sword(Parrying)): (Some(Sword(ParryingCounter)), "common.abilities.sword.parrying_counter"), Stance(Sword(Heavy)): (Some(Sword(HeavyFinisher)), "common.abilities.sword.heavy_finisher"), Stance(Sword(Reaching)): (Some(Sword(ReachingFlurry)), "common.abilities.sword.reaching_flurry"), }), // Movementy ones Contextualized({ Stance(Sword(Offensive)): (Some(Sword(OffensiveAdvance)), "common.abilities.sword.offensive_advance"), Stance(Sword(Crippling)): (Some(Sword(CripplingStrike)), "common.abilities.sword.crippling_strike"), Stance(Sword(Cleaving)): (Some(Sword(CleavingDive)), "common.abilities.sword.cleaving_dive"), Stance(Sword(Defensive)): (Some(Sword(DefensiveRetreat)), "common.abilities.sword.defensive_retreat"), Stance(Sword(Parrying)): (Some(Sword(ParryingRiposte)), "common.abilities.sword.parrying_riposte"), Stance(Sword(Heavy)): (Some(Sword(HeavyFortitude)), "common.abilities.sword.heavy_fortitude"), Stance(Sword(Mobility)): (Some(Sword(MobilityFeint)), "common.abilities.sword.mobility_feint"), Stance(Sword(Reaching)): (Some(Sword(ReachingCharge)), "common.abilities.sword.reaching_charge"), }), // Utilityy ones Contextualized({ Stance(Sword(Crippling)): (Some(Sword(CripplingGouge)), "common.abilities.sword.crippling_gouge"), Stance(Sword(Cleaving)): (Some(Sword(CleavingSpin)), "common.abilities.sword.cleaving_spin"), Stance(Sword(Defensive)): (Some(Sword(DefensiveBulwark)), "common.abilities.sword.defensive_bulwark"), Stance(Sword(Parrying)): (Some(Sword(ParryingParry)), "common.abilities.sword.parrying_parry"), Stance(Sword(Heavy)): (Some(Sword(HeavyPommelStrike)), "common.abilities.sword.heavy_pommelstrike"), Stance(Sword(Mobility)): (Some(Sword(MobilityAgility)), "common.abilities.sword.mobility_agility"), Stance(Sword(Reaching)): (Some(Sword(ReachingSkewer)), "common.abilities.sword.reaching_skewer"), }), ], ), Tool(Axe): ( primary: "common.abilities.axe.doublestrike", secondary: "common.abilities.axe.spin", abilities: [ Simple(Some(Axe(UnlockLeap)), "common.abilities.axe.leap"), ], ), Tool(Hammer): ( primary: "common.abilities.hammer.singlestrike", secondary: "common.abilities.hammer.charged", abilities: [ Simple(Some(Hammer(UnlockLeap)), "common.abilities.hammer.leap"), ], ), Tool(Bow): ( primary: "common.abilities.bow.charged", secondary: "common.abilities.bow.repeater", abilities: [ Simple(Some(Bow(UnlockShotgun)), "common.abilities.bow.shotgun"), ], ), Tool(Staff): ( primary: "common.abilities.staff.firebomb", secondary: "common.abilities.staff.flamethrower", abilities: [ Simple(Some(Staff(UnlockShockwave)), "common.abilities.staff.fireshockwave"), ], ), Tool(Sceptre): ( primary: "common.abilities.sceptre.lifestealbeam", secondary: "common.abilities.sceptre.healingaura", abilities: [ Simple(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: [ Simple(None, "common.abilities.gnarling.chieftain.fireshockwave"), Simple(None, "common.abilities.gnarling.chieftain.redtotem"), Simple(None, "common.abilities.gnarling.chieftain.greentotem"), Simple(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: [ Simple(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: [ Simple(None, "common.abilities.custom.stonegolemfist.spin"), ], ), Custom("Beast Claws"): ( primary: "common.abilities.custom.beastclaws.basic", secondary: "common.abilities.custom.beastclaws.basic", abilities: [], ), Custom("Tursus Claws"): ( primary: "common.abilities.custom.tursus_claws.basic", secondary: "common.abilities.custom.tursus_claws.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: [ Simple(None, "common.abilities.custom.tidalwarrior.bubbles"), Simple(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: [ Simple(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("Roshwalr"): ( primary: "common.abilities.custom.roshwalr.doublehusk", secondary: "common.abilities.custom.roshwalr.slowcharge", abilities: [ Simple(None, "common.abilities.custom.roshwalr.freezeshockwave"), ], ), Custom("Basilisk"): ( primary: "common.abilities.custom.basilisk.petrify", secondary: "common.abilities.custom.basilisk.triplestrike", abilities: [ Simple(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: [ Simple(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: [ Simple(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: [ Simple(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: [ Simple(None, "common.abilities.custom.arthropods.hornbeetle.leap"), ], ), Custom("Tarantula"): ( primary: "common.abilities.custom.arthropods.tarantula.singlestrike", secondary: "common.abilities.custom.arthropods.tarantula.ensnaringwebs", abilities: [ Simple(None, "common.abilities.custom.arthropods.tarantula.leap"), ], ), Custom("Weevil"): ( primary: "common.abilities.custom.arthropods.weevil.singlestrike", secondary: "common.abilities.custom.arthropods.weevil.harden", abilities: [ Simple(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: [ Simple(None, "common.abilities.custom.mindflayer.dimensionaldoor"), Simple(None, "common.abilities.custom.mindflayer.necroticsphere"), Simple(None, "common.abilities.custom.mindflayer.summonminions"), ], ), Custom("Minotaur"): ( primary: "common.abilities.custom.minotaur.cleave", secondary: "common.abilities.custom.minotaur.cripplingstrike", abilities: [ Simple(None, "common.abilities.custom.minotaur.charge"), Simple(None, "common.abilities.custom.minotaur.frenzy"), ], ), Custom("Clay Golem"): ( primary: "common.abilities.custom.claygolem.strike", secondary: "common.abilities.custom.claygolem.laser", abilities: [ Simple(None, "common.abilities.custom.claygolem.shockwave"), Simple(None, "common.abilities.custom.claygolem.rocket"), ], ), Custom("Yeti"): ( primary: "common.abilities.custom.yeti.strike", secondary: "common.abilities.custom.yeti.icespikes", abilities: [ Simple(None, "common.abilities.custom.yeti.frostbreath"), Simple(None, "common.abilities.custom.yeti.snowball"), ], ), Custom("Harvester"): ( primary: "common.abilities.custom.harvester.scythe", secondary: "common.abilities.custom.harvester.firebreath", abilities: [ Simple(None, "common.abilities.custom.harvester.ensnaringvines"), Simple(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: [ Simple(None, "common.abilities.custom.dagon.steamwave"), Simple(None, "common.abilities.custom.cardinal.steambeam"), Simple(None, "common.abilities.custom.dagon.steamheal"), ], ), Custom("Cardinal"): ( primary: "common.abilities.sceptre.lifestealbeam", secondary: "common.abilities.sceptre.healingaura", abilities: [ Simple(None, "common.abilities.custom.cardinal.steambeam"), Simple(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: [ Simple(None, "common.abilities.custom.birdlargebreathe.flamethrower"), ], ), Custom("Bird Large Fire"): ( primary: "common.abilities.custom.birdlargefire.firebomb", secondary: "common.abilities.custom.birdlargefire.triplestrike", abilities: [ Simple(None, "common.abilities.custom.birdlargefire.fireshockwave"), ], ), Custom("Flame Wyvern"): ( primary: "common.abilities.custom.flamewyvern.firebomb", secondary: "common.abilities.custom.flamewyvern.fireshockwave", abilities: [ Simple(None, "common.abilities.custom.flamewyvern.triplestrike"), Simple(None, "common.abilities.custom.flamewyvern.flamethrower"), ], ), Custom("Frost Wyvern"): ( primary: "common.abilities.custom.frostwyvern.frostbomb", secondary: "common.abilities.custom.frostwyvern.iceshockwave", abilities: [ Simple(None, "common.abilities.custom.frostwyvern.triplestrike"), Simple(None, "common.abilities.custom.frostwyvern.frostthrower"), ], ), Custom("Cloud Wyvern"): ( primary: "common.abilities.custom.cloudwyvern.windbomb", secondary: "common.abilities.custom.cloudwyvern.windshockwave", abilities: [ Simple(None, "common.abilities.custom.cloudwyvern.triplestrike"), Simple(None, "common.abilities.custom.cloudwyvern.windthrower"), ], ), Custom("Sea Wyvern"): ( primary: "common.abilities.custom.seawyvern.seabomb", secondary: "common.abilities.custom.seawyvern.seashockwave", abilities: [ Simple(None, "common.abilities.custom.seawyvern.triplestrike"), Simple(None, "common.abilities.custom.seawyvern.bubblethrower"), ], ), Custom("Weald Wyvern"): ( primary: "common.abilities.custom.wealdwyvern.firebomb", secondary: "common.abilities.custom.wealdwyvern.fireshockwave", abilities: [ Simple(None, "common.abilities.custom.wealdwyvern.triplestrike"), Simple(None, "common.abilities.custom.wealdwyvern.flamethrower"), ], ), Custom("Bird Large Basic"): ( primary: "common.abilities.custom.birdlargebasic.triplestrike", secondary: "common.abilities.custom.birdlargebasic.summontornadoes", abilities: [ Simple(None, "common.abilities.custom.birdlargebasic.dash"), ], ), Custom("Bird Medium Basic"): ( primary: "common.abilities.custom.birdmediumbasic.singlestrike", secondary: "common.abilities.custom.birdmediumbasic.singlestrike", abilities: [], ), Custom("Frost Gigas"): ( primary: "common.abilities.custom.gigas_frost.cleave", secondary: "common.abilities.custom.gigas_frost.wide_cleave", abilities: [ Simple(None, "common.abilities.custom.gigas_frost.icespike_smash"), Simple(None, "common.abilities.custom.gigas_frost.leapshockwave"), Simple(None, "common.abilities.custom.gigas_frost.ice_volley"), Simple(None, "common.abilities.custom.gigas_frost.frost_summons"), Simple(None, "common.abilities.custom.gigas_frost.flashfreeze"), ], ), Custom("Boreal Bow"): ( primary: "common.abilities.custom.boreal_warrior.bow.charged", secondary: "common.abilities.custom.boreal_warrior.bow.repeater", abilities: [ Simple(None, "common.abilities.custom.boreal_warrior.bow.shotgun") ], ), Custom("Boreal Hammer"): ( primary: "common.abilities.custom.boreal_warrior.hammer.singlestrike", secondary: "common.abilities.custom.boreal_warrior.hammer.dash", abilities: [ Simple(None, "common.abilities.custom.boreal_warrior.hammer.leap") ], ), 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("DoubleBass"): ( primary: "common.abilities.music.double_bass", secondary: "common.abilities.music.double_bass", abilities: [], ), Custom("Flute"): ( primary: "common.abilities.music.flute", secondary: "common.abilities.music.flute", abilities: [], ), Custom("GlassFlute"): ( primary: "common.abilities.music.glass_flute", secondary: "common.abilities.music.glass_flute", abilities: [], ), Custom("Lyre"): ( primary: "common.abilities.music.lyre", secondary: "common.abilities.music.lyre", abilities: [], ), Custom("IcyTalharpa"): ( primary: "common.abilities.music.icy_talharpa", secondary: "common.abilities.music.icy_talharpa", abilities: [], ), Custom("Washboard"): ( primary: "common.abilities.music.washboard", secondary: "common.abilities.music.washboard", 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("DarkGuitar"): ( primary: "common.abilities.music.dark_guitar", secondary: "common.abilities.music.dark_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: [ Simple(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: [], ), })