wotw_seedgen 0.2.1

Seed Generator for the Ori and the Will of the Wisps Randomizer
# This file defines all the requirements a player has to fulfill in order to reach a given pickup on the map.
# The pickup names and locations are defined in loc_data.csv.

# All pickups are tied to an anchor, a point on the map. The requirements listed under a pickup are what you need to get from that anchor to that pickup. For more details on this visit https://docs.google.com/document/d/1XAiL4GbyYGr2_PobxWajrOPO9kQ5UOSf4KrbI1rsOBM/view?usp=sharing

# Special Syntax:
# Moki and above:
# BreakWall=x: A wall or corruption with x Health is broken
# BreakCrystal: An energy crystal is broken (In moki this will allow using Sword, Hammer or Bow, in gorlek additionally Shuriken or Grenade, in unsafe additionally Spear)
# Combat=x: An enemy has to be defeated. For a list of enemies visit https://docs.google.com/spreadsheets/d/1AE_ctym6WAwltGK-r6w58ARq0ym2MU4MzFiwg328kjM/view?usp=sharing
# Gorlek and above:
# ShurikenBreak=x: A wall with x Health is broken from behind using Shuriken
# SentryJump=x: Extends to Sentry=1, Sword OR Hammer
# SwordSJump=x: Extends to Sentry=1, Sword
# HammerSJump=x: Extends to Sentry=1, Hammer
# SentryBurn=x: Use x Sentries to melt ice or light lanterns
# RemoveKillPlane: Remove the kill plane at feeding grounds
# Unsafe:
# SentryBreak=x: A wall with x Health is broken from behind using Sentry
# HammerBreak: A wall with is broken from behind using Hammer
# SpearBreak: A wall with is broken from behind using one Spear
# LaunchSwap: Extends to Launch
# FlashSwap: Extends to Flash and having energy to use it
# SentrySwap=x: Extends to Sentry=x
# BlazeSwap=x: Extends to Blaze=x
# WaveDash: Extends to Dash, Regenerate and having energy to use it
# GrenadeJump: Extends to Grenade and having energy to use it
# GrenadeCancel: Extends to Grenade and having energy to use it
# HammerJump: Extends to Hammer, DoubleJump
# SwordJump: Extends to Sword, DoubleJump
# GrenadeRedirect=x: Extends to Grenade=x
# SentryRedirect=x: Extends to Sentry=x
# PauseHover: Use the pause menu to cancel falling speed
# GlideJump: Extends to Glide
# GlideHammerJump: Extends to Glide, Hammer
# SpearJump=x: Extends to Spear=x

# requirement macros. must go at the top of the file!

requirement DepthsLight:
  moki: UpperDepths.ForestsEyes OR Flash=1
  gorlek: Bow=3  # should be good, right?
  # unsafe: Grenade=3  # probably enough

anchor HeaderStates:  # States you need to resolve by using the !!set command in headers and that you can't resolve through playing
  state SkipKwolok:  # Used to logically support skipping Kwolok's fight
    moki: Impossible
  state SkipMora1:  # Used to logically support skipping Mora's first combat phase
    moki: Impossible
  state SkipMora2:  # Used to logically support skipping Mora's second combat phase
    moki: Impossible

anchor Teleporters:  # teleporter access
  conn MidnightBurrows.Teleporter:
    moki: BurrowsTP, Bash, Keystone=2
    # okay, soooo: this TP frequently unlocks exactly 4 pickups (the vanilla keystones in that area)
    # It also makes a 4 keystone door available! Without the Keystone=2 line here, the seed generator
    # picks this path, unlocking 4 pickups, then immediately fills those with keystones and gets stuck
  conn MarshSpawn.Main:
    moki: MarshTP
  conn HowlsDen.Teleporter:
    moki: DenTP
  conn EastHollow.Teleporter:
    moki: HollowTP
  conn GladesTown.Teleporter:
    moki: GladesTP
  conn InnerWellspring.Teleporter:
    moki: WellspringTP
  conn WoodsEntry.Teleporter:
    moki: WestWoodsTP
  conn WoodsMain.Teleporter:
    moki: EastWoodsTP
  conn LowerReach.Teleporter:
    moki: ReachTP, Flap
  conn UpperDepths.Teleporter:
    moki: DepthsTP, Glide
  conn EastPools.Teleporter:
    moki: EastPoolsTP, Water
  conn WestPools:
    moki: WestPoolsTP, Water
  conn LowerWastes.WestTP:
    moki: WestWastesTP
  conn LowerWastes.EastTP:
    moki: EastWastesTP, Burrow
  conn UpperWastes.NorthTP:
    moki: OuterRuinsTP, Burrow
  conn WindtornRuins.RuinsTP:
    moki: InnerRuinsTP, Burrow
  conn WillowsEnd.InnerTP:
    moki: WillowTP, Burrow

anchor MarshSpawn.Main at -799, -4310:  # spawn location / inkwater well
  refill Full

  state MarshSpawn.LogBroken: free
  state MarshSpawn.ToOpherBarrier:
    moki: BreakWall=16
    kii: MarshSpawn.RainLifted, Bash, Damage=10  # lure the mantis
  state NonGladesTeleporter: free

  pickup MarshSpawn.RockHC: free
  pickup MarshSpawn.FirstPickupEX: free
  pickup MarshSpawn.GrappleHC:
    moki: Grapple, DoubleJump OR Launch
    gorlek:
      Grapple, Dash OR Glide OR Sword OR Hammer  # An air combo is enough to get you from the ceiling plant into range of the lower hanging plant
      SentryJump=1, Launch, DoubleJump OR Dash  # just using the swordfloats was a bit precise
      MarshSpawn.RainLifted:  # using the mantis
        Grapple, Bash
        Bash, Launch, Damage=10
        Bash, Launch, DoubleJump, TripleJump OR Glide OR Sword OR Hammer
        Bash, Launch, Dash
    kii:
      Launch, Damage=10, DoubleJump OR Dash  # Jump off the wall next to the ceiling plant (possible w/o dmg by refreshing abilities on the left wall from the spikes)
      MarshSpawn.RainLifted, Bash, DoubleJump, TripleJump  # Bash the slime from across the broken log to the jumper underneath the pickup and juggle him high, bash off both (may be unsafe)
    unsafe:
      Launch  # Launching along the ceiling, starting above the LongSwimEX
      Grapple, Bash, Grenade=1
      Launch, Damage=10  # Jump off the wall next to the ceiling plant and then dmg-boost on the left side of the spikes to get another launch
      MarshSpawn.RainLifted, Launch, Sword  # Hit the mantis midair to use launch again
  pickup MarshSpawn.BridgeEX:
    moki:
      DoubleJump OR Dash OR Glide OR Launch
      Bash, Grenade=1  # Grenade bash straight up from below
    gorlek:
      MarshSpawn.RainLifted, Bash  # jump the jumper
      Sword OR Hammer  # Long jump, upslash and neutral slashes are enough with both weapons
    kii:
      Sentry=1 OR Flash=1
      Blaze=1 OR Shuriken=1  # Using drop-down
  pickup MarshSpawn.LongSwimEX:
    moki: Water
  pickup MarshSpawn.BurrowOre:
    moki:
      Water, Burrow, Bash, DoubleJump OR Glide OR Launch  # Bash for the exploding enemy
      Water, Burrow, Bash, Grenade=1, Dash
    gorlek: Water, Burrow, DoubleJump OR Dash OR Glide OR Launch OR Sword OR Hammer OR Damage=10
    kii:
      Damage=20, Burrow, DoubleJump OR Dash OR Glide OR Launch OR Sword OR Hammer
      Damage=20, Burrow, Sentry=2 OR Blaze=3 OR Shuriken=1
      WaterDash, Damage=10, Burrow, DoubleJump OR Dash OR Glide OR Launch OR Sword OR Hammer
      WaterDash, Damage=10, Burrow, Sentry=2 OR Blaze=3 OR Shuriken=1
      Damage=30, Burrow
      WaterDash, Damage=20, Burrow
    unsafe:
      Damage=20, Burrow, Shuriken=1, Flash=1 OR Blaze=1 OR Spear=1
      WaterDash, Damage=10, Burrow, Shuriken=1, Flash=1 OR Blaze=1 OR Spear=1
  pickup MarshSpawn.LifepactShard:
    moki, Regenerate, Damage=40, Combat=Hornbug+Bat+2xSandworm+2xLizard+3xSkeeto+SneezeSlug:
      Water, Burrow, DoubleJump OR Launch
      Water, Burrow, Dash, Bash, Grenade=1
    kii, Combat=Hornbug+Bat+2xSandworm+2xLizard+3xSkeeto+SneezeSlug:
      Damage=20, Burrow, DoubleJump OR Dash OR Glide OR Launch OR Sword OR Hammer
      Damage=20, Burrow, Sentry=1 OR Blaze=2 OR Shuriken=1 OR Flash=1
      WaterDash, Damage=10, Burrow, DoubleJump OR Dash OR Glide OR Launch OR Sword OR Hammer
      WaterDash, Damage=10, Burrow, Sentry=1 OR Blaze=2 OR Shuriken=1 OR Flash=1
      Damage=30, Burrow
      WaterDash, Damage=20, Burrow
      Water, Burrow, DoubleJump OR Launch
      Water, Burrow, Dash, Bash, Grenade=1
  conn Teleporters: free
  conn MarshSpawn.BrokenBridge: free
  conn MarshSpawn.PoolsBurrowsSignpost:
    moki:
      Water, Burrow, DoubleJump OR Glide OR Launch
      Water, Burrow, Dash, Bash, Grenade=1
    gorlek: Water, Burrow, DoubleJump OR Dash OR Glide OR Launch OR Sword OR Hammer OR Damage=10
    kii:
      Damage=20, Burrow, DoubleJump OR Dash OR Glide OR Launch OR Sword OR Hammer
      Damage=20, Burrow, Sentry=1 OR Blaze=2 OR Shuriken=1 OR Flash=1
      WaterDash, Damage=10, Burrow, DoubleJump OR Dash OR Glide OR Launch OR Sword OR Hammer
      WaterDash, Damage=10, Burrow, Sentry=1 OR Blaze=2 OR Shuriken=1 OR Flash=1
      Damage=30, Burrow
      WaterDash, Damage=20, Burrow
  conn MarshPastOpher.MillView:
    moki: MarshSpawn.ToOpherBarrier
  conn MarshSpawn.PoolsPath:
    moki:
      DoubleJump, Bash, Glide
      Bash, Launch
    gorlek:
      DoubleJump, Bash, TripleJump OR Dash OR Sword OR Hammer OR Damage=10
      Bash, Glide, Damage=10, Sword OR Hammer  # While waiting for 3rd shot do two neutral slashes to stay in the air longer
      Launch, Damage=10, DoubleJump OR Dash OR Glide OR Sword
    kii:
      Launch, DoubleJump OR Damage=10 OR Sword  # Land on the first turret
      Bash, Damage=20
    unsafe:
      Bash, Dash, Damage=10, Sword OR Hammer  # While waiting for 3rd shot do two neutral slashes to stay in the air longer / Sometimes the cycle are off making it too hard for gorlek
      Launch, Deflector, Sword OR Hammer
      DoubleJump, TripleJump, Deflector, Sword OR Hammer  # Land on first turret
      DoubleJump, TripleJump, Deflector, Damage=10, Sword OR Hammer  # Able to dmg boost on spikes
      DoubleJump, TripleJump, Deflector, Damage=10, Glide, Sword OR Hammer

# checkpoint at -1021, -4305
# checkpoint at -1068, -4274

anchor MarshSpawn.BrokenBridge at -643, -4352:  # after dropping down the breaking bridge
  refill Checkpoint

  pickup MarshSpawn.ResilienceShard:
    moki: BreakWall=16
    kii: MarshSpawn.RainLifted  # Lure mantis
  pickup MarshSpawn.ResilienceOre:
    moki: BreakWall=16, Water
    kii: MarshSpawn.RainLifted, Water OR Damage=60  # Lure mantis | u can see all the spikes underwater
  pickup MarshSpawn.BashEC:
    moki: Bash OR Launch
    gorlek: SentryJump=1
    unsafe: MarshSpawn.RainLifted, DoubleJump, Sword  # Use pogo of the slime to jump to the ledge
  pickup MarshSpawn.PreLupoEX: free
  pickup MarshSpawn.LupoMap:
    moki: SpiritLight=200

  conn MarshSpawn.CaveEntrance: free
  conn MarshPastOpher.MillView:
    moki, MarshSpawn.LogBroken, MarshSpawn.ToOpherBarrier:
      Combat=Mantis, DoubleJump OR Bash OR Dash OR Launch
    gorlek, MarshSpawn.LogBroken, MarshSpawn.ToOpherBarrier:
      SentryJump=1
      Hammer, Glide
    kii, MarshSpawn.LogBroken, MarshSpawn.ToOpherBarrier:
      MarshSpawn.RainLifted, Sword  # pogo
      MarshSpawn.RainLifted, Bash
      Sword, Sentry=1 OR Flash=1
      Sentry=2
      Hammer, Sword
      Grenade=1, Bash
    unsafe: MarshSpawn.LogBroken, Grenade  # GrenadeJump=1
  conn MarshSpawn.Main:
    moki, MarshSpawn.LogBroken:
      Combat=Mantis, DoubleJump OR Bash OR Dash OR Launch
    gorlek, MarshSpawn.LogBroken:
      SentryJump=1
      Hammer, Glide
    kii, MarshSpawn.LogBroken:
      MarshSpawn.RainLifted, Sword  # pogo
      MarshSpawn.RainLifted, Bash
      Sword, Sentry=1 OR Flash=1
      Sentry=3
      Hammer, Sword
      Grenade=2, Bash
    unsafe: MarshSpawn.LogBroken, Grenade  # GrenadeJump=1

anchor MarshSpawn.CaveEntrance at -588, -4393:  # before the door blocking regen tree
  refill Checkpoint

  state MarshSpawn.KeystoneDoor:
    moki: Keystone=2
  state MarshSpawn.TokkBarrier:
    moki: BreakWall=16
    unsafe: MarshSpawn.RainLifted  # check this again. Lure the mantis

  pickup MarshSpawn.LeverEC:
    moki:
      Grapple, DoubleJump, Bash
      Launch, Bash
      Grapple, Launch
      Bash, Grenade=1, DoubleJump
    gorlek:
      Grapple, Bash, Dash OR Glide  # both weapon float variants are rather awkward
      SentryJump=1, DoubleJump, TripleJump
      SentryJump=1, Bash
      Launch  # different ways to solve
    kii:
      MarshSpawn.RainLifted, Bash  # Lure the Jumper, then bash off him
      Grapple, Bash, Sentry=1 OR Flash=1 OR Shuriken=1 OR Spear=1
      DoubleJump, Hammer, Sentry=2  # Jump from the door frame
      Bash, Grenade=1
      MarshSpawn.RainLifted, DoubleJump, Sword  # Jump from the door frame and pogo on Jumper
    unsafe:
      SentryJump=1  # max height
      DoubleJump, TripleJump, Sword OR Hammer
      Grapple, Dash  # Swing the plant with Grapple
      DoubleJump, TripleJump  # Jump from the door frame
      DoubleJump, Sword  # Jump from the door frame and pogo on Jumper

  conn MarshSpawn.DenApproach:
    moki: MarshSpawn.KeystoneDoor
  conn MarshSpawn.BrokenBridge:
    moki:
      DoubleJump OR Launch
      Bash, Grenade=1
    gorlek:
      Dash OR SentryJump=1
      MarshSpawn.RainLifted, Bash  # enemy that only spawns at daytime
    kii:
      Sword OR Hammer
      Sentry=1 OR Flash=1
    unsafe:
      Bash  # at night there's a slime that works too
  conn MarshSpawn.Cave:
    moki: MarshSpawn.TokkBarrier

anchor MarshSpawn.Cave at -707, -4419:  # At Tokk in the Cave
  refill Checkpoint
  refill Health=1

  state MarshSpawn.TokkBarrier:
    gorlek: ShurikenBreak=16
    unsafe: HammerBreak OR SpearBreak
  state MarshSpawn.CaveFight:
    Combat=3xLizard  # at day there's two extra lizards

  quest MarshSpawn.CaveKS:
    moki:
      DoubleJump, Dash OR Grapple
      Bash, DoubleJump OR Dash OR Glide OR Grapple  # day and night both have a slime here
      Launch
      MarshSpawn.CaveFight
    gorlek: DoubleJump OR Bash OR Grapple  # basically the moki paths without assisting abilities
    kii:
      Sword  # Pogo on the slime and slash to the left
      Hammer  # upswing into leftswing
  quest MarshSpawn.TokkKeystoneQuest:
    moki: MarshSpawn.CaveKS

  pickup MarshSpawn.LeftTokkEX:
    moki: BreakWall=10
  pickup MarshSpawn.FightRoomEX:
    moki: BreakWall=10

  conn Tokk: free  # this one is tokk anywhere'd
  conn MarshSpawn.CaveEntrance:
    moki: MarshSpawn.TokkBarrier
  conn MarshSpawn.PoolsBurrowsSignpost:
    moki:
      DoubleJump, Dash OR Grapple
      Bash, DoubleJump OR Dash
      Bash, Grenade=1, Glide OR Grapple
      Launch
      MarshSpawn.CaveFight, DoubleJump OR Dash
      MarshSpawn.CaveFight, Bash, Grenade=1
    gorlek:
      DoubleJump
      Bash, Grenade=1
      MarshSpawn.CaveFight, SentryJump=1  # makes other sentryjump paths unnecessary
      # weapon floats maybe too precise for gorlek
    kii:
      Sword  # Pogo on the slime and slash to the left, Upslash to reach the branch
      Hammer  # weapon floats
      Bash  # use slimes
      MarshSpawn.CaveFight, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1

# checkpoint at -845, -4438

anchor MarshSpawn.PoolsBurrowsSignpost at -898, -4436:  # the waypoint between pools, burrows and marsh
  refill Checkpoint
  refill Energy=1:
    unsafe: BreakCrystal  # slightly out of sight

  state MarshSpawn.BurrowArena:
    moki: Regenerate, Damage=40, Combat=Hornbug+Bat+2xSandworm+2xLizard+3xSkeeto+SneezeSlug, Bash, DoubleJump OR Launch

  quest MarshSpawn.CaveKS: free
  
  pickup MarshSpawn.CaveOre:
    moki:
      DoubleJump OR Launch
      Bash, Grenade=1
    gorlek:
      SentryJump=1
    kii:
      Sentry=1 OR Flash=1 OR Spear=1 OR Sword OR Hammer OR Dash
  pickup MarshSpawn.BurrowOre:
    moki:
      Burrow, DoubleJump, Bash, Dash OR Glide OR Grenade=1
      Burrow, Bash, Launch
    gorlek:
      Burrow, Combat=Bat, DoubleJump OR Dash
      Burrow, Damage=10, DoubleJump OR Dash
      Burrow, Launch
      # could do a sentryjump into bashgrenade, but I heard that kind of thing is unwelcome ;P
    kii:
      Burrow, Dash
      Burrow, Sword
      Burrow, Hammer, Damage=10
  pickup MarshSpawn.LifepactShard:
    moki: MarshSpawn.BurrowArena, Bash, DoubleJump OR Dash OR Launch
    kii, MarshSpawn.BurrowArena:  # stalling kii validation for the kii branch
      Sword OR Hammer  # Use weapon to combat slug/bat
      Glide, Combat=Bat+WeakSlug OR Bash
      Combat=Bat+WeakSlug, Damage=10, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1 OR Damage=10
      Bash, Grenade=1 OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Damage=10
    unsafe, MarshSpawn.BurrowArena: Bash  # small ledge near the first spikes to avoid a dboost
      
  pickup MarshSpawn.BurrowsApproachLedgeEX:
    moki: Bash, DoubleJump OR Launch
    gorlek:
      Bash, Dash OR Glide
      # weapon floats with bash moved out of gorlek
      Launch, Glide
      Launch, Damage=10, DoubleJump OR Dash OR Sword OR Hammer
      Launch, DoubleJump, TripleJump OR Dash OR Sword OR Hammer
    kii:
      Launch, Dash  # bonking your head on the cealing to reset launch and dash
      Launch, Damage=10
      Bash, Damage=10, Sword OR Hammer
      Bash, Damage=10, Sentry=3 OR Shuriken=3
      Bash, Damage=30
    unsafe:
      Bash, Sentry=3  # Use Sentry instead of DoubleJump
      Bash, Sword
      Bash, Hammer, Damage=10  # dboost under the first lantern, too precise for gorlek
      Launch  # Enough ledges to regain launch

  conn MarshSpawn.BeforeBurrows:
    moki: Bash, DoubleJump OR Dash OR Launch
    gorlek:
      Bash, Glide
      Launch, Glide
      Launch, Damage=10, DoubleJump OR Dash OR Sword OR Hammer
      Launch, DoubleJump, TripleJump OR Dash OR Sword
      Launch, Dash, Sword
    kii:
      Launch, Dash
      Launch, Damage=10
      Bash, Damage=10, Sword OR Hammer
      Bash, Damage=10, Sentry=3 OR Shuriken=3
      Bash, Damage=30
  conn MarshSpawn.Cave: free
  conn MarshSpawn.Main:
    moki:
      Water, Burrow, Bash, DoubleJump, Dash OR Glide
      Water, Burrow, Bash, Launch
    gorlek:
      Water, Burrow, Combat=Bat, DoubleJump OR Dash
      Water, Burrow, Damage=10, DoubleJump OR Dash
    kii:
      Burrow, Damage=40, Sword OR Hammer OR DoubleJump OR Dash  # big damage number because you can take a lot of damage in the dirty water
    unsafe:
      Water, Burrow, Sword OR Hammer

# checkpoint at -954, -4355
# checkpoint at -1004, -4497

anchor MarshSpawn.BeforeBurrows at -1006, -4497:  # On the island before the Burrows entry
  refill Checkpoint

  pickup MarshSpawn.CrusherSwimEX:
    moki: Water, WaterDash
    kii: WaterDash, Damage=20
  pickup MarshSpawn.BurrowsApproachLedgeEX:
    moki: Launch  # Bash paths redundant with PoolsBurrowsSignpost
    gorlek: SentryJump=1, Damage=10, DoubleJump, TripleJump  # Land in the spikes under the pickup and triple jump to the left platform
    kii:
      Bash, Sword OR DoubleJump OR Hammer OR Dash OR Glide  # tentacle needs to shoot up along the left wall
    unsafe:
      SentryJump=1, Damage=10, DoubleJump  # Land in the spikes under the pickup and doublejump + upslash to reach the right platform. Hammer upslash is enough to reach the platform, sword upslash the ennemy to refresh your double jump

  conn MarshSpawn.BurrowsEntry:
    moki:
      Bash, DoubleJump, Dash OR Glide
      Water, WaterDash, Bash, Grenade=1
      Water, WaterDash, DoubleJump, Dash OR Glide
      Launch
    gorlek:
      Bash, DoubleJump
      Bash, Dash, Glide OR Sword OR Hammer
      Water, WaterDash, DoubleJump OR Dash OR SentryJump=1  # With sjump, weapon hover as well
      SentryJump=1, DoubleJump, TripleJump, Dash OR Glide
    kii:
      Bash, Dash OR Glide
      Bash, Damage=20, Sword OR Hammer
      WaterDash, Damage=20, Dash OR DoubleJump
      WaterDash, Damage=30, Sentry=2 OR Hammer OR Sword
    unsafe:
      SentryJump=1, DoubleJump, Damage=10  # Weapon hover and damage boost in the first spikes
      Bash, Dash OR Glide OR Hammer OR Sword  # Use the projectile from the ennemy at the left then bash the the tentacle and land directly on the last platform
  conn MarshSpawn.PoolsBurrowsSignpost:
    moki:
      Bash, DoubleJump, Dash
      Launch, Bash
    gorlek:
      Bash, DoubleJump, TripleJump OR Glide OR Sword OR Hammer
    kii:
      Bash, DoubleJump
      Bash, Dash, Sword OR Hammer OR Sentry=1 OR Flash=1 OR Shuriken=1 OR Spear=1
      Launch, DoubleJump, TripleJump OR Dash OR Glide  # put this one here from gorlek because it waaaay to precise
      Launch, Damage=10, DoubleJump OR Dash OR Glide OR Sword  # this one too
    unsafe:
      Launch, Dash
      Launch, Glide  # Reset your launch by touching the wallunder the spikes

anchor MarshSpawn.BurrowsEntry at -931, -4494:  # At the bells puzzle
  refill Checkpoint

  state MarshSpawn.BurrowsOpen:
    moki:
      Bash, DoubleJump, Glide
      Bash, Launch
    gorlek:
      Bash, DoubleJump, Dash
      Bash, Glide
      Bash, Grenade=1
      Bash, SwordSJump=1
    kii: Bash, DoubleJump  # bashgliding
    unsafe: Bash  # fun

  quest MarshSpawn.TokkTabletQuest:
    moki: MidnightBurrows.TabletQI

  pickup MarshSpawn.DamageTree:
    moki: Bash, DoubleJump OR Dash OR Glide OR Launch
    gorlek: Bash

  conn Tokk: free
  conn MidnightBurrows.Teleporter:
    moki: MarshSpawn.BurrowsOpen
  conn MarshSpawn.BeforeBurrows:
    moki:
      Glide OR Launch
      DoubleJump, Dash
      Water, DoubleJump OR Dash
      Water, WaterDash
    gorlek:
      Sword
      Hammer, DoubleJump OR Dash
      Damage=10, DoubleJump OR Dash OR Hammer  # splash the water if needed
      Water, DoubleJump OR Dash OR Hammer OR Damage=10

# checkpoint at -1067, -4274

anchor MarshSpawn.PoolsPath at -1070, -4275:  # Above the turrets at the left of spawn
  refill Checkpoint

  pickup MarshSpawn.PoolsPathEX:
    moki:
      DoubleJump, Bash, Glide
      Bash, Launch
    gorlek:
      Launch
      Glide, Sword OR Hammer OR DoubleJump OR Dash OR Bash
      DoubleJump, TripleJump OR Dash
      DoubleJump, Bash, Sword OR Hammer OR Damage=10
    kii:
      Bash, Dash OR Sword OR Hammer OR DoubleJump OR Damage=10
    unsafe:
      DoubleJump, Deflector

  conn PoolsApproach.LeftOfWheel:
    moki: Water
  conn MarshSpawn.Main:
    moki:
      Water, WaterDash OR Launch
      Glide, Bash OR Launch
    gorlek:
      Launch
      Water, DoubleJump OR Bash
      Glide, Dash OR DoubleJump
      DoubleJump, Sword OR Dash
    kii:
      DoubleJump, Bash OR TripleJump
    unsafe:
      DoubleJump, Hammer
      Dash  # Reset your dash on the ceiling

anchor MarshSpawn.DenApproach at -540, -4406:  # at regen tree
  state MarshSpawn.KeystoneDoor:
    moki, Keystone=2:
      DoubleJump, Dash, Bash, Glide  # not sorry
      Bash, Grenade=1
      Launch
      MarshSpawn.RainLifted, DoubleJump  # the platform only spawns once you lift the rain
    gorlek, Keystone=2:
      DoubleJump, TripleJump  # wrap around
      SentryJump=1  # weapon float after the sjump
    kii, Keystone=2:
      Hammer  # upslash to slash left to walljump up
      DoubleJump
      WaterDash, Sword OR Hammer OR Sentry=1 OR Flash=1 OR Spear=1
      MarshSpawn.RainLifted, Sword OR Hammer OR Sentry=1 OR Flash=1 OR Spear=1  # Use the platform appearing at day
    unsafe, Keystone=2:
      MarshSpawn.RainLifted, Dash  # Stand on the left of the platform to tilt it slightly, Dashcancel to the right with jump and Dash back left
      WaterDash, DoubleJump
      DoubleJump
  state MarshSpawn.HowlBurnt:
    moki:
      DoubleJump OR Launch
      Dash, Glide
      Bash, Grenade=1
      WaterDash  # water always clean
    gorlek: SentryJump=1
    kii: Dash OR Sword OR Hammer OR Sentry=1 OR Flash=1 OR Spear=1

  pickup MarshSpawn.RegenTree: free
  pickup MarshSpawn.RecklessShard:
    moki, BreakWall=10:
      DoubleJump OR Launch
      Dash, Glide
      Bash, Grenade=1
      WaterDash  # water always clean
    gorlek: BreakWall=10, SentryJump=1
    kii:
      BreakWall=10, Dash OR Sword OR Hammer OR Sentry=1 OR Flash=1 OR Spear=1
      MarshSpawn.RainLifted, Bash, Damage=10, Dash OR Sword OR Hammer OR Sentry=1 OR Flash=1 OR Spear=1  # Luring the Mantis without Bash is really hard (maybe impossible) | Damage because hitboxes

  conn HowlsDen.Entrance:
    moki, MarshSpawn.HowlBurnt:
      DoubleJump OR Launch
      Dash, Glide
      Bash, Grenade=1
      WaterDash  # water always clean
    gorlek: MarshSpawn.HowlBurnt, SentryJump=1
    kii: MarshSpawn.HowlBurnt, Dash OR Sword OR Hammer OR Sentry=1 OR Flash=1 OR Spear=1
  conn MarshSpawn.CaveEntrance:
    moki, MarshSpawn.KeystoneDoor:
      DoubleJump, Dash, Bash, Glide  # not sorry
      Bash, Grenade=1
      Launch
      MarshSpawn.RainLifted, DoubleJump  # the platform only spawns once you lift the rain
    gorlek, MarshSpawn.KeystoneDoor:
      DoubleJump, TripleJump  # wrap around
      SentryJump=1  # can do one of a good sjump, a good positioning, pressing left quickly after the sentryjump or spending an extra energy
    kii, MarshSpawn.KeystoneDoor:
      Hammer  # upslash to slash left to walljump up
      DoubleJump
      WaterDash, Sword OR Hammer OR Sentry=1 OR Flash=1 OR Spear=1
      MarshSpawn.RainLifted, Sword OR Hammer OR Sentry=1 OR Flash=1 OR Spear=1  # Use the platform appearing at day
    unsafe, MarshSpawn.KeystoneDoor:
      MarshSpawn.RainLifted, Dash  # Stand on the left of the platform to tilt it slightly, Dashcancel to the right with jump and Dash back left

# checkpoint at -500, -4395

anchor HowlsDen.Entrance at -376, -4413:  # Next to Mokk the Brave, but outside the bridge if Howl is still lurking
  # Lifting the Rain is free from here in all scenarios, eliminating the need to note it as a requirement for the enemy or vine to the right

  state MarshSpawn.HowlBurnt: free

  quest MarshSpawn.FangQI:
    moki:
      DoubleJump OR Launch
      Bash, Dash                      # Bash off the enemy to get to the vine, then jump&dash right
    gorlek:
      Bash, Grenade=1 OR Damage=10    # Bash off the enemy to get to the vine, then jump right. Dboost the last gap
      SentryJump=1                    # SentryJump to get over the initial jump, then jump right, use sword or hammer to get over last gap
    kii:
      Bash, Glide OR Grenade=1 OR Sword OR Hammer OR Damage=10
      Shuriken=1, Sword OR Sentry=1 OR Flash=1 OR Spear=1  # use the abillity to get on the wall to the right and use shuriken to get onto the vine
      Sword, Sentry=1 OR Hammer OR Flash=1 OR Spear=1  # pogo off the enemy
    unsafe:
      Grenade=1, Damage=10            # Grenade jump to get to the vine, then jump right. Dboost the last gap.
      Grenade=2                       # Grenade jump to get to the vine, then jump right. Grenade jump the last gap.
      Sword                           # With upslash on the right wall, jump off it close to the ceiling and slash sword
  quest MarshSpawn.MokkFangQuest:
    moki: MarshSpawn.HowlBurnt, MarshSpawn.FangQI

  pickup MarshSpawn.FangEC:
    moki:
      DoubleJump, Dash                # Stick to the ceiling
      Launch
    gorlek:
      Bash, Grenade=1, Damage=10      # Bash up off the enemy and take a dboost on the last gap
      Bash, Grenade=2                 # As above, but use bash grenade on the last gap
      SentryJump=2, DoubleJump OR Dash OR Damage=10  # SentryJump to get over the initial jump, then jump right, use sword/hammer to get over last gap, SentryJump to EC
      SentryJump=3                    # SentryJump to get over the initial jump, then jump right, use sword/hammer to get over last gap, SentryJump to EC
      DoubleJump, TripleJump          # Stick to the ceiling
    unsafe:
      Bash, Grenade=1, DoubleJump OR Dash OR Glide   # Bash up off the enemy and Dash/Djump/Glide to the fang. Grenade+bash up from the fang
      Bash, Grenade=1, Sword OR Hammer               # As above, but sword/hammer upslash to cross the last gap
      Grenade=2, DoubleJump            # Grenade jump to get to the vine, then jump right. Dboost the last gap. Grenade jump to EC.
      Dash, Sword, Regenerate OR Blaze  # wavedash
  pickup MarshSpawn.RecklessShard:
    moki, MarshSpawn.HowlBurnt, BreakWall=10:
      DoubleJump OR Launch
      Bash, Grenade=1
    gorlek, MarshSpawn.HowlBurnt, BreakWall=10:
      SentryJump=1
      Dash
    kii, MarshSpawn.HowlBurnt, BreakWall=10:
      Sword OR Hammer OR Sentry=1 OR Flash=1 OR Spear=1 OR Shuriken=1
    unsafe, MarshSpawn.HowlBurnt, BreakWall=10:
      Bash                            # Long distance lure
      Grenade=1                       # Grenade jump to get over initial gap
  pickup HowlsDen.UpperEX:
    moki: MarshSpawn.HowlBurnt

  conn HowlsDen.AboveBoneBridge:
    moki: MarshSpawn.HowlBurnt
  conn MarshSpawn.DenApproach:
    moki, MarshSpawn.HowlBurnt:
      DoubleJump OR Launch
      Bash, Grenade=1
    gorlek, MarshSpawn.HowlBurnt:
      SentryJump=2
      Dash, Bash                      # Dash for first jump, bash off fronkey for second
    kii:
      Hammer  # upslash -> upslash
      Sword  # upslash for the first gap, then pogo off the mantis for the second gap
      Spear=1, Dash  # use spear to get close to the ledge and use little hop to dash on the platform
      Bash, Sentry=1 OR Flash=1 OR Spear=1 OR Shuriken=1  # hop to the first ledge and then bash the mantis
    unsafe, MarshSpawn.HowlBurnt:
      Sword, Shuriken=1  # downslash on a shuriken
      Bash                            # Long distance lure for the first jump, simple lure for second
      Dash, Sentry=1                  # As above but uses sentry
      Grenade=2                       # Grenade jump to get over both gaps

# checkpoint at -298, -4388

anchor HowlsDen.AboveBoneBridge at -446, -4436:  # After the climb up through the keydoor
  refill Checkpoint

  pickup HowlsDen.UpperEX:
    moki: Launch
    gorlek:
      DoubleJump, TripleJump
      Bash, Grenade=1
    kii:
      Bash

  conn HowlsDen.UpperLoopEntrance: free
  conn HowlsDen.Entrance:
    moki: MarshSpawn.HowlBurnt, Launch
    gorlek, MarshSpawn.HowlBurnt:
      DoubleJump, TripleJump
      Bash, Grenade=1, DoubleJump OR Dash OR Glide OR Sword
    kii, MarshSpawn.HowlBurnt:
      Bash, Hammer OR DoubleJump OR Dash OR Sword OR Glide OR Sentry=1 OR Flash=1 OR Shuriken=1 OR Spear=1
    unsafe, MarshSpawn.HowlBurnt:
      Bash, DoubleJump OR Dash OR Glide OR Sword  # use the slime
      Bash  # use the slime, tight coyote jump
  conn HowlsDen.SecretRoom:
    gorlek: ShurikenBreak=16, BreakWall=20
    unsafe:
      HammerBreak
      SpearBreak, BreakWall=20

anchor HowlsDen.UpperLoopEntrance at -407, -4451:  # In front of the bone door blocking the loop with the right hc
  refill Checkpoint:
    moki: BreakWall=16

  pickup HowlsDen.RightHC:
    moki: BreakWall=16, BreakWall=20, Combat=Slug OR Bash OR Launch
    gorlek: BreakWall=16, BreakWall=20

  conn HowlsDen.BoneBridge: free
  conn HowlsDen.AboveBoneBridge:
    moki:
      Bash, Grenade=1
    gorlek:
      Launch
      DoubleJump, TripleJump
    kii:
      DoubleJump, Hammer  # kinda pointless with hammer but a path is a path
  conn HowlsDen.UpperLoopExit:
    moki:
      BreakWall=16, BreakWall=16, Combat=Slug, DoubleJump OR Dash
      BreakWall=16, BreakWall=16, Bash, DoubleJump OR Dash
    gorlek:
      BreakWall=16, BreakWall=16, DoubleJump OR Dash
      BreakWall=16, BreakWall=16, Glide, Combat=Slug OR Bash
      BreakWall=16, BreakWall=16, Sword OR HammerSJump=1
      BreakWall=16, BreakWall=16, WaterDash, Water  # @Validator added water
    kii:
      BreakWall=16, BreakWall=16, Hammer OR Glide OR Bash OR Shuriken=1 OR Sentry=1 OR Flash=1
      BreakWall=16, BreakWall=16, WaterDash, Damage=10

anchor HowlsDen.UpperLoopExit at -407, -4434:  # Checkpoint inside the bone door where you exit the loop with right hc (you can walk out)
  refill Checkpoint

  pickup HowlsDen.UpperEX:
    moki: DoubleJump OR Dash
    gorlek: Glide OR Sword
    kii: Hammer OR Sentry=1 OR Flash=1 OR Shuriken=1 OR Spear=1
    unsafe: free

  conn HowlsDen.Entrance:
    moki: MarshSpawn.HowlBurnt, DoubleJump OR Dash
    gorlek: MarshSpawn.HowlBurnt, Glide OR Sword
    kii: MarshSpawn.HowlBurnt, Sentry=1 OR Flash=1 OR Shuriken=1 OR Spear=1 OR Hammer
    unsafe: MarshSpawn.HowlBurnt  # tight jumps
  conn HowlsDen.AboveBoneBridge: free

anchor HowlsDen.BoneBridge at -371, -4468:  # After the long drop into Howl's Den
  refill Checkpoint

  state HowlsDen.KeystoneDoor:
    moki: Keystone=2
  state MarshSpawn.RainLifted: free  # the sword tree
  state HowlsDen.BoneBarrier:  # the barrier blocking the lowest part of Howl's Den
    moki: BreakWall=16

  pickup HowlsDen.BoneOre:
    moki:
      Hammer
      Combat=Mantis+Slug, Spear=1  # spear likes to target the enemies around
  pickup HowlsDen.AboveDoorKS:
    moki: DoubleJump OR Launch
    gorlek:
      Dash
      Bash, Damage=10  # Bash off the fronkey or slime to get to the unstable platform wall jump for the other two jumps
      SentryJump=1  # SentryJump onto the unstable platform, hammer/sword stall to left wall, wall jump to pickup
    kii:
      Sword OR Hammer OR Bash OR Sentry=3 OR Shuriken=3
    unsafe:
      Grenade=2  # Grenade jump onto the unstable platform then grenade jump to the pickup (requires some horizontal drifting)
  pickup HowlsDen.SwordTree: free
  pickup HowlsDen.MagnetShard:
    moki: BreakWall=10, BreakWall=16 OR Launch
    kii: BreakWall=10, DoubleJump, TripleJump
  pickup HowlsDen.AboveTPEX:
    moki: HowlsDen.BoneBarrier, BreakWall=10

  conn HowlsDen.UpperLoopEntrance:
    gorlek:
      Launch
      Bash, Grenade=1, DoubleJump, TripleJump
    unsafe: DoubleJump, Sword  # Door skip
  conn HowlsDen.SecretRoom:
    moki: HowlsDen.KeystoneDoor, BreakWall=20, Water OR DoubleJump OR Dash OR Glide OR Launch
    gorlek, HowlsDen.KeystoneDoor:
      Sword OR Hammer  # weapon breaks the wall
      BreakWall=20, Damage=10  # @Validator added this path
    kii: HowlsDen.KeystoneDoor, BreakWall=20, Shuriken=1 OR Sentry=1 OR Blaze=1 OR Flash=1 OR Spear=1
  conn HowlsDen.AboveBoneBridge:
    moki, HowlsDen.KeystoneDoor:
      BreakWall=16, DoubleJump, Combat=2xSlug OR Bash
      BreakWall=16, Dash, Bash, Grenade=1
      BreakWall=16, Glide, Bash, Grenade=2
      BreakWall=16, Launch
    gorlek, HowlsDen.KeystoneDoor:
      BreakWall=16, Dash, Combat=2xSlug OR Bash
      BreakWall=16, Glide, Bash, Grenade=1
      BreakWall=16, Water, Bash, Grenade=3, Damage=10
      Hammer, Bash, Grenade=3, Damage=10  # hammer breaks the wall
      BreakWall=16, Water, WaterDash, Bash, Grenade=2, Damage=10
      Sword, Bash, Grenade=1  # sword breaks the wall
      SwordSJump=1  # weapon breaks the wall
      HammerSJump=1, Glide  # weapon breaks the wall
      SentryJump=3, Hammer, Damage=10  # hammer breaks the wall
      Water, WaterDash, HammerSJump=2, Damage=10  # hammer breaks the wall
    kii, HowlsDen.KeystoneDoor:
      Sword OR Hammer
      BreakWall=16, Damage=10, Shuriken=5 OR Sentry=5 OR Flash=5  # one jump is kinda hard
      BreakWall=16, Sentry=6  # two sentries in the air to avoid the spikes
  conn HowlsDen.Teleporter:
    moki: HowlsDen.BoneBarrier

anchor HowlsDen.SecretRoom at -515, -4479:  # The hidden room holding left hc
  refill Checkpoint

  pickup HowlsDen.LeftHC:
    moki:
      Combat=SneezeSlug, DoubleJump OR Dash
      Bash, DoubleJump OR Dash
      Launch
    gorlek:
      DoubleJump OR Dash
      Glide, Combat=SneezeSlug OR Bash  # hold glide before jumping from the moss
      Sword, Damage=10  # just safety damage
    kii:
      Sword OR Hammer OR Sentry=4 OR Flash=4 OR Shuriken=4
      Spear=4, Damage=10
    unsafe:
      Grenade=1, Damage=50  # 30dmg get to slime, 10dmg set-up grenade jump, 10mg close gap to HC
  # could add backwards connections someday

# checkpoint at -511, -4479
# checkpoint at -476, -4441

anchor HowlsDen.Teleporter at -328, -4536:  # At the teleporter
  # if someone manages to lower the elevator platform, they'll manage to get over the gap as well. That's how it works in the base game, that's how it'll work here
  refill Full

  state HowlsDen.BoneBarrier:
    gorlek: ShurikenBreak=16, DoubleJump OR Launch OR Bash OR SentryJump=1
    unsafe:
      ShurikenBreak=16, DoubleJump OR Launch OR Bash OR Sword OR Hammer
      SentryBreak=16, DoubleJump OR Launch OR Bash OR Sword OR Hammer
      HammerBreak, DoubleJump OR Launch OR Bash OR Sword OR Hammer
      SpearBreak, DoubleJump OR Launch OR Bash OR Sword OR Hammer
  state HowlsDen.DoubleJumpTreeCombat:  # the game puts this before regen. It's why all the enemies drop tons of health
    moki: Combat=Mantis+2xLizard+SmallSkeeto  # The SmallSkeeto spawns in this arena if the player has Bash.
  state NonGladesTeleporter: free

  pickup HowlsDen.AboveTPEX:
    moki, BreakWall=10:
      DoubleJump OR Launch
      Bash  # bash the slime
    gorlek: BreakWall=10, SentryJump=1
    kii, BreakWall=10:
      Sword OR Dash OR Hammer  # pogo on the slime for sword, upslash for hammer
      Spear=1, Glide
    unsafe, BreakWall=10:
      Grenade=1              # Grenade jump to platform
  pickup HowlsDen.LaserKS:
    moki:
      DoubleJump OR Dash OR Launch
      Bash, Grenade=1
    gorlek:
      SentryJump=1
    kii:
      Sword OR Hammer OR Bash OR Shuriken=1
      Glide, Sentry=1 OR Flash=1 OR Spear=1
    unsafe:
      Grenade=1               # Grenade jump to platform
  pickup HowlsDen.DoubleJumpEX:  # paths going through the fight arena; other paths go through DoubleJumpTreeLedge
    moki: HowlsDen.DoubleJumpTreeCombat
    kii: Combat=Mantis+2xLizard  # The arena state requires fighting an additional skeeto in case the player has Bash. In kii Bash solves by going around though, so kii can omit the added enemy for this pickup

  conn Teleporters: free
  conn DenShrine:
    moki: Hammer OR Spear=1
  conn HowlsDen.DoubleJumpTreeLedge:
    moki: HowlsDen.DoubleJumpTreeCombat OR DoubleJump OR Dash OR Glide OR Launch
    gorlek: Sword OR Hammer
    kii: Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=2
  conn HowlsDen.BoneBridge:
    moki, HowlsDen.BoneBarrier:
      DoubleJump OR Launch
      Bash, Grenade=1
    gorlek: HowlsDen.BoneBarrier, Bash OR SentryJump=1
    kii: HowlsDen.BoneBarrier, Sword OR Hammer

anchor DenShrine at -328, -4569:
  refill Full

  state HowlsDen.CombatShrineCompleted:
    moki, Regenerate, Combat=Mantis+2xLizard+4xEnergyRefill+2xSneezeSlug+Mantis+Skeeto+4xEnergyRefill+7xSmallSkeeto+2xSkeeto+4xEnergyRefill+2xLizard+2xMantis:
      Damage=60
      Damage=40, Dash OR Bash OR Launch  # much better if you have good evasion
    unsafe: Combat=Mantis+2xLizard+4xEnergyRefill+2xSneezeSlug+Mantis+Skeeto+4xEnergyRefill+7xSmallSkeeto+2xSkeeto+4xEnergyRefill+2xLizard+2xMantis

  pickup HowlsDen.CombatShrine:
    moki: HowlsDen.CombatShrineCompleted

anchor HowlsDen.DoubleJumpTreeLedge at -514, -4549:  # To the right of the Double Jump Tree
  refill Checkpoint

  pickup HowlsDen.DoubleJumpEX:
    moki: Launch
    gorlek: SentryJump=1
    kii:
      Bash
      Dash, DoubleJump, TripleJump  # hugging the ceiling from the sticky shard platform
    unsafe:
      DoubleJump, TripleJump          # Triple jump from the right wall
      DoubleJump, Sword               # Jump/Sword combo or pogo on the enemy
      GrenadeJump

  conn HowlsDen.DoubleJumpTreeArea: free
  conn HowlsDen.Teleporter:
    moki:
      DoubleJump
      Bash, Grenade=1, Dash OR Glide
      Launch
    gorlek: SentryJump=1  # Also use weapon stalls
    kii: Dash OR Glide OR Sword OR Hammer OR Shuriken=1 OR Sentry=1 OR Flash=1 OR Spear=1 OR Blaze=1
    unsafe: free

anchor HowlsDen.DoubleJumpTreeArea at -555, -4552:  # At the Double Jump Tree
  state HowlsDen.BoneBarrier:
    unsafe: free  # good game yes
  state MidnightBurrows.HowlsDenShortcut:
    unsafe: ShurikenBreak=10

  pickup HowlsDen.DoubleJumpTree: free
  pickup HowlsDen.StickyShard: free  # origlow

  conn HowlsDen.DoubleJumpTreeLedge:
    moki:
      DoubleJump OR Glide OR Launch
      Bash, Grenade=1
    gorlek: Sword OR HammerSJump=1
    kii:
      Dash OR Sentry=2
      Hammer, Shuriken=1 OR Sentry=1 OR Flash=1 OR Spear=1 OR Blaze=1
    unsafe: Hammer
  conn MidnightBurrows.DenConnection:
    moki: MidnightBurrows.HowlsDenShortcut

# checkpoint at -682, -4309

anchor MarshPastOpher.MillView at -596, -4293:  # Standing next to Opher, looking at the Millstone
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal  # to the left

  state MarshSpawn.ToOpherBarrier:
    gorlek: ShurikenBreak=16
    unsafe: HammerBreak OR SpearBreak
  state MarshSpawn.LogBroken:
    moki: MarshSpawn.ToOpherBarrier

  pickup MarshPastOpher.TrialLeftEX:
    moki: BreakWall=20, DoubleJump OR Dash OR Glide OR Launch
    gorlek:
      Sword OR Hammer  # Horizontal slash combo
      BreakWall=20, Damage=10
    unsafe: BreakWall=20, Sentry=1  # Use Sentry instead of DoubleJump
  pickup MarshPastOpher.SpiritTrial:
    moki: MarshPastOpher.TrialActivation, DoubleJump, Dash, Grapple
    gorlek: MarshPastOpher.TrialActivation, Dash, Grapple
  pickup MarshSpawn.BridgeEX:  # paths that can't get to Main
    moki: MarshSpawn.ToOpherBarrier, Dash OR Glide
    gorlek, MarshSpawn.ToOpherBarrier:
      MarshSpawn.RainLifted, Bash  # jump the jumper
      Sword OR Hammer  # Long jump, upslash and neutral slashes are enough with both weapons

  conn OpherShop: free
  conn MarshPastOpher.TrialArea:
    moki: BreakWall=20
    unsafe: free  # let the mantis jump on the left edge of the log multiple times
  conn MarshPastOpher.BowPath:
    moki: DoubleJump OR Dash OR Glide OR Launch
    gorlek: free
  conn MarshSpawn.Main:
    moki, MarshSpawn.ToOpherBarrier:
      DoubleJump OR Launch
      Bash, Grenade=1
    gorlek: MarshSpawn.ToOpherBarrier, SentryJump=1
  conn MarshSpawn.BrokenBridge:
    moki: MarshSpawn.ToOpherBarrier
  conn MarshPastOpher.PoolsPathEast:
    gorlek:
      Water, Bash, Launch  # the enemies appear once you have water
    unsafe:
      Launch
      SentryJump=2  # first one maxheight

# checkpoint at -603, -4316
# checkpoint at -573, -4339

anchor MarshPastOpher.TrialArea at -427, -4343:  # Next to the combat shrine
  refill Checkpoint
  refill Health=1:  # right below
    moki: DoubleJump OR Dash OR Glide OR Launch
    gorlek: free

  state MarshPastOpher.TrialActivation:  # Since you have to reach this place again in a race to get an advantage, only paths possible during a trial are meaningful
    moki:
      Combat=SneezeSlug+Mantis, Grapple, Dash OR Glide
      Bash, Grapple, Dash OR Glide
    gorlek: Grapple, DoubleJump OR Dash OR Glide OR Damage=10

  pickup MarshPastOpher.TrialLeftEX:
    moki:
      DoubleJump, Dash OR Glide
      Dash, Glide
      Grapple OR Launch
    gorlek:
      DoubleJump
      Damage=10, Dash OR Glide OR Sword OR Hammer
    unsafe:
      Sentry=1, Damage=10
      Damage=20
  pickup MarshPastOpher.TrialOre: free
  pickup MarshPastOpher.TrialEC:
    moki: DoubleJump OR Dash OR Glide OR Launch
    gorlek:
      Sword  # Horizontal slashes
      Hammer, Damage=10
    unsafe:
      Hammer OR Sentry=1
      Grenade=1, Bash  # Throw Grenade up at the lower jumppad (right side and aim up ori facing right), use it and then bash
      Damage=10
  pickup MarshPastOpher.TrialHC:
    moki: Hammer OR Spear=1
    unsafe: free  # lure stomp
  pickup MarshPastOpher.TrialRightEX:
    moki: DoubleJump OR Bash OR Launch  # bash uses the enemy
    gorlek: SentryJump=1
    unsafe: Dash OR Sword OR Hammer OR Grenade=1  # Sword: pogo on enemy, Hammer: upswing to reach ledge

  conn MarshShrine: free
  conn MarshPastOpher.BowPath:
    moki, BreakWall=20:
      Bash, DoubleJump OR Dash OR Glide OR Grapple OR Launch
      Combat=Mantis+SneezeSlug, DoubleJump OR Dash OR Glide OR Grapple OR Launch
    gorlek, BreakWall=20:
      Bash, Sword OR Hammer
      Bash, Grenade=1
      Combat=Mantis+SneezeSlug, Sword OR Hammer
      Launch

anchor MarshShrine at -382, -4341:
  refill Full

  state MarshPastOpher.CombatShrineCompleted:
    moki: Regenerate, Damage=20, Combat=2xSkeeto+2xEnergyRefill+Mantis+4xSmallSkeeto+2xEnergyRefill+Mantis+Skeeto
    unsafe: Combat=2xSkeeto+2xEnergyRefill+Mantis+4xSmallSkeeto+2xEnergyRefill+Mantis+Skeeto

  pickup MarshPastOpher.CombatShrine:
    moki: MarshPastOpher.CombatShrineCompleted

anchor MarshPastOpher.BowPath at -494, -4294:  # checkpoint climbing up to Bow tree
  refill Checkpoint
  refill Health=1
  refill Energy=1:
    moki: BreakCrystal

  pickup MarshPastOpher.SwingPoleEX:
    moki:
      Damage=10, DoubleJump OR Dash OR Glide OR Launch
      Damage=10, Bash, Grenade=2
    gorlek:
      DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Launch  # it's notably harder to get without taking a hit. Up and/or Side combos with sword or hammer can make it to the horizontal branch from the launch pad.
      Bash, Grenade=1
    unsafe:
      Bash  # the mantis disappears if you die
      Damage=10, Grenade=1  # GrenadeJump onto the pole; may be possible without taking damage

  conn MarshPastOpher.BowApproach:
    moki: DoubleJump OR Launch
    gorlek:
      Dash
      Bash, Grenade=2
    unsafe:
      Sword OR Hammer OR Sentry=1
      Grenade=2, Damage=10
  conn MarshPastOpher.MillView:
    moki:
      DoubleJump OR Dash OR Glide OR Launch
      Bash, Grenade=2
    gorlek:
      Sword OR Hammer
      Bash, Grenade=1
    unsafe:
      Bash  # befriend the slug
      Grenade=1  # Running GrenadeJump
  conn MarshPastOpher.TrialArea:
    moki:
      BreakWall=20, DoubleJump OR Dash OR Glide OR Launch
      BreakWall=20, Bash, Grenade=1
    gorlek: BreakWall=20  # the one-way has 20 health as well, so there are no relevant shurikenbreak paths here

anchor MarshPastOpher.BowApproach at -490, -4245:  # On the right ledge above the scenic mill view
  refill Checkpoint
  refill Health=1

  pickup MarshPastOpher.SwingPoleEX:
    moki: Damage=10
    gorlek: free

  conn MarshPastOpher.BowPath: free
  conn MarshPastOpher.BowArea:
    moki:
      DoubleJump OR Dash OR Glide OR Launch
      Bash, Grenade=1
    gorlek: Sword OR Hammer OR Damage=10
  conn MarshPastOpher.MillView:
    moki: Bash, Grenade=1  # this is the only non-redundant connection that will ever exist.
  conn MarshPastOpher.PoolsPathEast:
    moki:
      Bow=4, DoubleJump, Dash, Bash, Glide  # autoaim doesn't catch the second target, 2 is needed minimum
      Bow=4, Bash, Launch  # autoaim doesn't catch the second target, 2 is needed minimum
    gorlek:
      Bow=2, Bash, Launch  # the moki path, but without safety energy
      Bow=2, DoubleJump, Bash, TripleJump OR Dash OR Glide
      Launch, DoubleJump OR Dash OR Glide  # For the last part reset your Launch on the wall above the lantern
    unsafe:
      Bow=2, Bash, DoubleJump, Sword OR Hammer
      Launch, Bash  # You can bash the lanterns without freeing them from the blob
      Dash, Regenerate, DoubleJump, TripleJump, SentryJump=1 OR Damage=20  # wavedash off health plant
      Dash, Regenerate, DoubleJump, Glide, SentryJump=1 OR Damage=40  # wavedash off health plant

anchor MarshPastOpher.BowArea at -443, -4236:  # Ledge to the left of the pit with bow tree.
  refill Energy=1:
    moki: BreakCrystal

  state MarshPastOpher.EyestoneDoor:
    moki: Keystone=2  # crosses where the water would usually be

  pickup MarshPastOpher.BowEC: free  # crosses where the water would usually be
  pickup MarshPastOpher.BowTree: free  # crosses where the water would usually be

  conn MarshPastOpher.UpperBowArea:
    moki:
      Combat=Skeeto, Bow=2, DoubleJump
      Launch
    gorlek:
      SentryJump=2 OR DoubleJump  # can kill the skeeto with your weapon if desired on the sentryjump path
      Combat=Skeeto, Bow=2, Dash OR Glide OR Sword OR Hammer
      Bash, Bow=2, Dash OR Glide OR Sword OR Hammer
      Bash, Grenade=2
    unsafe:
      Bash  # Repositioning the Skeeto
      Bow=2, Sticky  # maybe possible without Sticky
  conn WestHollow.Entrance:
    moki: MarshPastOpher.EyestoneDoor  # crosses where the water would usually be
  conn MarshPastOpher.BowApproach:
    moki:
      DoubleJump OR Dash OR Launch
      Combat=Skeeto, Bow=1
    gorlek: Bash OR Sword OR Damage=10
    unsafe: Glide OR Hammer

anchor MarshPastOpher.UpperBowArea at -437, -4211:  # Between the eyestones
  refill Checkpoint
  refill Energy=1:
    moki: BreakCrystal

  pickup MarshPastOpher.LeftEyestone:
    moki: Combat=Skeeto, Bow=1
    gorlek: Bow=1
  pickup MarshPastOpher.RightEyestone:
    moki: Combat=Skeeto, Bow=1
    gorlek: Bow=1

  conn MarshPastOpher.BowArea: free
  conn MarshPastOpher.BowApproach: free

# checkpoint at -383, -4230

anchor MarshPastOpher.PoolsPathEast at -662, -4241:  # On the wood sticking out of the ledge at the top left of the large room with Opher
  refill Checkpoint
  refill Health=1:
    moki: Combat=Mantis+Bat
    gorlek: free
  refill Energy=3:
    moki: BreakCrystal, Combat=Mantis+Bat
    gorlek: BreakCrystal

  pickup MarshPastOpher.CeilingEX:  # the squonkey doesn't reappear if you respawn on this checkpoint
    moki:
      Bash, DoubleJump, Dash
      Launch
    gorlek:
      Bash, DoubleJump
      Bash, Grenade=1, Dash OR Sword OR Hammer
      SwordSJump=1
      HammerSJump=1, DoubleJump OR Dash
    unsafe:
      Bash, Dash              # Pretty precise to do without damage
      Bash              # Repositioning the squonkey: squonkey respawns when u jump off to the east and back on the ledge

  conn MarshPastOpher.PoolsPathMiddle:  # the squonkey doesn't reappear if you respawn on this checkpoint
    moki: Bash, DoubleJump OR Launch
    gorlek:
      Bash, Dash  # the bat is weird
      Combat=Bat, Launch, DoubleJump OR Dash
    unsafe:
      Bash
      Combat=Bat, Launch  # About a 45° angle from under the second bat to avoid a damage boost
      DoubleJump, TripleJump, Sword  # Use Sword on bats to regain TripleJump. Jump at the tiny ledges of the branches. Pogo on Crab
  conn MarshPastOpher.MillView: free

anchor MarshPastOpher.PoolsPathMiddle at -709, -4181:  # Next to the breakable floor
  refill Checkpoint

  pickup MarshPastOpher.PoolsPathEC:
    moki:
      DoubleJump, Dash OR Glide
      Bash, DoubleJump OR Dash OR Glide OR Grenade=1
      Launch
    gorlek:
      DoubleJump, TripleJump OR Sword OR Hammer
      Dash, Glide OR Sword OR Hammer
      Bash
      Combat=SpinCrab, SentryJump=1

  conn MarshPastOpher.PoolsPathWest:  # the squonkey doesn't reappear if you respawn on this checkpoint
    moki: Bash, DoubleJump OR Launch
    gorlek:
      Bash, Dash OR Glide
      Bash, Sword, Damage=10
      ShurikenBreak=20, Bash, Sword
      ShurikenBreak=20, Bash, Damage=10, Hammer
      ShurikenBreak=20, DoubleJump, Damage=10, TripleJump OR Dash OR Glide OR Sword OR Hammer
      ShurikenBreak=20, DoubleJump, TripleJump, Dash, Glide OR Sword  # enough tools to allow multiple approaches
      ShurikenBreak=20, Launch, DoubleJump OR Dash OR Bash OR Glide OR Sword OR Hammer OR Damage=10
    unsafe:
      ShurikenBreak=20, Launch
      Hammer, Bash                    # Fairly precise air combos needed
      Hammer, Sword, Bash             # Fairly precise air combos needed
      Hammer, Launch                  # Launch at ceiling above water
      Hammer, Damage=70               # It's possible with 60dmg, but really precise
  conn MarshPastOpher.PoolsPathEast:
    moki: Bash
    gorlek:
      Glide, DoubleJump OR Dash OR Launch
      Damage=10  # more other paths would exist, but seem difficult to do damageless themselves
    unsafe: DoubleJump OR Dash OR Glide OR Launch

# checkpoint at -740, -4168

anchor MarshPastOpher.PoolsPathWest at -803, -4187:  # Right on top of MarshPastOpher.PoolsPathEX
  refill Checkpoint

  pickup MarshPastOpher.PoolsPathEX: free
  pickup PoolsApproach.MillPathHC:
    gorlek, ShurikenBreak=20:
      Water, Bash, DoubleJump, TripleJump
      Water, WaterDash, Damage=20, DoubleJump OR Dash OR Glide OR Sword OR Hammer  # Analog swimming can avoid the damage boost but its hard to do with keyboard swimming
      Water, Bash, Damage=20, DoubleJump
      Water, Launch
    unsafe, ShurikenBreak=20:
      Water, WaterDash
      Water, Bash, Damage=20, Sword
      Water, Bash
      Water, DoubleJump, TripleJump OR Sticky

  conn MarshPastOpher.PoolsPathMiddle:
    moki, BreakWall=20:
      DoubleJump, Bash, Dash OR Glide
      Bash, Grenade=1, Dash, Glide
      Launch, DoubleJump OR Dash OR Bash OR Glide
    gorlek:
      BreakWall=20:  # go above and open the shortcut
        DoubleJump, Bash, Sword OR Hammer OR TripleJump OR Damage=10
        Dash, Bash, Glide OR Sword OR Hammer OR Damage=10
        Sword, Bash, Damage=10
        SentryJump=1, Bash, Damage=10  # land in the spikes, bash the lantern then air combo with sword or hammer to reach the patform
        DoubleJump, TripleJump, Dash OR Glide OR Damage=10
        DoubleJump, TripleJump, SentryJump=1  # triple jump from the left wall + air combo with sword or hammer. sjump to reach the platform
        DoubleJump, Damage=10, Dash OR Glide OR Sword OR Hammer
        Dash, Damage=10, Sword OR Hammer
        SwordSJump=1, Damage=10
        Bash, Grenade=1, DoubleJump OR Dash OR Damage=10
        Launch  # Reset Launch by hitting the ceiling
      Glide, DoubleJump, Hammer OR Spear=1  # go below and break the floor
      Glide, Dash, Hammer OR Spear=1  # go below and break the floor
    unsafe:
      BreakWall=20, Damage=10, DoubleJump OR Sword OR Dash
      BreakWall=20, Damage=10, Glide, Hammer
      BreakWall=20, Damage=10, Bash
      BreakWall=20, Bash, Grenade=1  # bash grenade near the spikes, bash glide of the lantern
      SentryJump=1, Bash  # Hug the wall and the SentryJump, then horizontal slashes to the lantern; weapon breaks the wall
      HammerSJump=1, Damage=10 OR Water  # hammer breaks the wall, can avoid the damage boost but will land in water
  conn PoolsApproach.RightOfWheel:
    gorlek, ShurikenBreak=20:
      Water, Grapple, DoubleJump OR Dash OR Launch
      Water, Grapple, Damage=20, Glide OR Sword
      Water, Damage=20, DoubleJump, TripleJump, Dash OR Glide OR Sword OR Hammer
      Water, Launch, Damage=20
      Water, Launch, DoubleJump, Dash
      Water, Launch, DoubleJump, Sword OR Hammer
      Water, Launch, Dash, Sword OR Hammer
      Water, Grapple, WaterDash, Hammer, Damage=20
    unsafe, ShurikenBreak=20:
      Water, Launch
      Water, Grapple, Hammer OR Glide OR Sword

region MidnightBurrows:
  moki: Danger=25
  gorlek: free
  kii: free
  unsafe: free

anchor MidnightBurrows.Teleporter at -945, -4582:  # At the teleporter
  refill Full

  state NonGladesTeleporter: free

  conn Teleporters: free
  conn MidnightBurrows.BelowLupo:
    moki: Combat=SneezeSlug+Bat OR Bash OR Launch
    gorlek: DoubleJump OR Dash OR Damage=16
    kii: free
  conn MarshSpawn.BurrowsEntry:
    moki, MarshSpawn.BurrowsOpen:
      Launch
      Bash, DoubleJump, Dash OR Glide
    gorlek, MarshSpawn.BurrowsOpen:
      Bash, DoubleJump
      SentryJump=3, DoubleJump, Damage=15
    kii, MarshSpawn.BurrowsOpen:
      Bash, Dash OR Glide OR Sword OR Hammer OR Shuriken=3 OR Sentry=4  # Bait shots from the spider
      Bash, Grenade=1, Shuriken=1 OR Sentry=1 OR Flash=1  # bait shots from the spider, land where the mortar is, bait it, grenade, bash the mortar to reach your grenade
    unsafe, MarshSpawn.BurrowsOpen:
      # Bash, Grenade=1
      Bash  # using the projectiles efficiently

anchor MidnightBurrows.BelowLupo at -850, -4579:  # Past the enemies near the teleporter
  pickup MidnightBurrows.LeftKS:
    moki: DoubleJump OR Dash OR Glide OR Launch
    gorlek: Sword OR Hammer OR Damage=15
    kii: free  # teleport
  # lupo paths would be redundant with Center

  conn MidnightBurrows.Teleporter:
    moki: Combat=SneezeSlug+Bat OR Bash OR Launch
    gorlek: free
  conn MidnightBurrows.Central:
    moki:
      DoubleJump, Combat=SneezeSlug OR Bash
      Launch
    gorlek:
      DoubleJump OR Dash OR Sword OR Hammer
      Combat=SneezeSlug, Glide
    kii: Glide OR Bash OR Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=2 OR Damage=15  # Land on spikes to go into the lower left portal
    unsafe: free  # jump into the portal and wait until you get enough height. That's it.
      # Blaze=1
      # Grenade=1  # Grenade while in right Teleporter to get to the left ceiling

anchor MidnightBurrows.Central at -781, -4564:  # The ledge left of the big portal room
  refill Checkpoint

  state MidnightBurrows.Lever:  # paths that can't use the anchor because they only work without the lever already pulled
    kii: Damage=15, Blaze=1
    unsafe:
      Damage=15  # may need <60 fps?
      Shuriken=1, Sentry=1 OR Flash=1 OR Blaze=1 OR Spear=1  # extend corner boost with shuriken

  pickup MidnightBurrows.LupoMap:
    moki: SpiritLight=50, DoubleJump OR Dash OR Glide
    gorlek: SpiritLight=50
  pickup MidnightBurrows.DeflectorShard:  # check for redundancies with activating the lever
    moki:
      Launch
      MidnightBurrows.Lever, DoubleJump, Dash OR Glide
    gorlek, MidnightBurrows.Lever:  # The slug isn't here if you respawn from the checkpoint
      DoubleJump, TripleJump OR Sword OR Hammer
      Dash OR Glide
    kii, MidnightBurrows.Lever:
      DoubleJump OR Sword OR Hammer OR Shuriken=2 OR Sentry=2 OR Flash=2
      Damage=15, Spear=2 OR Blaze=2
    unsafe:
      # DoubleJump, Sentry=1, Damage=15
      # DoubleJump, Sentry=2
      DoubleJump
      Dash, Bash
      MidnightBurrows.Lever, Damage=15

  conn MidnightBurrows.BelowLupo: free
  conn MidnightBurrows.TabletRoom:
    moki:
      Bash, DoubleJump OR Dash OR Glide
      Launch
    gorlek: Bash OR SentryJump=2
    kii: DoubleJump, TripleJump, Damage=30 OR Sword  # with sword, pogo the mortar
    unsafe:
      DoubleJump, Damage=15, TripleJump OR Sword
      Grenade=1
  conn MidnightBurrows.LeverRoom:  # keep in mind that these paths have to work after the lever has been pulled
    moki:
      Glide
      DoubleJump, Dash
      Bash, DoubleJump OR Dash
      Launch, DoubleJump OR Dash OR Bash
    gorlek:
      DoubleJump, TripleJump OR Sword OR Hammer
      Dash, Sword OR Hammer
      Bash, Sword OR Hammer
      Damage=15, DoubleJump OR Dash OR Bash OR Sword OR Hammer
      Launch
    kii:
      Dash OR Sword OR Sentry=3 OR Damage=30  # Reset dash with ceiling
      DoubleJump, Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=2
      Bash, Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=1 OR Spear=1
      Hammer, Shuriken=1 OR Sentry=1 OR Flash=1
      Damage=15, Bash OR Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=2
    unsafe: Bash  # Bash the lantern once to the right then bash it again
  conn MidnightBurrows.BelowUpperKS:  # so far all paths not using MidnightBurrows.Lever would be redundant
    moki: MidnightBurrows.Lever, Launch  # paths coming from the right side are on that anchor
    gorlek: MidnightBurrows.Lever, SentryJump=2, DoubleJump OR Dash OR Glide
    kii, MidnightBurrows.Lever:
      DoubleJump, TripleJump, Damage=15
      DoubleJump, Bash  # use the slime then bait the spider
    unsafe, MidnightBurrows.Lever:
      SentryJump=2
      SentryJump=1, DoubleJump, Damage=15
      DoubleJump, Sword OR Damage=15
      Bash
  conn MidnightBurrows.East:  # check for redundancies with activating the lever
    moki:
      Launch
      MidnightBurrows.Lever, DoubleJump OR Dash OR Glide
    gorlek, MidnightBurrows.Lever:
      Sword
      Bash, Grenade=1  # bash the lantern to reach the lever, grenade bash from there
      HammerSJump=1
    kii, MidnightBurrows.Lever:  # you can jump out of the portal above the lever, but it's a bit uncooperative, so it's not considered in kii
      Hammer OR Shuriken=2 OR Sentry=3
      Bash, Shuriken=1 OR Sentry=2
    unsafe: MidnightBurrows.Lever, Bash OR Sentry=1 OR Blaze=1 OR Flash=1 OR Shuriken=1 OR Spear=1

anchor MidnightBurrows.TabletRoom at -824, -4531:  # Before the four keystone door
  refill Checkpoint
  refill Health=1

  state MidnightBurrows.KeystoneDoor:
    moki: Keystone=4

  quest MidnightBurrows.TabletQI:
    moki: MidnightBurrows.KeystoneDoor

  conn MidnightBurrows.Central: free

# checkpoint at -707, -4588
# checkpoint at -698, -4566

anchor MidnightBurrows.LeverRoom at -685, -4616:  # At the lever lifting the portals
  refill Checkpoint

  state MidnightBurrows.Lever: free

  pickup MidnightBurrows.LowerKS:
    moki:
      Glide OR Launch
      Bash, Grenade=1
    gorlek:
      DoubleJump, TripleJump OR Dash OR Sword OR Hammer
      Dash, Sword OR Hammer
      Damage=15, DoubleJump OR Dash OR Sword OR Hammer  # boost on the brambles below the keystone
      SentryJump=1  # use the weapon for movement as well
    kii:
      Dash OR Sentry=3
      Damage=15  # boost on the brambles below the keystone
      DoubleJump, Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=1 OR Spear=1
      Hammer, Shuriken=1 OR Sentry=1 OR Flash=1
    unsafe: Sword

anchor MidnightBurrows.East at -687, -4553:  # Behind the timed-puzzle door
  refill Checkpoint

  conn MidnightBurrows.DenConnection:
    moki: Combat=SneezeSlug+Tentacle OR Bash OR Launch
    gorlek: Dash OR Damage=10
    kii: free

anchor MidnightBurrows.DenConnection at -597, -4549:  # At the wall connecting to Den
  refill Checkpoint

  state MidnightBurrows.HowlsDenShortcut:
    moki: BreakWall=10

  pickup MidnightBurrows.RightKS: free

  conn MidnightBurrows.PortalCorridor:
    moki: Combat=WeakSlug OR Bash OR Launch
    kii: DoubleJump
  conn HowlsDen.DoubleJumpTreeArea:
    moki: MidnightBurrows.HowlsDenShortcut

anchor MidnightBurrows.PortalCorridor at -632, -4525:  # To the right of where floor and ceiling are all portals
  refill Checkpoint

  conn MidnightBurrows.DenConnection: free
  conn MidnightBurrows.BelowUpperKS:
    moki:
      DoubleJump, Glide
      DoubleJump, Dash, Damage=15
      Launch, Glide, Damage=15  # Since patch 3, Launching through a portal gives you a major boost, which in this case quickly ends in spikes
    gorlek:
      Glide
      DoubleJump, TripleJump OR Dash OR Sword OR Hammer
      Dash, Sword OR Hammer
      Launch, Damage=15, DoubleJump OR Dash OR Sword OR Hammer
    kii:
      DoubleJump, Shuriken=1 OR Sentry=1 OR Flash=1 OR Damage=15
      Dash, Shuriken=4 OR Sentry=4 OR Damage=15  # use your weapon to slow you down to make it easier to avoid the dboost
      Damage=15, Sword OR Hammer OR Sentry=5
      Damage=30, Sentry=3 OR Blaze=4
      Damage=45, Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=2 OR Spear=2
      Damage=60
    unsafe: free  # :eyes:
      # Dash
      # Blaze=5, Damage=15
      # Spear=1, Damage=45
      # Bash, Damage=45  # Bash the slime

anchor MidnightBurrows.BelowUpperKS at -724, -4524:  # Just below the upper keystone
  pickup MidnightBurrows.UpperKS:
    moki: Combat=Bat OR Bash
    gorlek: Dash OR Launch
    kii: free

  conn MidnightBurrows.Central:
    moki: Combat=Bat OR Bash
    gorlek: Dash OR Launch
    kii: free
  conn MidnightBurrows.PortalCorridor:  # check for redundancies with Central -> Lever
    kii:
      Damage=15, Blaze=6
      Damage=45, Spear=4
      Damage=60, Flash=2 OR Blaze=4
      Damage=90, Flash=1 OR Blaze=1 OR Spear=1
      Damage=150

region WestHollow:
  moki: Danger=20
  gorlek: free
  kii: free
  unsafe: free

anchor WestHollow.Entrance at -303, -4238:  # At Twillen
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  state WestHollow.UpperDrainLeverPulled:  # Lever that drains the first section of the hollow
    moki:
      Combat=2xSlug+BombSlug, Bow=3, DoubleJump OR Dash  # the camera only reliably moves to the tongues if you can kill the slugs
      Bash, Combat=BombSlug, Bow=1  # bashing up with the slug
      Bash, Combat=BombSlug, DoubleJump, Dash OR Glide  # bashing up with the slug
      Combat=BombSlug, DoubleJump, Dash, Glide
      Launch
    gorlek:
      Bow=2, DoubleJump OR Dash OR Glide OR Sword  # deal with the weird camera
      Bow=3, Damage=10  # deal with the weird camera
      Bash, Bow=1 OR DoubleJump OR Dash OR Glide OR Sword  # bait the bombslug
      DoubleJump, Sword  # Pogo the slime to get to the upper part or go the casual way using Sword slashes
      DoubleJump, TripleJump OR Dash
      DoubleJump, Glide, Damage=10
      SwordSJump=1
      HammerSJump=1, Bow=1 OR DoubleJump OR Dash OR Glide
    unsafe:
      HammerSJump=1
  state WestHollow.PurpleDoorOpen:
    moki, WestHollow.UpperDrainLeverPulled:
      Bow=1, DoubleJump, Dash
      Bow=1, Launch
      Bow=1, Bash, Grenade=1
    gorlek, WestHollow.UpperDrainLeverPulled:
      Bow=1, SentryJump=1, DoubleJump
      Bow=1, DoubleJump, TripleJump
      Bow=1, Glide, DoubleJump OR Dash
    unsafe, WestHollow.UpperDrainLeverPulled:
      Bow=1, DoubleJump, Sword OR Hammer

  pickup WestHollow.CrusherHC: free

  conn TwillenShop: free
  conn MarshPastOpher.BowArea:
    moki, MarshPastOpher.EyestoneDoor:
      DoubleJump OR Launch
      Bash, Grenade=1
    gorlek, MarshPastOpher.EyestoneDoor:
      Dash OR Glide OR Sword OR Hammer OR Damage=10  # Go through the lower part
    unsafe: MarshPastOpher.EyestoneDoor  # (free with tight platforming)
      # Bash  # putting this here for now
  conn WestHollow.InFrontPurpleDoor:
    moki:
      Combat=2xSlug, Bow=1, DoubleJump OR Dash  # the camera only reliably moves to the tongue if you can kill the slug
      DoubleJump, Dash OR Glide
      Bash, Combat=BombSlug OR DoubleJump OR Dash OR Glide  # bashing up with the slug
      Launch
    gorlek:
      Bow=1, DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Damage=10  # deal with the camera
      DoubleJump, TripleJump OR Sword OR Hammer
      SentryJump=1  # Go up to the moki, then poles and then jump down
      Bash  # bash the slime to get up
    unsafe:
      Dash, Sword  # Easier with upslash
      Hammer, DoubleJump OR Dash OR Glide  # use upslash
  conn WestHollow.HollowDrainMiddle:
    moki: WestHollow.UpperDrainLeverPulled

anchor WestHollow.InFrontPurpleDoor at -181, -4240:  # In front of the purple door, before the TP
  state WestHollow.PurpleDoorOpen:
    unsafe: Bow=1  # Drop shot
  state WestHollow.UpperDrainLeverPulled:  # Lever that drains the first section of the hollow
    moki:
      Combat=Slug, Bow=3, DoubleJump OR Dash  # the camera only reliably moves to the tongue if you can kill the slug
      Combat=BombSlug, DoubleJump, Dash, Glide
      Launch
    gorlek:
      Bow=2
      DoubleJump, Dash
      Combat=BombSlug, DoubleJump, TripleJump
      Combat=BombSlug, DoubleJump, Damage=10, Glide OR Sword OR Hammer
      SentryJump=1, DoubleJump
      Bash, Grenade=1, DoubleJump
    unsafe:
      Bash, Grenade=1  # Bash the slime to the platform, throw Grenade, bash from slime then Grenade
      SentryJump=1
      Dash, Sword OR Hammer  # Upslash between dashes to gain a bit more hight

  conn WestHollow.Entrance:
    moki:
      Combat=2xSlug, WestHollow.UpperDrainLeverPulled OR DoubleJump OR Dash OR Glide OR Bow=1
      Bash, WestHollow.UpperDrainLeverPulled OR DoubleJump OR Dash OR Glide OR Bow=1 OR Grenade=1
      Launch
    gorlek: WestHollow.UpperDrainLeverPulled OR Bow=1 OR DoubleJump OR Dash OR Glide OR Sword OR Damage=20
    unsafe: Sentry=2 OR Hammer OR Bash
  conn WestHollow.HollowDrainMiddle:
    moki: WestHollow.UpperDrainLeverPulled
  conn EastHollow.Teleporter:
    moki: WestHollow.PurpleDoorOpen

anchor WestHollow.HollowDrainMiddle at -197, -4275:  # At the crystal below the purple eye
  refill Checkpoint
  refill Energy=3:
    moki: WestHollow.UpperDrainLeverPulled, BreakCrystal
  refill Energy=1:  # no matter which direction you come to or go from here, you should be able to grab this crystal without having to go back
    moki: WestHollow.FullyDrained, BreakCrystal

  # this anchor doesn't assume drained water because that should make it usable for weird dirty water swim paths
  pickup WestHollow.HiddenEC:
    moki: WestHollow.FullyDrained, BreakWall=10

  conn WestHollow.RockPuzzle:
    moki, WestHollow.UpperDrainLeverPulled:
      Bow=2, DoubleJump OR Dash
      DoubleJump, Dash
      Glide OR Launch
      # fully drained paths seem kind of irrelevant?
    gorlek, WestHollow.UpperDrainLeverPulled:
      Bow=2, Sword OR Hammer
      DoubleJump, TripleJump OR Sword OR Hammer
      Dash, Sword OR Hammer
      Damage=20  # dboost on the water if it's there and on the spikes of not
    unsafe, WestHollow.UpperDrainLeverPulled:
      Sword OR Hammer
      DoubleJump  # Jump from the ledge left to the spikes
  conn WestHollow.HollowDrainLower:
    moki: WestHollow.FullyDrained
  conn WestHollow.Entrance:
    moki, WestHollow.UpperDrainLeverPulled:
      DoubleJump OR Dash OR Glide OR Launch
      Bash, Grenade=1
    gorlek, WestHollow.UpperDrainLeverPulled:
      Sword OR Hammer  # Hammer is a bit particular; you can use upslash and horizontal slashes instead

anchor WestHollow.RockPuzzle at -249, -4275:  # At the right ledge of the rock puzzle room
  refill Checkpoint
  refill Health=1
  refill Energy=3:
    moki: BreakCrystal, DoubleJump OR Dash OR Bash OR Glide OR Launch
    gorlek: BreakCrystal

  state WestHollow.RockPuzzleSolved:  # You can get the puzzle into some weird constellations, but teleporting out works in the worst cases
    moki, WestHollow.UpperDrainLeverPulled:
      Combat=Skeeto, Bow=4, DoubleJump OR Dash OR Glide
      Bow=4, Bash OR Launch
    gorlek, WestHollow.UpperDrainLeverPulled:
      Bow=1, SentryJump=1 OR Launch  # Get up to the rock and push it to use only one Bow shot
      Bow=1, Bash, Grenade=1  # Get up to the rock and push it to use only one Bow shot
      Combat=Skeeto, Bow=6  # Stand to the left of energy crystal, look up and aim for the target, minimum 4 shots needed

  pickup WestHollow.RockPuzzleEX:
    moki: WestHollow.FullyDrained
    unsafe: WestHollow.UpperDrainLeverPulled, Damage=100  # should probably be 40 damage considering the checkpoint?
  pickup WestHollow.HiddenEC:
    moki: WestHollow.FullyDrained, BreakWall=10

  conn WestHollow.FarLeftRoom:
    moki, WestHollow.UpperDrainLeverPulled, WestHollow.RockPuzzleSolved:
      Combat=Skeeto+Slug, Bow=1, DoubleJump OR Dash
      Bash OR Launch  # bashing off the skeeto
    gorlek, WestHollow.UpperDrainLeverPulled, WestHollow.RockPuzzleSolved:
      Combat=Skeeto+Slug, Bow=1, Glide OR Sword
      Combat=Skeeto, SentryJump=1
      DoubleJump, Combat=Slug OR Damage=10  # Jump to the left wall and wrap around to the top
    unsafe, WestHollow.UpperDrainLeverPulled, WestHollow.RockPuzzleSolved:
      Sword OR Hammer  # Upslash and swing left, Sword can also Pogo the skeeto
  conn WestHollow.HollowDrainMiddle:
    moki:
      WestHollow.UpperDrainLeverPulled, Launch, DoubleJump OR Dash OR Glide OR Bow=1
      WestHollow.FullyDrained, Bow=3, DoubleJump  # one for the slime, two for the tongues
      WestHollow.FullyDrained, Bash, Grenade=1
      WestHollow.FullyDrained, Launch
    gorlek:
      WestHollow.UpperDrainLeverPulled, DoubleJump, TripleJump  # Jump to the pole, then wrap around to the eye and jump to the ground
      WestHollow.UpperDrainLeverPulled, Launch
      WestHollow.FullyDrained, Bow=1, DoubleJump  # wrap around instead of using the other tongue
      WestHollow.FullyDrained, SentryJump=1  # After SentryJump you need horizontal slashes
      WestHollow.UpperDrainLeverPulled, WaterDash, Damage=20, DoubleJump, Bow=1  # use the bow path if the water is gone
      WestHollow.UpperDrainLeverPulled, WaterDash, Damage=20, Dash, Bash, Grenade=1  # use the bashnade path if the water is gone
      WestHollow.UpperDrainLeverPulled, WaterDash, Damage=20, Dash, SentryJump=1  # use the sjump path if the water is gone
    unsafe:
      WestHollow.UpperDrainLeverPulled, Dash, DoubleJump
      WestHollow.UpperDrainLeverPulled, Sword  # pogo on the energy crystal
  conn WestHollow.HollowDrainLower:
    moki: WestHollow.FullyDrained

anchor WestHollow.FarLeftRoom at -357, -4284:  # ledge below and to the right of second drain lever
  refill Energy=3:  # fast respawning crystal
    moki: BreakCrystal
  # energy crystal below not considered because it doesn't seem relevant for anything

  state WestHollow.FullyDrained:
    moki, WestHollow.UpperDrainLeverPulled:
      Bow=2, DoubleJump OR Dash OR Glide
      Launch
    gorlek, WestHollow.UpperDrainLeverPulled:
      Bow=1, SentryJump=1
      Bow=1, DoubleJump, Sword OR Hammer  # DoubleJump and upslash to get on the wall to the right
      Bow=1, Bash, Grenade=1
      Bow=2, Sword OR Hammer
      DoubleJump, TripleJump  # Jump off the eye to the left
      DoubleJump, Damage=10, Dash  # You can jump on the top of the eye on the left and use BashGrenade
      Damage=20, WaterDash, DoubleJump OR Dash OR Glide OR Sword OR Hammer  # these paths aren't meaningful anymore if the water is gone, so this does not softlock
    unsafe, WestHollow.UpperDrainLeverPulled:
      DoubleJump, Dash
      DoubleJump, Bash, Grenade=1         # BashGrenade and dj to the right wall
      # DoubleJump, Bash, Grenade=2       # BashGrenade on to the eye and then BashGrenade up
      # DoubleJump, Dash, SentryJump=1    # SentryJump on the eye

  pickup WestHollow.FarLeftEX:
    moki, WestHollow.FullyDrained:
      Bash OR Launch
      Bow=1, DoubleJump, Dash
    gorlek, WestHollow.FullyDrained:
      DoubleJump, TripleJump OR Dash OR Glide OR Sword OR Hammer OR Damage=10
      Bow=1, Dash OR DoubleJump  # there are more options, this was the most lenient
      SentryJump=1
    unsafe:
      WestHollow.FullyDrained:
        Bow=1, Glide OR Sword
        Sword  # Pogo the shot of the slug
  # backwards connection blocked by the door

# checkpoint at -356, -4306

anchor WestHollow.HollowDrainLower at -216, -4329:  # Next to the jumppad left of Lupo
  refill Checkpoint

  pickup WestHollow.QuickshotShard:
    moki, WestHollow.FullyDrained:  # middle water state can softlock this, so you have to be able to fully lower the water. DoubleJump is for lenience on the bowshot
      DoubleJump, Bow=1, Dash, Combat=2xSkeeto OR Bash
      DoubleJump, Bow=1, Launch
    gorlek, WestHollow.FullyDrained:  # middle water state can softlock this, so you have to be able to fully lower the water.
      Bow=1, Dash OR Launch
      Bow=1, Water, WaterDash  # opted against writing the equivalent dboost path because it would be more obscure
    unsafe, WestHollow.FullyDrained:
      Bow=1  # Lower each crusher from above the previous one
  pickup WestHollow.SwimEC:
    moki: Water
  pickup WestHollow.LupoMap:
    moki, SpiritLight=150:  # All the path options here include a way to get past the enemy
      DoubleJump, Dash
      Bash  # bash off the slug
      Launch
    gorlek, SpiritLight=150:  # All the path options here include a way to get past the enemy
      DoubleJump, TripleJump OR Sword OR Hammer  # all have alternate paths from the right or from below
      SentryJump=1
    unsafe: SpiritLight=150, Sword  # Pogo the slug
  pickup WestHollow.BelowLupoEX:
    moki:  # All the path options here include a way to get past the enemies
      DoubleJump, Dash
      Launch
    gorlek:  # All the path options here include a way to get past the enemies
      DoubleJump, TripleJump OR Sword OR Hammer OR Damage=10
    unsafe:
      DoubleJump
      Damage=10, SwordSJump=1
      Dash, Sword OR Hammer
      DoubleJump, Sword  # swordjump
      Hammer    # upswing to get onto the right side of the spikes (you can touch them)
      Dash      # max jump without hitting the spike hitbox, dash to the small ledge

  conn WestHollow.TrialApproach:  # middle water state can softlock this, so you have to be able to fully lower the water.
    moki, WestHollow.FullyDrained:
      Combat=Slug+2xSkeeto, DoubleJump, Dash OR Glide
      Combat=Slug+2xSkeeto+Hornbug, Dash, Glide
      Bash, Damage=10, DoubleJump OR Dash OR Glide  # bash off the skeetos
      Water, WaterDash, Combat=Slug, Combat=Hornbug OR DoubleJump
      Water, WaterDash, Bash
      Launch
    gorlek, WestHollow.FullyDrained:
      Combat=Slug+2xSkeeto, DoubleJump OR Dash OR Glide OR Sword
      Bash  # bash off the skeetos
      SentryJump=1
  conn WestHollow.DashApproach:
    moki: Combat=SneezeSlug OR DoubleJump OR Bash OR Launch
    unsafe: free
      # Dash  # putting it here for now
  # no backwards connection through the water

anchor WestHollow.TrialApproach at -155, -4298:  # after getting past the beetle, at the bottom of the shaft next to trial start
  refill Checkpoint

  conn WestHollow.TrialStart:
    moki:
      Combat=Slug, DoubleJump, Dash OR Glide
      DoubleJump, Bash  # bash off the slug
      Launch
    gorlek:
      Combat=Slug, DoubleJump OR Dash
      Bash, DoubleJump OR Dash
      Damage=10, Sword OR Hammer  # Sword or hammer solve combat requirements and easier movement
      Damage=10, Glide, Combat=Slug OR Bash
    unsafe:
      Sword OR Hammer OR Bash  # Sword or hammer movement to avoid damage; Bash using the slug
      Damage=10, Combat=Slug
  conn WestHollow.HollowDrainLower:  # middle water state can softlock this, so you have to be able to fully lower the water.
    moki: WestHollow.FullyDrained

anchor WestHollow.TrialStart at -120, -4260:  # At the Spirit Trial start
  refill Checkpoint

  pickup WestHollow.TrialHC: free
  pickup WestHollow.SpiritTrial:  # middle water state can softlock this, so you have to be able to fully lower the water.
    moki: WestHollow.TrialActivation, WestHollow.FullyDrained, DoubleJump, Dash
    gorlek: WestHollow.TrialActivation, WestHollow.FullyDrained, Dash

  conn WestHollow.TrialApproach: free

# checkpoint at -124, -4377

anchor WestHollow.DashApproach at -111, -4429:  # To the left of the lever door
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  state WestHollow.TrialActivation:  # Since you have to reach this place again in a race to get an advantage, only paths possible during a trial are meaningful
    moki: DoubleJump OR Dash
    gorlek: Glide
  state WestHollow.DoorLever:  # The door blocking Dash area
    moki:
      Combat=Skeeto+Mantis+2xLizard+Hornbug, DoubleJump OR Dash
      Combat=Skeeto+Mantis+2xLizard+Hornbug, Bash, Grenade=1
      Bash, DoubleJump OR Dash
      Launch
    gorlek:
      DoubleJump OR Dash OR Bash
      Combat=Skeeto+2xLizard+Hornbug, Glide OR Sword OR HammerSJump=1
    unsafe: Hammer

  conn WestHollow.HollowDrainLower:
    moki:
      Combat=Slug, DoubleJump, Dash
      Bash, Grenade=2, DoubleJump OR Dash
      Launch
    gorlek:
      SentryJump=3  # Possible with 2 SentryJumps
      Combat=Slug, DoubleJump, TripleJump OR Glide OR Sword OR Hammer  # Take the vanilla path up, but use Sword or Hammer slashes as a substitute to Dash/DoubleJump
      Bash, Grenade=2, Damage=10, Glide OR Sword
    unsafe:
      Dash, Sword OR Hammer           # Take the vanilla path up, but use Sword or Hammer slashes as a substitute to Dash/DoubleJump
      Dash                            # avoiding slugs is hard and might take patience
      DoubleJump, Damage=10 OR Glide  # Jump into the first spike wall or glide over it and then avoid the slugs
  conn WestHollow.DashArea:
    moki: WestHollow.DoorLever

anchor WestHollow.DashArea at -88, -4423:  # To the right of the lever door
  refill Checkpoint

  pickup WestHollow.DashTree: free
  pickup WestHollow.CrusherEX:
    moki: Dash
    gorlek: Launch, Burrow OR WaterDash  # hmmmmm
    unsafe:
        Burrow OR WaterDash
        # Bash, Grenade=1, Burrow OR WaterDash  # Bash to the platform
  pickup WestHollow.DashRightEX:
    moki:
      DoubleJump, Dash
      Launch
    gorlek:
      Dash, Bash, Grenade=2, Glide OR Sword OR Hammer OR Damage=10  # around the right
    unsafe:
      WestHollow.DoorLever, DoubleJump, TripleJump, Sword  # Lure and pogo the jumper / swordjumping through the path above the tree
      WestHollow.DoorLever, DoubleJump, TripleJump, Bash, Damage=10 OR Hammer  # Lure the mantis
      DoubleJump, TripleJump, SentryJump=1
      DoubleJump, TripleJump, Bash, Grenade=1, Damage=10 OR Hammer  # There are two ledges above the tree, stand on the right one, throw Grenade from there
      Damage=10, SentryJump=2, Dash
      SentryJump=2, DoubleJump, Damage=10  # Go up with the first SentryJump, then jump into spikes, SentryJump over and continue
      DoubleJump, Damage=10 OR TripleJump  # lower the crusher from above the previous one
      Bash, Grenade=1           # using the enemies to bash onto the hanging log
  pickup WestHollow.AboveDashEX:
    moki:  # there's some funny Bashgrenade paths here, but they're not moki-safe
      DoubleJump, Dash
      Launch
    gorlek:
      DoubleJump, Bash, Grenade=1  # There are two ledges above the tree, stand on the right one, throw Grenade from there
      SentryJump=1
      Dash, Bash, Grenade=1, Glide OR Sword OR Hammer OR Damage=10  # around the right
    unsafe:
      Dash, Sword OR Hammer  # Take the path right from the Dash tree
      WestHollow.DoorLever, DoubleJump, Sword  # Lure and pogo the mantis
      WestHollow.DoorLever, DoubleJump, TripleJump, Sword  # swordjump from the doorframe
      WestHollow.DoorLever, Bash  # Lure the mantis
      DoubleJump, Damage=10 OR TripleJump  # lower the crusher from above the previous one
      Bash, Grenade=1  # There are two ledges above the tree, stand on the right one, throw Grenade from there
      # Bash  # Bash the slug twice

  conn WestHollow.DashApproach:
    moki: WestHollow.DoorLever

# checkpoint at -21, -4411

region EastHollow:
  moki: Danger=20
  gorlek: free
  kii: free
  unsafe: free

anchor EastHollow.Teleporter at -150, -4238:  # the teleporter
  refill Full

  state EastHollow.VoiceDoor:
    moki: EastHollow.ForestsVoice
  state NonGladesTeleporter: free

  pickup EastHollow.HornBeetleFightEX:
    moki, EastHollow.BeetleDefeated:
      DoubleJump, Dash, Bash
      Bash, Grenade=1, DoubleJump OR Dash OR Glide  # the nearby skeeto loses interest in you if you go to the ledge below this pickup
      Launch
    gorlek:
      DoubleJump, Bash, TripleJump OR Dash
      Bash, Grenade=1, DoubleJump OR Dash OR Glide  # the nearby skeeto loses interest in you if you go to the ledge below this pickup
      Launch
      SentryJump=1, DoubleJump, TripleJump
      EastHollow.BeetleDefeated, DoubleJump, TripleJump, Dash OR Glide OR Sword OR Hammer  # Dont make the third jump too quick if you have just Hammer
    kii:
      DoubleJump, TripleJump, Sword  # Pogo
      Bash  # baiting the skeeto can be annoying
      EastHollow.BeetleDefeated, DoubleJump, TripleJump, Spear=1 OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
    unsafe:
      DoubleJump, Sword  # Pogo + upslash
      Hammer, DoubleJump                 # HammerJump
      DoubleJump, Sentry=3 OR Grenade=2  # Use Sentry hops to boost the height or GrenadeJumps
      EastHollow.BeetleDefeated, DoubleJump, Dash, Spear=2  # extend your jump momentum with spear
      EastHollow.BeetleDefeated, DoubleJump, Sentry=4  # Djump+3 sentries from the vine, ceiling jump + sentry to access to the pickup

  conn Teleporters: free
  conn BeetleFight: free
  conn EastHollow.AfterBeetleFight:  # the enemies in the arena only spawn if you have Bash, which allows you to avoid them
    moki: EastHollow.BeetleDefeated, DoubleJump OR Bash OR Launch
    gorlek:
      EastHollow.BeetleDefeated OR Launch
      Bash, DoubleJump OR Dash OR Glide
      SentryJump=1, DoubleJump OR Dash OR Glide  # Go down to the pit, do SentryJump and the use Sword or Hammer to get to the rope
    kii:
      Bash  # need to bait the skeeto all the way on the right which can be annoying
    unsafe:
      Hammer, DoubleJump                         # HammerJump
      # WaveDash, DoubleJump                     # wavedash off the teleporter
  conn EastHollow.MapMoki:
    moki, EastHollow.BeetleDefeated, EastHollow.VoiceDoor:
      Bash, DoubleJump OR Dash OR Glide
      Launch
    gorlek, EastHollow.VoiceDoor:
      Bash, DoubleJump OR Dash OR Glide OR Sword OR Hammer
      Launch
    kii, EastHollow.VoiceDoor:
      Bash
      DoubleJump, TripleJump, Sword  # Pogo
    unsafe, EastHollow.VoiceDoor:
      DoubleJump, Sword  # Pogo
      Hammer, DoubleJump  # HammerJump
  conn WestHollow.InFrontPurpleDoor:
    moki: WestHollow.PurpleDoorOpen

anchor BeetleFight at -81, -4243:
  refill Full

  state EastHollow.BeetleDefeated:
    moki: Boss=250, Regenerate, Damage=35, Dash OR Launch  # Kinda tight on assumed damage, but that's literally what the base game throws you at. It isn't too difficult to avoid the beetle's attacks without Dash, but this is what the base game taught.
    gorlek: Boss=250, Regenerate, Damage=35, DoubleJump
    unsafe: Boss=250

anchor EastHollow.MapMoki at -106, -4221:  # after crossing the voicelocked door above beetle fight
  refill Checkpoint

  quest EastHollow.HandToHandMap: free

  pickup EastHollow.GladesApproachOre:
    moki: Bash, DoubleJump OR Dash OR Glide OR Launch
    gorlek: Bash
    kii:
      Deflector, Sword, Launch
      Deflector, Sword, DoubleJump, TripleJump OR Hammer OR Spear=1 OR Damage=10  # from the right wall or take a dboost in the left spieks
    unsafe:
      Deflector, Hammer, Launch OR DoubleJump

  conn EastHollow.OutsideGlades:
    moki:
      DoubleJump, Bash
      Launch
    gorlek:
      Bash, Grenade=1, Dash
      Bash, SentryJump=1, Dash
      Bash, Damage=10
    kii:
      DoubleJump, TripleJump OR Spear=2 OR Damage=20
      DoubleJump, Damage=10, Hammer OR Spear=1  # either take a dboost to reach the first pole or climb from the right wall and take a dboost to refresh hammer's up slash
      Bash, Dash OR Glide OR Sword OR Hammer OR Shuriken=1 OR Blaze=3 OR Flash=1 OR Sentry=1
    unsafe:
      Bash, Grenade=1  # land near the second pole, throw a grenade, jump on the pole and immediatly jump to the grenade. Avoiding spikes damage is a bit hard.
      Grenade=5, Damage=10, EastHollow.BeetleDefeated  # Grenade Redirect and Grenade Jumps
      DoubleJump, Hammer, Deflector  # break the wall to GladesApproachOre so you can refresh your upslash without taking a dboost
      DoubleJump, Damage=10, Sentry=1
      DoubleJump, Sword, Damage=10  # climb the left wall, pogo the mortar
  conn EastHollow.Teleporter:
    moki: EastHollow.VoiceDoor, DoubleJump OR Dash OR Glide OR Bash OR Launch
    gorlek: EastHollow.VoiceDoor

anchor EastHollow.OutsideGlades at -152, -4164:  # Outside Grom's Wall
  state GladesTown.GromsWall:
    moki: Bash
    unsafe:
      Deflector, Sword OR Hammer  # Probably too precise for kii
      Grenade=1 OR Sentry=1

  conn GladesTown.Teleporter:
    moki: GladesTown.GromsWall
  conn EastHollow.MapMoki: free

anchor EastHollow.AfterBeetleFight at -28, -4233:  # At the breakable floor to Bash tree
  refill Checkpoint

  state EastHollow.DepthsLever:
    moki: Bash, DoubleJump OR Dash OR Glide OR Launch  # just Bash is treacherous
    gorlek: Bash
    kii: Deflector, Sword OR Hammer
    unsafe:
      Combat=SneezeSlug, Sentry=1 OR Grenade=1  # grenade/sentry redirect
      Launch  # launch at touch the breakable ceiling when the slug shoots so it shoots its pojectile at the ceiling
      Hammer, DoubleJump OR Dash  # Hammer onto the jumppad when the slug is shooting. DJ or Dash to stay at the ceiling longer
  state EastHollow.VoiceDoor:
    moki: EastHollow.ForestsVoice

  pickup EastHollow.SpikeLanternEX:
    moki: Bash, DoubleJump OR Launch  # there's a couple small awkward things adding up if you do this without Double Jump
    gorlek:
      Bash, Grenade=1 OR SentryJump=1
      EastHollow.BeetleDefeated, Bash, Dash OR Glide OR Sword
      SentryJump=1, DoubleJump, Damage=10, TripleJump OR Dash OR Glide OR Sword
    kii:
      Launch  # @validator not sure why it's not in gorlek
      DoubleJump, TripleJump, Dash
      Bash  # Go to the right to make the mantis spawn if it's not here
    unsafe:
      DoubleJump, SentryJump=1 OR Dash
  pickup EastHollow.SecretRoofEX:
    moki:
      Bash OR Launch
      Grapple, DoubleJump, Dash OR Glide
    gorlek:
      Grapple, DoubleJump, TripleJump OR Sword OR Hammer
      Grapple, Dash
      Grapple, SentryJump=1  # use the weapon to scare the mortar away
      SentryJump=1, DoubleJump, TripleJump
      SentryJump=2
    kii:
      Grapple, DoubleJump
      Grapple, Hammer, Glide OR Shuriken=1 OR Flash=1 OR Sentry=1
      Grapple, Glide, Shuriken=1 OR Flash=1 OR Sentry=1
      DoubleJump, TripleJump
    unsafe:
      Grapple, Shuriken=2
      Hammer, DoubleJump  # HammerJump
      DoubleJump, SentryJump=1
  pickup EastHollow.MortarEX:
    moki:
      Bash, DoubleJump OR Dash OR Glide
      Launch
    gorlek: Bash
    kii:
      DoubleJump, TripleJump, Dash, Sword OR Hammer OR Spear=1 OR Damage=10  # refresh dash on ceiling. Pogo the mortar or dboost on the left wall to get to the pickup
      Grapple, DoubleJump, TripleJump, Hammer, Shuriken=1 OR Flash=1 OR Sentry=1  # Grapple, tjump, upslash, one horizontal attack, energy weapon
    unsafe:
      DoubleJump, TripleJump, Dash  # using the walls and ceilings
      DoubleJump, TripleJump, Sword OR Hammer  # friendly spikes after the grappl section. Sword jumps from there or tjump+hammer upslash
      # DoubleJump, TripleJump, Dash, Flash=1 OR Sentry=1  # Go just under the pickup, tjump from here+sentry/flash to reach the wall above the spikes
      SentryJump=2, Grapple
      SentryJump=3                                  # pogo on the last mortar
      SentryJump=4
      # SentryJump=3, DoubleJump
      # Grapple, Dash, DoubleJump, TripleJump

  conn BeetleFight: free
  conn EastHollow.AboveBash: free
  conn EastHollow.Teleporter:  # so far this seemed to cover all paths going towards glades
    moki, EastHollow.BeetleDefeated:
      DoubleJump, Dash
      Bash, DoubleJump OR Dash OR Grenade=1
      Glide OR Launch
    gorlek:
      Bash, DoubleJump, TripleJump OR Dash OR Glide
      DoubleJump, TripleJump, Glide
      SentryJump=1, Glide, DoubleJump OR Dash
      Launch
      EastHollow.BeetleDefeated:
        DoubleJump, Sword OR Hammer
        Dash, Sword OR Hammer
        Bash OR SentryJump=1
    kii:
      Bash
      DoubleJump, Sword, Glide  # Pogo the mantis
      DoubleJump, Sword, Spear=1  # djump+spear to reach the tp from the beetle arena
      DoubleJump, Hammer, Glide OR Sword OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
      DoubleJump, TripleJump, Dash OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe:
      DoubleJump, TripleJump
      DoubleJump, Sword  # sword jumps
      # DoubleJump, Sword, Shuriken=1
  conn EastHollow.Kwolok:
    moki:
      Bash, DoubleJump OR Dash OR Glide OR Launch
      Launch, DoubleJump, Dash OR Glide
      Launch, Dash, Glide
    gorlek:
      Bash OR Launch
      DoubleJump, TripleJump, Damage=10, Grapple OR SentryJump=1  # use the weapon to hover
    kii:
      DoubleJump, TripleJump, Dash
      DoubleJump, Grapple, Dash OR Glide OR Sword OR Hammer OR Sentry=3
    unsafe:
      Grapple, Dash, Damage=10
      DoubleJump, Grapple, Shuriken=3
      DoubleJump, TripleJump
      DoubleJump, Dash, Damage=10, SentryJump=1
      SentryJump=3, Glide

# checkpoint at 21, -4220

anchor EastHollow.AboveBash at -10, -4244:  # Under the breakable floot after the beetle arena
  pickup EastHollow.BashEC:
    moki:
      Bash, DoubleJump, Dash
      Bash, Grenade=1
      Launch
    gorlek:
      Bash, DoubleJump
      DoubleJump, TripleJump, Dash
      SwordSJump=1
      HammerSJump=1, DoubleJump OR Dash OR Glide OR Bash
    kii:
      Bash, Dash
      DoubleJump, TripleJump OR Hammer OR Spear=1
      DoubleJump, Dash, Sword OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      HammerSJump=1
      DoubleJump, Dash
      Bash
      # Bash, Dash OR Glide

  conn EastHollow.BashTreeCheckpoint:
    moki:
      Combat=2xSneezeSlug, DoubleJump OR Dash
      Bash, DoubleJump OR Dash  # just Bash is treacherous
      Glide OR Launch
    gorlek: DoubleJump OR Dash OR Bash OR Damage=10
    kii: free
  conn EastHollow.AboveDepths:
    moki, EastHollow.DepthsLever:
      Combat=2xSneezeSlug, DoubleJump OR Dash
      Bash, DoubleJump OR Dash  # just Bash is treacherous
      Glide OR Launch
    gorlek: EastHollow.DepthsLever, DoubleJump OR Dash OR Bash OR Sword OR Hammer OR Damage=10
    kii: EastHollow.DepthsLever
  conn EastHollow.AfterBeetleFight:  # Mortar break the ceiling for you
  # If you don't collect bash's tree, the camera is stuck. These paths ignore this issue.
    moki: Launch OR Bash
    gorlek:
      SentryJump=1
      DoubleJump, TripleJump
    kii: DoubleJump

anchor EastHollow.BashTreeCheckpoint at -7, -4325:  # Checkpoint at Bash tree
  refill Checkpoint

  pickup EastHollow.BashTree: free
  pickup EastHollow.BashEX:
    moki:
      DoubleJump, Bash
      Launch
    gorlek:
      Bash, Grenade=1, DoubleJump OR Dash OR Glide OR Sword OR Hammer
      SentryJump=1, DoubleJump, TripleJump
    kii:
      Bash, Grenade=1 OR Sword OR Hammer OR Flash=2 OR Sentry=2
      Bash, Glide, Flash=1 OR Sentry=1
      Bash, Dash, Flash=1 OR Sentry=1
      DoubleJump, TripleJump
    unsafe:
      SentryJump=1, DoubleJump OR Dash
      DoubleJump, Dash OR Hammer

  conn EastHollow.AboveBash:
    moki:
      Launch, Bash OR Hammer OR Spear=1
      Bash, Dash OR DoubleJump OR Glide
    gorlek:
      Launch  # The mortar will break the ceiling for you
      Bash, Sword
      Bash, Grenade=1, Damage=10  # Bash the slug to reach the first lantern, dboost in the spikes, grenade bash from the ledge
    kii:
      Bash, Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Damage=10
      Bash, Grenade=1  # Make the slug near the door shoot at you. Bash the projectile to reach your grenade
    unsafe:
      Bash  # Bash the lantern next to the door and bait the slug to shoot at you so you can bash its projectile

anchor EastHollow.Kwolok at 177, -4215:  # Between Ku and Kwolok
  refill Checkpoint

  quest EastHollow.ForestsVoice: free
  quest EastHollow.KwolokAmuletQuest:
    moki: EastPools.KwolokAmuletQI, WestPools.ForestsStrength

  state GladesTown.TuleySpawned:
    moki: InnerWellspring.WaterEscape

  pickup EastHollow.RightKwolokEX:
    moki: Bash OR Launch
    gorlek: SentryJump=1
    kii: DoubleJump, Sword, TripleJump OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # pogo the mortar
    unsafe: DoubleJump, Sword  # Pogo the mortar
  pickup EastHollow.SilentSwimEC:
    moki: Combat=Balloon, Water, WaterDash OR Launch
    gorlek:
      Water, WaterDash OR Launch
      Combat=Balloon, Water, DoubleJump, TripleJump, Damage=10
      Water, DoubleJump, TripleJump, Damage=20
    kii: Water, DoubleJump, TripleJump, Damage=10  # Balloon will go for a swim on its own as long as you aggro it
    unsafe: Water, Damage=10, DoubleJump OR SentryJump=1
  pickup EastHollow.KwolokSwimOre:
    moki: Water, Bash OR Damage=10  # enemy in the way
    gorlek: Water
  pickup EastHollow.KwolokSwimLeftEX:
    moki: Water, WaterDash OR Launch
    gorlek: Water, DoubleJump, TripleJump  # Do a wrap around from the right wall
    kii:
      Water, Bash  # Bash the fish
      Water, DoubleJump, Sword, Hammer OR Spear=1  # bait the fish and pogo it
    unsafe:
      Water, DoubleJump                           # At left wall, with quick jumps sliding up the wall you can keepp the dj
      # Water, DoubleJump, Hammer OR Flash=1 OR Sentry=1                 # upswing to gain a bit more hight. Standig on the left ledge to regain upswing after fail.
  pickup EastHollow.KwolokSwimRightEX:
    moki: Water
  pickup EastHollow.SecretRoofEX:  # this path can't get over the big spike wall from the left anchor
    gorlek: DoubleJump, TripleJump, Dash
    kii: DoubleJump, Dash OR TripleJump OR Sword OR Hammer OR Shuriken=1 OR Sentry=2
    unsafe: Dash

  conn EastHollow.AfterBeetleFight:
    moki:  # since the ability bottleneck is right at the start, most paths to the pickups on the way are covered in this connection
      Bash, DoubleJump OR Dash OR Glide
      DoubleJump, Dash OR Glide
      Dash, Glide, Damage=10
      Launch
    gorlek:
      Bash, Damage=10 OR Sword OR Hammer
      DoubleJump OR Dash OR Glide OR Sword
      Hammer, Damage=10
    kii:
      Hammer OR Sentry=3 OR Damage=20
      Bash, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Damage=10, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Sentry=2, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1
    unsafe:
      Bash OR Shuriken=2 OR Damage=10  # friendly spikes
  conn WoodsEntry.ShriekMeet:
    moki, Combat=Balloon:
      Water, Grapple, DoubleJump, Dash OR Glide
      Water, Grapple, Dash, Glide
      Water, Launch
    gorlek, Combat=Balloon:
      Water, Grapple, DoubleJump, TripleJump OR Sword OR Hammer
      Water, Grapple, Dash  # Eiher jump from the Grapple point and the Dash or use double Dash
      Water, WaterDash, DoubleJump, TripleJump
      Water, WaterDash, DoubleJump, Dash, Damage=10  # Take boost on the left side
      # @validator The path above could be using Dash OR Glide OR Sword OR Hammer instead of just Dash
    kii:
      # Repeat each moki/gorlek path without Combat=Balloon since you can just bait it into taking a swim
      Water, Launch
      Water, Grapple, Dash
      Water, Grapple, DoubleJump, Glide OR TripleJump OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Water, WaterDash, DoubleJump, TripleJump OR Sword OR Hammer OR Spear=2 OR Shuriken=2 OR Flash=2 OR Sentry=2
      Water, WaterDash, DoubleJump, Damage=10, Dash OR Glide OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      # Completely new paths
      Water, Grapple, Sword
      Water, Grapple, Hammer, Glide OR Shuriken=1 OR Flash=1 OR Sentry=1
      Water, Grapple, Glide, Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Water, WaterDash, Bash
      Water, WaterDash, Sword, Damage=10
      Water, WaterDash, Dash, Damage=10, Glide OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Water, WaterDash, Hammer, Damage=10, Glide OR Shuriken=1 OR Flash=1 OR Sentry=1
      Water, WaterDash, Glide, Damage=10, Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe:
      Water, Grapple, Sentry=3
      Water, Grapple, Shuriken=2, Combat=Balloon OR Damage=20
      Water, Grapple, DoubleJump  # Cancel grapple with djump
      Water, DoubleJump, TripleJump
      Water, WaterDash, Dash, Damage=10  # coyote jump from the ledge under the grappable plant
      # Water, Grapple, SwordSJump=1                       # standing on the ledge below grapple plant. Holding right during SJump. Swordcombo to go right. Lure balloon into water first
      # Water, Grapple, SwordSJump=1, DoubleJump OR Glide  # standing on the ledge below grapple plant. Holding right during SJump
# checkpoint at -8, -4327

anchor EastHollow.AboveDepths at 47, -4302:  # To the right of the lever door blocking Depths access
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  state EastHollow.DepthsOpen:
    moki: Glide

  pickup EastHollow.BashHC:
    moki: Bash OR Launch
    gorlek:
      SentryJump=2, DoubleJump, TripleJump
      SentryJump=3
    kii: DoubleJump, TripleJump, Hammer, Spear=1 OR Flash=1 OR Sentry=1
    unsafe:
      DoubleJump, TripleJump, Hammer  # Hammer upswing to gain mor hight
  pickup EastHollow.SplinterShard: free
  pickup EastHollow.DepthsExteriorEX:
    moki: Glide, Launch  # ...what even is intended here?
    gorlek:
      Bash, Grenade=1, Launch
      SentryJump=1, Launch
      Launch, DoubleJump OR Dash  # Jump to the left wall and then go to right or you can go from the ledge next to the entry if you have DoubleJump
      Bash, Grenade=1, DoubleJump, TripleJump
    kii:
      Launch
      Bash, Grenade=1, DoubleJump  # Bait the mantis
    unsafe:
      Glide, DoubleJump, TripleJump
      Bash, Grenade=1  # Bait the mantis

  conn UpperDepths.Entry:
    moki: EastHollow.DepthsOpen
  conn EastHollow.BashTreeCheckpoint:
    moki, EastHollow.DepthsLever: Combat=SneezeSlug OR DoubleJump OR Bash OR Launch
    gorlek, EastHollow.DepthsLever: Damage=5
    kii: EastHollow.DepthsLever
  conn EastHollow.AboveBash:  # Make sure it's not redundant with paths from EastHollow.BashTreeCheckpoint
    gorlek, EastHollow.DepthsLever:
      SwordSJump=5, Dash OR Glide  # The mortar will break the ceiling for you
      SwordSJump=4, DoubleJump  # The mortar will break the ceiling for you

anchor GladesTown.Teleporter at -307, -4153:  # The glades teleporter
  refill Full

  state GladesTown.BuildHuts:
    moki: Ore=15
  state GladesTown.RoofsOverHeads:
    moki: GladesTown.BuildHuts, Ore=21
  state GladesTown.OnwardsAndUpwards:
    moki: GladesTown.RoofsOverHeads, Ore=29
  state GladesTown.ClearThorns:
    moki: Ore=23
  state GladesTown.CaveEntrance:
    moki: GladesTown.ClearThorns, Ore=29
  # decoration not accounted for
  # state GladesTown.RatherPlay:  # talking to the Moki that allows to build decoration
  #   moki:
  #     Flap, Glide
  #     Launch
  #     TuleyShop.Lightcatchers, Bash:
  #       Grenade=1
  #       TuleyShop.BlueMoon, Grapple, DoubleJump OR Dash
  #       TuleyShop.StickyGrass, Grapple, DoubleJump OR Dash
  #       TuleyShop.SpringPlants
  #     TuleyShop.SpringPlants, DoubleJump
  #     GladesTown.RoofsOverHeads:
  #       Bash, Grenade=2
  #       TuleyShop.BlueMoon, Grapple, Bash, Grenade=1
  #       TuleyShop.SpringPlants, Bash, Grenade=1

  # silent woods map quest doesn't exactly make sense
  quest GladesTown.RebuildTheGlades:
    moki: Ore=40  # Eiko told me not to modify this so orishrug ~Cosmic

  pickup GladesTown.UpdraftCeilingEX:
    moki:
      Flap, Glide
      Bash, Grenade=1, DoubleJump
      Launch
      TuleyShop.Lightcatchers, Bash, Grenade=1
      TuleyShop.BlueMoon, DoubleJump, Grapple
      TuleyShop.BlueMoon, TuleyShop.Lightcatchers, Bash, Grapple
      TuleyShop.SpringPlants, DoubleJump OR Dash OR Glide
      TuleyShop.SpringPlants, TuleyShop.Lightcatchers, Bash
    gorlek:
      DoubleJump, TripleJump
      Bash, Grenade=1, Hammer
      SentryJump=2 OR HammerSJump=1
      SwordSJump=1, DoubleJump
      TuleyShop.Lightcatchers, Bash, SentryJump=1
      TuleyShop.BlueMoon, Grapple, Hammer OR SwordSJump=1
      TuleyShop.StickyGrass, TuleyShop.Lightcatchers, Bash, Grapple  # go up on bridge then drop down
      TuleyShop.SpringPlants, Sword OR Hammer
    unsafe:
      Bash, Grenade=2  # for kii
      SwordSJump=1         # sentry jump into the exp
      Grenade=1, Sword     # Grenade Pogos
      Grenade=2            # Grenade Jumps
      TuleyShop.SpringPlants, Grenade=1 OR Sword
      TuleyShop.BlueMoon, Grapple, Sword
      DoubleJump, Glide
      Dash:
        Sword OR Hammer
        Regenerate  # Wavedash from the right
        Burrow
  pickup GladesTown.AboveTpEX:
    moki:
      Launch  # probably fine?
      TuleyShop.Lightcatchers, Bash:
        Grenade=1
        DoubleJump, Flap, Glide
        TuleyShop.StickyGrass, Grapple
        TuleyShop.BlueMoon, DoubleJump, Grapple
        TuleyShop.SpringPlants, DoubleJump
    gorlek:
      DoubleJump, TripleJump
      TuleyShop.Lightcatchers, Bash:
        Flap, Glide  # bashglide over to the other side
        SentryJump=1
        TuleyShop.BlueMoon, Grapple, Dash OR Glide
        TuleyShop.SpringPlants, Dash OR Glide
    unsafe:
      DoubleJump, Sword
      Bash, Grenade=2, Sword OR DoubleJump    # hard strat
      Bash, Grenade=2, Dash                   # completely different strat, hence separation from Bash Grenade=2 Sword
      Grenade=3, DoubleJump                   # Midair Grenade Jumps
      SwordSJump=2                            # Midair Sentry Jumps
      TuleyShop.StickyGrass, Grapple, DoubleJump  # hard jump
      # Bash, Grenade=2                       # its possible
      TuleyShop.Lightcatchers, Bash:
        Dash, Regenerate  # wavedash from the right
        TuleyShop.BlueMoon, Grapple
  pickup GladesTown.BountyShard:
    moki:
      Launch  # probably fine?
      TuleyShop.Lightcatchers, Bash:
        Grenade=1
        DoubleJump, Flap, Glide
        TuleyShop.StickyGrass, Grapple
        TuleyShop.BlueMoon, DoubleJump, Grapple
        TuleyShop.SpringPlants, DoubleJump
    gorlek:
      DoubleJump, TripleJump
      TuleyShop.Lightcatchers, Bash:  # paths are the exact same because you can get up to the shard using the lightcatcher on the right and nothing else
        Flap, Glide  # bashglide over to the other side
        SentryJump=1
        TuleyShop.BlueMoon, Grapple, Dash OR Glide
        TuleyShop.SpringPlants, Dash OR Glide
    unsafe:
      DoubleJump, Sword
      Bash, Grenade=2, DoubleJump
      Bash, Grenade=3, Sword    # hard strat
      Bash, Grenade=3, Dash     # completely different strat, hence separation from Bash Grenade=3 Sword
      Grenade=3, DoubleJump     # Midair Grenade Jumps
      SwordSJump=3              # Midair Sentry Jumps
      TuleyShop.StickyGrass, Grapple, DoubleJump  # hard jump
      TuleyShop.Lightcatchers, Bash, Dash, Regenerate  # wavedash from the right, tight jump to the top
  pickup GladesTown.ArcingShard:
    moki, GladesTown.ClearThorns:
      Bash, Grenade=1  # probably fine?
      Launch
      TuleyShop.Lightcatchers, Bash, DoubleJump OR Dash OR Glide
    gorlek, GladesTown.ClearThorns:
      SentryJump=1, DoubleJump, TripleJump
      TuleyShop.Lightcatchers, Bash  # bashglide
    unsafe, GladesTown.ClearThorns:
      Grenade=1  # Grenade Jump
      DoubleJump, TripleJump
      TuleyShop.Lightcatchers, Bash
  pickup GladesTown.LupoSoupEX:
    moki: Water OR Burrow
  pickup LupoShop.HCMapIcon:
    moki: SpiritLight=1200, Water OR Burrow
  pickup LupoShop.ECMapIcon:
    moki: SpiritLight=1200, Water OR Burrow
  pickup LupoShop.ShardMapIcon:
    moki: SpiritLight=1200, Water OR Burrow
  pickup GladesTown.LupoSwimHC:
    moki: Water, Burrow
  pickup GladesTown.LupoSwimMiddleEX:
    moki: Water, WaterDash OR Launch
    gorlek: Water, DoubleJump
    unsafe: Water  # just wall jump between both walls. not hard.
  pickup GladesTown.LupoSwimLeftEX:
    moki: GladesTown.ClearThorns, Water, WaterDash OR Launch
    gorlek: GladesTown.ClearThorns, Water, DoubleJump, TripleJump
    unsafe, GladesTown.ClearThorns:
      Water, Bash, Grenade=1  # unsafe because of precision. Good for kii.
      Water, Grenade=2  # Grenade Water Jumps
      Water, DoubleJump
  pickup GladesTown.CaveBurrowEX:
    unsafe: NonGladesTeleporter  # heehee

  conn Teleporters: free
  conn GladesTown.TwillenHome: free
  conn GladesTown.UpperWest:
    moki:
      Launch, DoubleJump OR Dash OR Glide
      TuleyShop.BlueMoon, Grapple:
        Bash, Grenade=1
        Launch
        TuleyShop.Lightcatchers, Bash, DoubleJump OR Dash OR Glide
    gorlek:
      Launch
      TuleyShop.BlueMoon, Grapple:
        SentryJump=1
        TuleyShop.Lightcatchers, Bash
    unsafe:
      SwordSJump=2  # Midair Sentry Jumps
      TuleyShop.Lightcatchers, Bash, Grenade=1, Grapple  # grenadebash
      GladesTown.ClearThorns, DoubleJump, TripleJump  # hardcore parkour
  conn GladesTown.HoleHut:
    moki:
      Flap, Glide:
        DoubleJump
        Bash, Grenade=1
        Grapple, TuleyShop.BlueMoon OR TuleyShop.StickyGrass
        TuleyShop.SpringPlants
      Launch
      TuleyShop.Lightcatchers, Bash:
        Grenade=2
        Grenade=1, DoubleJump
        TuleyShop.BlueMoon, Grapple, DoubleJump OR Dash
        TuleyShop.BlueMoon, Grapple, Grenade=1, Glide
        TuleyShop.StickyGrass, Grapple, DoubleJump, Dash OR Glide
        TuleyShop.StickyGrass, Grapple, Grenade=1, DoubleJump OR Dash OR Glide
        TuleyShop.SpringPlants
      TuleyShop.SpringPlants, DoubleJump
      GladesTown.RoofsOverHeads:
        Bash, Grenade=3
        DoubleJump, Bash, Grenade=2
        TuleyShop.BlueMoon, Grapple, Bash, Grenade=1, DoubleJump OR Dash
        TuleyShop.BlueMoon, Grapple, Bash, Grenade=2, Glide
        TuleyShop.StickyGrass, Grapple, Bash, Grenade=2, Dash OR Glide
        TuleyShop.SpringPlants, Bash, Grenade=1
    gorlek:
      Flap, Glide, SwordSJump=1 OR Hammer
      DoubleJump, TripleJump
      SentryJump=2:
        DoubleJump OR SwordSJump=1 OR Hammer
        TuleyShop.BlueMoon, Grapple
        TuleyShop.StickyGrass, Grapple, Dash OR Glide
      TuleyShop.Lightcatchers, Bash:
        SentryJump=2
        SentryJump=1, DoubleJump
        TuleyShop.BlueMoon, Grapple, Grenade=1 OR SentryJump=1
        TuleyShop.BlueMoon, Grapple, Glide OR Sword OR Hammer  # uphammer harder than upslash
        TuleyShop.StickyGrass, Grapple, DoubleJump OR Dash OR Glide OR Sword OR Hammer
        TuleyShop.StickyGrass, Grapple, Grenade=1, Sword OR Hammer
        TuleyShop.StickyGrass, Grapple, SentryJump=1
        TuleyShop.SpringPlants
      TuleyShop.SpringPlants, SwordSJump=1 OR Hammer
      GladesTown.RoofsOverHeads:
        Bash, Grenade=2, Hammer
        TuleyShop.BlueMoon, Grapple, Bash, Grenade=1, Glide OR Sword OR Hammer
        TuleyShop.StickyGrass, Grapple, Bash, Grenade=1, DoubleJump, Dash OR Glide OR Sword OR Hammer
        TuleyShop.StickyGrass, Grapple, Bash, Grenade=2, Sword
    unsafe:
      Flap, Glide, Sword OR Hammer OR Grenade=1  # grenade jump, upslash, uphammer
      TuleyShop.SpringPlants, Sword OR Grenade=1  # increased height bounces
      TuleyShop.SpringPlants, Sentry=1 OR Flash  # sentry and flash short hops give you juuuuuust enough height to get up using the springboard by the hut with the crates
      TuleyShop.Lightcatchers, Bash, TuleyShop.BlueMoon, Grapple
      TuleyShop.Lightcatchers, Bash:
        DoubleJump, Sword OR Glide OR Dash OR Grenade=2
        Dash, Regenerate  # wavedash
        Burrow, Dash OR DoubleJump OR Sword OR Hammer
      Burrow, Grenade=1, Dash OR DoubleJump OR Sword OR Hammer
      Bash, Grenade=3
  conn LowerReach.VeralHome:
    moki: TuleyShop.Lightcatchers, TuleyShop.StickyGrass, Bash, Grapple, DoubleJump OR Dash  # other paths should be redundant with HoleHut
  conn OpherShop: free
  conn Tokk: free
  conn TuleyShop:
    moki, GladesTown.TuleySpawned:
      DoubleJump OR Launch
      Flap, Glide
      Bash, Grenade=1
    gorlek: GladesTown.TuleySpawned, SentryJump=1 OR Burrow OR Dash
    unsafe: GladesTown.TuleySpawned, Shuriken=1 OR Sword OR Hammer OR Grenade=1 OR Sentry=1 OR Flash OR Spear=1
    # seed paths tbd if ever Necessary
  conn EastHollow.OutsideGlades:
    moki: GladesTown.GromsWall

# checkpoint at -297, -4139

anchor GladesTown.TwillenHome at -414, -4160:  # At Twillen in Glades
  refill Checkpoint

  quest GladesTown.HandToHandLantern:
    moki: LowerReach.HandToHandHat
  quest GladesTown.FamilyReunionKey:
    moki: GladesTown.BuildHuts
  quest GladesTown.AcornQI:
    moki, GladesTown.ClearThorns, GladesTown.CaveEntrance:
      Flash, Water, Glide
      Flash, Water, DoubleJump, Dash
      Flash, Bash, Grenade=1
      Flash, Launch
    gorlek, GladesTown.ClearThorns, GladesTown.CaveEntrance:
      Flash:
        Water, DoubleJump OR Dash OR Sword OR Hammer
        SentryJump=1
      Bow=4:  # bow refills light
        Launch
        Bash, Grenade=1
        SentryJump=1
    unsafe, GladesTown.ClearThorns, GladesTown.CaveEntrance:
      Flash:
        # Water, Sentry=2 OR Damage=10  # use the flash hop to make it across the first spikes (good for kii)
        # Water, Sword  # difficult sword float (good for kii)
        Water  # double flash hop (not good for kii)
        Grenade=1  # grenade jump
        DoubleJump, TripleJump  # off the left wall
      Bow=2:
        Launch
        Bash, Grenade=1
        SentryJump=1
        Grenade=1  # grenade jump
        DoubleJump, TripleJump  # off the left wall
        Water, WaterDash, Damage=10 OR DoubleJump OR Glide
      # Grenade=4  # grenade jumps and light refills, very nasty strat
      DoubleJump, TripleJump, Grenade=2, Water OR Damage=10  # light refills, NO GRENADE JUMPS, Small Dirty Water Dboost
      DoubleJump, TripleJump, Grenade=1, Sword, Water OR Damage=10
  quest GladesTown.MokiAcornQuest:
    moki: GladesTown.ClearThorns, GladesTown.AcornQI

  pickup GladesTown.LowerOre:
    moki:
      Hammer, DoubleJump OR Dash OR Glide OR Launch
      Spear=1, DoubleJump OR Dash OR Glide OR Launch
      Bash, Grenade=1, Hammer OR Spear=1
    gorlek:
      Hammer  # hammer float
      Spear=1, Sword OR Damage=10  # sword float
    unsafe: Spear=1  # tricky jump over the coals damageless
  pickup GladesTown.AboveCaveEX:
    moki: GladesTown.ClearThorns
  pickup GladesTown.CaveBurrowEX:
    moki: GladesTown.ClearThorns, Burrow, DoubleJump OR Launch
    gorlek: GladesTown.ClearThorns, Burrow  # Burrow Dash out of the sand
  pickup GladesTown.KeyMokiHutEX:
    moki: GladesTown.BuildHuts, WoodsEntry.DollQI  # changed RoofsOverHeads to BuildHuts
  pickup GladesTown.DamageTree:
    moki: TuleyShop.LastTree

  conn TwillenShop: free
  conn GladesTown.West:
    moki:
      DoubleJump OR Launch
      Bash, Grenade=1
      TuleyShop.StickyGrass, Grapple
    gorlek:
      SentryJump=1
      TuleyShop.SpringPlants, Sword OR Hammer  # upslash or uphammer
      TuleyShop.Lightcatchers, Bash
    unsafe: free
      # Grenade=1
  conn GladesTown.Teleporter:
    moki:
      Bash, Grenade=1
      GladesTown.ClearThorns OR DoubleJump OR Launch
    gorlek: SentryJump=1
    unsafe: Hammer OR Sword OR Dash OR Damage=10

anchor GladesTown.West at -430, -4135:  # At Motay
  refill Checkpoint

  quest GladesTown.HandToHandCanteen:
    moki: EastPools.HandToHandSpyglass

  pickup GladesTown.UpperOre:
    moki:
      Bash, Grenade=1, Launch
      Launch, DoubleJump  # different ways to solve this, should be fine...
      TuleyShop.StickyGrass:
        Grapple OR Launch
        Bash, Grenade=1, DoubleJump, Dash OR Glide
        Bash, Grenade=1, Dash, Glide
        TuleyShop.Lightcatchers, Bash, DoubleJump, Dash
        TuleyShop.Lightcatchers, Bash, Glide
      GladesTown.BuildHuts:
        DoubleJump, Bash, Grenade=2
        Bash, Grenade=3
        Launch
        TuleyShop.StickyGrass:
          DoubleJump, Bash, Grenade=1
          TuleyShop.Lightcatchers, Bash, DoubleJump OR Dash OR Glide
        TuleyShop.Lightcatchers, Bash, Grenade=1
    gorlek:
      Launch
      TuleyShop.Lightcatchers, Bash, DoubleJump, TripleJump
      TuleyShop.StickyGrass:
        Bash, Grenade=1, DoubleJump OR Glide  # glide somehow still a bit precise even though you just hold right
        SentryJump=1, DoubleJump OR Glide  # glide somehow still a bit precise even though you just hold right
        SentryJump=1, Dash
        DoubleJump, TripleJump, Sword OR Hammer  # upswing to the moss
        TuleyShop.Lightcatchers, Bash, Grenade=1 OR SentryJump=1  # can still do this with the huts up
        TuleyShop.Lightcatchers, Bash, DoubleJump  # wrap around
      GladesTown.BuildHuts:
        Bash, Grenade=2
        SentryJump=3  # just two seems a bit precise in gorlek, even though gorlek height is technically barely enough
        SentryJump=2, DoubleJump
        TuleyShop.Lightcatchers, Bash, SentryJump=1
        TuleyShop.StickyGrass:
          Bash, Grenade=1, Dash OR Glide OR Sword  # hammer mildly inconsistent
          SentryJump=2
          SwordSJump=1  # hammer mildly inconsistent
          TuleyShop.Lightcatchers, Bash
    unsafe:
      SentryJump=2  # Midairs
      GladesTown.BuildHuts, TuleyShop.BlueMoon, Grapple, DoubleJump, TripleJump
      GladesTown.BuildHuts, Grenade=3  # Grenade Jumps
      TuleyShop.Lightcatchers, Bash, Grenade=1, Grapple  # Grenadebash
      DoubleJump, TripleJump, Dash OR Glide     # using the ceiling from the left
      GladesTown.BuildHuts, Bash                # use both slimes
  pickup GladesTown.MotayHutEX:
    moki, GladesTown.BuildHuts:
      DoubleJump, Dash OR Glide
      Bash, Grenade=1
      Launch
      Grapple, TuleyShop.StickyGrass OR TuleyShop.BlueMoon
      TuleyShop.Lightcatchers, Bash
    gorlek, GladesTown.BuildHuts:
      SentryJump=1
      DoubleJump, TripleJump OR Sword OR Hammer
    unsafe, GladesTown.BuildHuts:
      Grenade=1  # grenade jumps
      Bash  # slime lure
      TuleyShop.SpringPlants, Hammer, Dash  # uphammer bounce
      Dash                                  # late coyote
      Sword                                 # high jump, full combo, upslash and then downslash (all while holding right)
      # Dash, Glide OR Sword OR Hammer
  pickup WestGlades.GrappleEX:
    unsafe: SwordSJump=1, Damage=10

  conn WestGlades.PastTown:
    moki:
      Bash, DoubleJump OR Dash
      Combat=2xWeakSlug, DoubleJump, Dash, Glide  # this path is too nice to not be moki... right?
      Launch
    gorlek:
      Bash, Glide
      Bash, Damage=10, Sword
      Combat=2xWeakSlug, DoubleJump, Dash
      Combat=2xWeakSlug, DoubleJump, TripleJump  # can either wrap around or grab the bottom of the last wall
      DoubleJump, Sword, Damage=10
    unsafe:
      Bash, Damage=10, Hammer
      Combat=2xWeakSlug, DoubleJump, Damage=20
      Bash, Sword OR Hammer  # weapon floating, yes verified with hammer
      SwordSJump=1, Damage=10
      HammerSJump=1, Damage=20
      Dash, Hammer
      Dash, Sword, Damage=30  # damage depending on how often you fail the last jump (10 is minimum)
      DoubleJump, Damage=10, TripleJump OR Dash  # damage for avoiding slimes
  conn GladesTown.TwillenHome: free
  conn GladesTown.Teleporter:
    moki:
      TuleyShop.Lightcatchers, Bash, Glide
      TuleyShop.BlueMoon, Grapple
      TuleyShop.StickyGrass, Grapple, Glide
    gorlek: TuleyShop.Lightcatchers, Bash, Dash, Sword OR Hammer
    # kii will probably have a free conection from TwillenHome, not needing any paths here
  conn GladesTown.UpperWest:
    moki:
      TuleyShop.StickyGrass, Launch
      TuleyShop.Lightcatchers, Bash:
        DoubleJump, Dash OR Glide
        Dash, Glide
        Launch
        TuleyShop.StickyGrass, Grapple, DoubleJump OR Dash OR Glide
      TuleyShop.BlueMoon, Grapple, DoubleJump OR Dash OR Glide OR Launch  # extra abilities because it's harder if the huts are there
      GladesTown.BuildHuts:
        Bash, Grenade=2  # has an alternate solution if the lightcatcher is there
        Bash, Grenade=1, DoubleJump, Dash OR Glide
        Launch
        TuleyShop.Lightcatchers, Bash, DoubleJump OR Dash OR Glide
    gorlek:
      # Launch already connects over the teleporter
      TuleyShop.Lightcatchers, Bash:
        Glide
        DoubleJump, TripleJump OR Dash OR Sword OR Hammer
        Dash, Sword OR Hammer
        SentryJump=1
        TuleyShop.StickyGrass, Grapple
      TuleyShop.BlueMoon, Grapple, Sword OR Hammer
      TuleyShop.StickyGrass:
        DoubleJump, TripleJump, Sword  # upslash to the moss
        DoubleJump, TripleJump, Hammer, Dash OR Glide  # upswing to the moss
        Grapple, DoubleJump, Dash, Glide OR TripleJump OR Sword
        Grapple, DoubleJump, TripleJump, Glide
      GladesTown.BuildHuts:
        Bash, Grenade=1, DoubleJump, TripleJump OR Sword OR Hammer
        Bash, Grenade=1, Dash, Glide OR Sword
        SentryJump=1, DoubleJump, TripleJump OR Dash
    unsafe:
      Grenade=2, DoubleJump, Sword  # Midair Grenade Pogo
      TuleyShop.BlueMoon, Grapple
      TuleyShop.Lightcatchers, Bash, Glide OR Grenade=1  # Bash Gliding
      GladesTown.BuildHuts:
        Bash, Grenade=1  # Grenade Jump that auto-cancels by entering the hut
        Grenade=1, DoubleJump OR Dash  # Midair Grenade Jump with auto-cancel  # dash is much harder
        SentryJump=1, Dash                  # Downslash at the Bridge
        TuleyShop.Lightcatchers, Bash, Sword OR Hammer
  # all other paths should be redundant with the connection to tp

anchor GladesTown.UpperWest at -357, -4126:  # Where Mokk lives
  pickup GladesTown.ArcingShard:
    moki, GladesTown.ClearThorns:
      DoubleJump OR Dash OR Glide OR Launch
      TuleyShop.Lightcatchers, Bash  # somehow I don't think this path is very relevant
      TuleyShop.BlueMoon, Grapple
    gorlek: GladesTown.ClearThorns, Sword OR Hammer
    unsafe, GladesTown.ClearThorns:
      Sentry=2
      Shuriken=1
  pickup GladesTown.BraveMokiHutEX:
    moki: GladesTown.OnwardsAndUpwards, DoubleJump OR Launch
    gorlek: GladesTown.OnwardsAndUpwards, SentryJump=1
    unsafe, GladesTown.OnwardsAndUpwards:
      Sword OR Hammer  # upslash or uphammer
      Grenade=1  # grenade jump
      Bash, Spear=1  # spearbash off of the pots
  pickup GladesTown.UpperLeftEX:
    moki:
      Bash, Grenade=1
      Launch
      TuleyShop.StickyGrass, DoubleJump, Grapple
    gorlek:
      SentryJump=1
      DoubleJump, TripleJump
      TuleyShop.StickyGrass, Grapple
    unsafe:
      DoubleJump
      Sword, Grenade=1 OR Shuriken=2  # pogo
      TuleyShop.BlueMoon, Grapple
  pickup GladesTown.AboveGromHC:
    moki:
      DoubleJump, Bash, Grenade=1
      Launch
      TuleyShop.StickyGrass, Grapple
    gorlek:
      DoubleJump, SentryJump=1
      DoubleJump, TripleJump OR Dash OR Glide  # just assisting abilities
    unsafe:
      DoubleJump
      Bash, Grenade=1
      SentryJump=1
      Sword, Grenade=1 OR Shuriken=2  # pogo
      TuleyShop.BlueMoon, Grapple
  pickup GladesTown.MotayHutEX:
    moki, GladesTown.BuildHuts:
      DoubleJump OR Dash OR Glide
      TuleyShop.BlueMoon, Grapple
    gorlek, GladesTown.BuildHuts:
      Sword OR Hammer  # Weapon Float
      TuleyShop.StickyGrass, Grapple
    unsafe: GladesTown.BuildHuts, Sentry=1 OR Spear=1 OR Flash OR Blaze=1
  pickup GladesTown.UpperOre:
    moki: GladesTown.BuildHuts, Bash, Grenade=2, Dash OR Glide
    gorlek, GladesTown.BuildHuts:
      TuleyShop.StickyGrass, Grapple
      TuleyShop.StickyGrass, SentryJump=1
      SentryJump=2
      SwordSJump=1, DoubleJump, TripleJump OR Dash
    unsafe: GladesTown.BuildHuts, Grenade=2, Sentry=1 OR Spear=1 OR Flash OR Blaze=1 OR Sword OR Hammer OR Dash OR DoubleJump OR Glide

  conn GladesTown.West:
    moki:
      Dash OR Glide
      TuleyShop.BlueMoon, Grapple
    gorlek:
      Sword OR Hammer
      TuleyShop.StickyGrass, Grapple
    unsafe: GladesTown.BuildHuts, Sentry=1 OR Spear=1 OR Flash OR Blaze=1
  conn GladesTown.TwillenHome: free
  conn GladesTown.Teleporter:
    moki:
      Dash OR Glide
      TuleyShop.Lightcatchers, Bash
      TuleyShop.BlueMoon, Grapple
    gorlek: Sword OR Hammer
    unsafe: Grenade=1 OR Sentry=1 OR Flash OR Blaze=1 OR Spear=1 OR Shuriken=1

anchor GladesTown.HoleHut at -214, -4111:  # The ledge below Hole Hut
  pickup GladesTown.BelowHoleHutEX: free
  pickup GladesTown.HoleHutEX:
    moki, GladesTown.RoofsOverHeads:
      Bash, Grenade=1
      TuleyShop.SpringPlants OR DoubleJump OR Dash OR Launch
    gorlek: GladesTown.RoofsOverHeads, Glide OR HammerSJump=1 OR Sword
    unsafe, GladesTown.RoofsOverHeads:
      Grenade=1  # grenade jump
      Hammer OR Sentry=1 OR Flash=1 OR Shuriken=1
  pickup GladesTown.HoleHutEC:
    moki, GladesTown.RoofsOverHeads:
      Bash, Grenade=1
      TuleyShop.SpringPlants OR DoubleJump OR Dash OR Launch
    gorlek: GladesTown.RoofsOverHeads, Glide OR HammerSJump=1 OR Sword
    unsafe, GladesTown.RoofsOverHeads:
      Grenade=1  # grenade jump
      Hammer OR Sentry=1 OR Flash=1 OR Shuriken=1

  conn LowerReach.VeralHome:
  # Sword, Dash, Glide, DoubleJump, Lightcatchers Bash, Grenade, Hammer, Blaze, Shuriken, Sentry, and Flash can all individually get you from branch to reachpath
    moki:
      Launch, DoubleJump OR Dash OR Glide  # Can go either to the right wall or through the semisolid branch
      Launch, Grapple, TuleyShop.BlueMoon OR TuleyShop.StickyGrass
      TuleyShop.SpringPlants, Launch
      TuleyShop.BlueMoon, Grapple, DoubleJump OR Dash
      TuleyShop.StickyGrass, Grapple, DoubleJump OR Dash
      TuleyShop.Lightcatchers, TuleyShop.BlueMoon, Bash, Grapple
      TuleyShop.Lightcatchers, TuleyShop.StickyGrass, Bash, Grapple, Glide
    gorlek:
      Launch
      DoubleJump, TripleJump
      SentryJump=1  # Weapon Float, works from a standing sjump on the ledge
      TuleyShop.BlueMoon, Grapple, Glide OR Sword OR Hammer
      TuleyShop.StickyGrass, Grapple, Glide OR Sword
    unsafe:
      Grenade=1, DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Blaze=1 OR Shuriken=1 OR Sentry=1 OR Flash
      Grenade=2
      TuleyShop.Lightcatchers, Bash, Grenade=1
      TuleyShop.SpringPlants, Hammer  # Uphammer Bounce
      TuleyShop.StickyGrass, Grapple, Sword OR Hammer OR Blaze=1 OR Shuriken=1 OR Sentry=1 OR Flash
      DoubleJump, Glide
  conn TuleyShop:
    moki: GladesTown.TuleySpawned, Dash OR Glide  # seed paths tbd if ever necessary
    gorlek: GladesTown.TuleySpawned, Sword OR Hammer  # getting up there with just a weapon from below is not written in gorlek. The weapon floats from hole hut, however, are probably gorlek difficulty.
    # everything else is redundant
  conn GladesTown.Teleporter: free

anchor LowerReach.VeralHome at -140, -4096:  # At the soup
  refill Checkpoint

  # state GladesTown.RatherPlay:  # talking to the Moki that allows to build decoration
  #   moki:  # free if you know the whole branch is semisolid, but you probably don't as a moki player
  #     DoubleJump OR Dash OR Glide OR Launch
  #     TuleyShop.BlueMoon, Grapple

  quest LowerReach.HandToHandSoup:
    moki: InnerWellspring.HandToHandHerbs

  pickup GladesTown.LeafPileEX:
    moki: Flap
  pickup LowerReach.CatalystShard:
    moki:
      Water, Bash, Flap  # seems to be a casual strat the game suggests you to do
      Water, Grenade=1
  # unsafe: Water, Flap, Sentry=2  # theoretical double redirect, still in testing
  pickup GladesTown.UpdraftCeilingEX:
    moki: DoubleJump  # other (non-redundant) paths exist, but this has free retries, otherwise you'd have to go through entire reach to get another attempt
    gorlek: Dash OR Glide OR Sword OR Hammer  # weapon float woo
    unsafe: Grenade=1

  conn GladesTown.HoleHut:
    moki:
      DoubleJump OR Dash OR Glide OR Launch
      TuleyShop.BlueMoon, TuleyShop.SpringPlants, Grapple
      TuleyShop.BlueMoon, Grapple, Bash, Grenade=1
    gorlek: free  # free if you know the whole branch is semisolid, but you probably don't as a moki player
  conn GladesTown.Teleporter: free
  conn TuleyShop:
    moki: GladesTown.TuleySpawned
  conn LowerReach.TownEntry:
    moki:
      Bash, Flap OR Grenade=1  # may need to juggle the soupgrenade once
      Launch
    gorlek:
      DoubleJump, TripleJump, Glide OR Dash OR Sword
      SentryJump=1
    unsafe:
      Dash, Glide, Sword  # Needs a ramp on the left side corner of the platform near the cauldron
      DoubleJump, Glide OR Sword OR Hammer # Wall jump from the wall near the ceiling
      DoubleJump, TripleJump  # climb the wall underneath the anchor

region WestGlades:
  moki: Danger=20
  gorlek: free
  kii: free
  unsafe: free

anchor WestGlades.PastTown at -545, -4113:  # The right edge of the first pool past glades
  refill Checkpoint
  refill Energy=3:
    moki, BreakCrystal:
      DoubleJump, Dash OR Glide
      Launch
# @validator everything beside moki paths need validation
    gorlek, BreakCrystal, Bow OR Grenade:
      Water OR Glide  # break the crystal from afar and jump into the water to get the energy
      DoubleJump, TripleJump  # break the crystal from afar and use triple jump to collect the energy midair
    kii, BreakCrystal:
      Bow OR Shuriken OR Grenade:  # Ranged Weapons
        Water OR DoubleJump OR Dash OR Glide OR Hammer OR Sword
      Sword, Water OR Glide
      Hammer, Water, DoubleJump OR Dash
      Hammer, Glide, DoubleJump OR Dash

  state GladesTown.GromsWall:
    unsafe: Bash, Launch

  pickup WestGlades.GrappleEX:
    moki:
      Grapple OR Launch
      Bash, Grenade=1
    gorlek:
      DoubleJump, TripleJump
      Bash, DoubleJump, Dash
      SentryJump=1
    kii:
      Bash, Dash OR DoubleJump OR Sword
      Bash, Glide, Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1
      Bash, WaterDash, Water, Glide OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
      Bash, WaterDash, Damage=20, Glide OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
      DoubleJump, Hammer
    unsafe:
      Dash, Sword  # pogo the projectile
      DoubleJump, Spear=1
      Grenade=1  # grenade jump
      Bash:
        Glide OR Bow=1                   # Glide jump OR Bow to aggro the tentacle (by hitting its mouth)
        WaterDash, Water OR Damage=20
        Glide, Water OR Damage=20
  pickup WestGlades.AbovePlantEX:
    moki:
      Bash, DoubleJump, Dash OR Glide
      Bash, Dash, Glide
      Water, Bash
      Launch
    gorlek:
      Bash, DoubleJump OR Dash OR Grenade=1
      Bash, WaterDash, Water OR Damage=20
      Bash, SentryJump=1, Glide
      SentryJump=1, Combat=Tentacle, DoubleJump OR Dash OR Water
      SentryJump=1, Combat=Tentacle, WaterDash, Damage=20
      SentryJump=2, Glide, Combat=Tentacle
    kii:
      Bash, Sword OR Hammer
      Bash, Glide, Water OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Damage=20
      DoubleJump, TripleJump, Sword  # reset jumps with sword
      Combat=Tentacle, DoubleJump, TripleJump, Hammer OR Spear=1
    unsafe:
      Bash, Glide OR Bow=1  # Glide jump OR Bow to aggro the tentacle (by hitting its mouth)
      DoubleJump, Sword  # Pogo the projectile to pass above the tentacle
      Combat=Tentacle, SwordSJump=1
      Combat=Tentacle, Glide, DoubleJump  # Glide jump
      Combat=Tentacle, DoubleJump, Spear=2  # extend jumps momentum with spears
      # DiveLaunch, DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Flap OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
  pickup WestGlades.LowerPoolEX:
    moki: Water
    kii:
      Damage=80
      WaterDash, Damage=40
      Damage=60, Launch OR DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Shuriken=1 OR Sentry=2
    unsafe:
      Damage=60, Bash, Bow=1  # aggro the tentacule
      Damage=60, Flash=1 OR Sentry=1

  conn WestGlades.LowerPool:
    moki:
      Water OR Launch
      Combat=Tentacle, DoubleJump, Dash OR Glide
      Bash, DoubleJump, Dash OR Glide
    gorlek:
      Bash, DoubleJump OR Dash OR Grenade=1
      DoubleJump, Damage=10 OR Combat=Tentacle
      Dash, Damage=10 OR Combat=Tentacle
      WaterDash, Damage=20, Bash
      SentryJump=1, Glide, Bash OR Damage=10 OR Combat=Tentacle
    kii:
      Damage=80, Damage=40
      WaterDash, Damage=20, Combat=Tentacle, Glide OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1 OR Damage=20
      WaterDash, Damage=20, Damage=10, Glide OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1 OR Damage=20
      Bash OR Combat=Tentacle OR Damage=10:
        Sword OR Hammer
        Glide, Shuriken=1 OR Flash=1 OR Sentry=1
      Bash, Glide, Damage=20
      DoubleJump, TripleJump, Sword  # Reset jumps on first tentacle
    unsafe:
      Bash
      DoubleJump, Sword  # Pogo the projectile to pass above the tentacle
  conn WestGlades.Center:  # Make sure it's not redundant with PastTown->LowerPool->Center
    unsafe:
      SwordSJump=2, Damage=20  # defeating the enemy and sword floating
      DoubleJump, TripleJump, Dash, Water OR Combat=Tentacle
  conn GladesTown.West:
    moki:
      Bash, DoubleJump OR Dash OR Glide
      DoubleJump, Dash, Glide
      Launch
    gorlek:
      Bash
      DoubleJump, TripleJump OR Dash
      DoubleJump, Damage=10, Glide OR Sword
      SwordSJump=1
      HammerSJump=1, DoubleJump OR Dash OR Glide OR Damage=10
    kii:  # @validator dboost paths don't actually require a dboost but you'll land in friendly spikes most of the time
      Sword, DoubleJump
      Sword, Dash, Spear=1 OR Shuriken=1 OR Damage=10
      Hammer, DoubleJump OR Dash
      Hammer, Glide, Damage=10, Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      HammerSJump=1
      DoubleJump, Glide  # verified damageless

anchor WestGlades.LowerPool at -642, -4112:  # The left edge of the first pool past glades
  pickup WestGlades.LeftOre:
    moki: Grapple, DoubleJump OR Dash OR Glide OR Launch
    gorlek:
      Grapple, Sword OR Hammer
      DoubleJump, TripleJump, Dash, Glide, Damage=10
      Bash, Grenade=1, DoubleJump, TripleJump
      Launch
    kii:
      DoubleJump, TripleJump, Bash OR Damage=20  # With Bash, use a tentacle projectile
      DoubleJump, TripleJump, Damage=10, Dash OR Glide OR Sword OR Hammer
      DoubleJump, Damage=20, Dash OR Sword OR Hammer OR Shuriken=2 OR Flash=2 OR Sentry=2
    unsafe:
      Bash, DoubleJump
      Grapple, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1 OR Damage=20
      Bash, Glide, SwordSJump=1
      DoubleJump, TripleJump, Glide OR Sword OR Hammer OR Damage=10
  pickup WestGlades.SwimEC:
    moki: Water
    kii:
      Damage=140
      WaterDash, Damage=60
  pickup WestGlades.LowerPoolEX:  # Only dirty swims. Clean Water is solving through the PastTown connection
    kii:
      Damage=60, DoubleJump OR Dash OR Glide OR Launch OR Bash OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1 OR Damage=20
      WaterDash, Damage=40

  conn WestGlades.Center:
    moki:
      Bash, DoubleJump
      Launch
    gorlek:
      Bash, Dash OR Glide OR Sword OR Hammer
      Grapple, DoubleJump, TripleJump, Dash, Glide OR Sword
      SentryJump=1, DoubleJump
    kii:
      Bash, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Damage=10
      Grapple, DoubleJump, TripleJump, Dash OR Sword
      Grapple, DoubleJump, TripleJump, Glide, Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      Bash
      SwordSJump=2, Damage=20  # defeating the enemy and sword floating
      DoubleJump, TripleJump, Grapple, Hammer  # Upswing at the end of the glide
      WaterDash, DoubleJump  # I'm so sorry to whoever have to do it in a real seed https://discord.com/channels/116250700685508615/682188898100838440/847119511651483659
  conn WestGlades.PastTown:
    moki:
      Water OR Launch
      Combat=Tentacle, DoubleJump OR Dash OR Glide
      Bash, DoubleJump OR Dash OR Glide
    gorlek:
      Bash
      Combat=Tentacle, Sword OR Hammer
      Damage=10, DoubleJump OR Dash OR Glide OR Sword OR Hammer
    kii:  # Damage=30 is for one dboost in dirty water (20) + a dboost on the tentacle (10)
      Damage=20, Damage=30
      Combat=Tentacle, Spear=2 OR Shuriken=2 OR Blaze=2 OR Flash=2 OR Sentry=2
      Damage=30, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      WaterDash, Damage=30
      WaterDash, Combat=Tentacle, Damage=20

anchor WestGlades.Center at -612, -4083:  # At the middle room connecting upper and lower Glades
  refill Checkpoint

  pickup WestGlades.LeftOre:  # be sure it's not redundant with the paths from LowerPool
    kii:
      Glide, DoubleJump, TripleJump
      Glide, DoubleJump, Damage=10, Dash OR Sword OR Hammer OR Shuriken=2 OR Flash=2 OR Sentry=2
    unsafe:
      Glide, Damage=10, SwordSJump=1
      Glide, DoubleJump, Spear=2, Damage=10
  pickup WestGlades.RightOre:
    moki:
      Bash, DoubleJump OR Dash
      Launch
    gorlek:
      Bash, Glide OR Sword OR Hammer OR Grenade=1
      SentryJump=1, Dash
    kii:
      Bash, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1 OR Damage=20
      DoubleJump, TripleJump, Sword, Damage=10  # kill the tentacle while hitting it with sword to keep reseting your jumps
    unsafe:
      DoubleJump, Sword, Damage=10
      SentryJump=1  # pogo on tentacle
      Bash, Damage=10
  pickup WestGlades.LowerPoolEX:  # This path is strictly because of energy/health management
    kii:
      Damage=60
      WaterDash, Damage=40

  conn WestGlades.Upper:
    moki:
      Bash, DoubleJump OR Dash OR Glide OR Grenade=1
      Launch
    gorlek:
      Bash
      SentryJump=1, DoubleJump
    kii: DoubleJump, TripleJump, Sword, Damage=10  # kill the tentacle while hitting it with sword to keep reseting your jumps
  conn WestGlades.LowerPool:
    moki: Water OR Launch OR DoubleJump OR Dash OR Glide OR Bash
    gorlek: Sword OR Hammer OR Damage=20
    kii: Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
  conn WestGlades.PastTown:  # This connection is strictly because of energy/health management
    kii:
      Damage=30  # one dboost in dirty water (20) + a dboost on the tentacle (10)
      Combat=Tentacle, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1 OR Damage=20

anchor WestGlades.Upper at -618, -4054:  # At the sign that gives you directions to Wellspring, Reach, and Pools
  refill Checkpoint
  refill Health=1

  state LowerReach.BearSneezed:
    moki: Flap

  pickup WestGlades.UpperPoolEX:
    moki: Water
    unsafe:
      Damage=180
      WaterDash, Damage=80
  pickup WestGlades.RightOre:  # Be carefull it's not redundant with paths from WestGlades.Center
    moki:
      Glide, DoubleJump OR Dash
      DoubleJump, Dash
    gorlek:
      DoubleJump, TripleJump OR Sword OR Hammer
      Dash, Sword OR Hammer
      Glide, Combat=Tentacle, SentryJump=1
    kii:
      Sword OR Dash OR Sentry=6
      DoubleJump, Spear=2 OR Shuriken=2 OR Blaze=2 OR Flash=2 OR Sentry=2
      Glide, Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1
      Hammer, Combat=Tentacle, Shuriken=2 OR Flash=2 OR Sentry=2
    unsafe:
      Bash
      Glide  # Glide jump
      DoubleJump, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1

  conn WestGlades.Center: free
  conn LowerReach.Entry:
    moki: LowerReach.BearSneezed
  conn WestGlades.MillApproach:
    moki:
      Grapple, DoubleJump OR Dash OR Glide
      Bash OR Launch
      Water, WaterDash
    gorlek:
      Grapple  # grapple up to the second hook and drop down
      DoubleJump, TripleJump, Dash OR Glide OR Sword
      WaterDash, Damage=20
      SentryJump=1
    kii:
      Dash, DoubleJump, Glide OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Dash, Hammer, Shuriken
    unsafe:
      Grenade=1  # grenade jump
      Dash, DoubleJump, Blaze=1

anchor WestGlades.MillApproach at -703, -4064:  # At the ledge of the room opening up to Wellspring
  refill Checkpoint
  refill Health=1

  pickup OuterWellspring.SwimOre:
    moki, Water: Grapple OR WaterDash OR Launch
    gorlek, Water:
      Bash, Grenade=1          # stand on the spinny wheel and bash-grenade up
      SentryJump=1             # ooooor use a SentryJump
      DoubleJump, TripleJump   # ooooor just some regular jumps!
      DoubleJump, Sword OR Hammer  # oooooooooooor double jump then upslash
    kii, Water: DoubleJump, Spear=1 OR Flash=1 OR Sentry=1
    unsafe:
      Water, DoubleJump               # or just be a madman
      Water, Glide  # Glide jump

  conn WestGlades.ShrineArea:
    moki:
      Grapple, DoubleJump
      Grapple, Dash, Glide
      Bash, Grenade=1, DoubleJump
      Launch, Bash, Grenade=1
      Launch, DoubleJump OR Grapple
    gorlek:
      Grapple, Dash OR Glide OR Sword
      SentryJump=1, DoubleJump, TripleJump
      Launch
    kii:
      Grapple, Hammer OR Shuriken=1 OR Sentry=2
      Bash, Grenade=1  # Bash the mortar so you can reach your grenade from higher
    unsafe:
      Bash
      DoubleJump, TripleJump, Sword
  conn WestGlades.Upper:
    moki:  # realizing the semisolid not considered for moki
      Bash, DoubleJump OR Dash OR Glide OR Grenade=1
      Grapple, DoubleJump OR Dash OR Glide
      DoubleJump, Dash, Glide
      Launch
      Water, WaterDash
    gorlek:
      Water OR DoubleJump OR Dash OR Glide OR Sword OR Damage=20  # wall jump through the semisolid
      Hammer, Bash OR SwordSJump=1 OR Grapple
    kii:
      Bash OR Hammer OR Sentry=2
      Grapple, Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
    unsafe:
      Grenade=1, Sentry=1 OR Flash OR Blaze=1 OR Shuriken=1
  conn OuterWellspring.EntranceDoor:
    moki:
      Launch OR Water
      DoubleJump, Grapple
      DoubleJump, Dash OR Glide
      Dash, Glide
    gorlek:
      DoubleJump OR Dash
      Damage=20, Glide OR Sword
      Bash, Grenade=1, Glide OR Sword OR Damage=20
      Bash, Grenade=2
      SentryJump=2 OR SwordSJump=1  # Air stall with hammer or sword
      HammerSJump=1, Glide OR Damage=20
    kii:
      Sword
      Damage=20, Hammer OR Sentry=2 OR Damage=20
      Bash, Grenade=1, Hammer OR Sentry=2
      Hammer, Glide OR Grapple OR Shuriken=1 OR Flash=1 OR Sentry=1
      Glide, Grapple OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      Bash, Grenade=1, Grapple  # requires holding up
      Glide
      Grenade=2, Hammer  # grenade jumps and hammer floats
  conn OuterWellspring.RightWallMidpoint:  # Make sure it's not redundant with paths from OuterWellspring.AboveEntranceDoor
    kii:
      Grapple, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Grapple, Bash, Grenade=1
  conn PoolsApproach.MillPathCheckpoint:
    moki, Water:
      Damage=15, Grapple, DoubleJump, Dash OR Glide  # you can make this path harder on yourself by not using the wall, but really the fail case is you taking 15 damage
      Grapple, WaterDash OR Launch
      Launch, DoubleJump, Dash
      Launch, Glide
    gorlek, Water:  # hopefully didn't go too far for gorlek?
      Grapple, DoubleJump OR Dash OR Bash OR Damage=15  # non-damage variants pretty risky
      WaterDash, DoubleJump, TripleJump
      WaterDash, Dash OR Glide OR Sword OR Damage=15
      Bash, DoubleJump, TripleJump
      Bash, Dash OR Glide OR Sword OR Damage=15
      Launch, DoubleJump OR Dash OR Bash OR WaterDash OR Sword OR Hammer OR Damage=15
    kii, Water:
      WaterDash, Bash
      WaterDash, DoubleJump OR Hammer OR Sentry=2
      Bash, DoubleJump OR Hammer OR Sentry=2
      Launch, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe:
      Water, Launch
      Water, Bash, Hammer OR DoubleJump
      Water, Grapple, Sword
      Water, WaterDash, DoubleJump
      Water, Sword, DoubleJump OR Dash OR Glide OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1  # Pogo the tentacle's projectile

anchor WestGlades.ShrineArea at -664, -4026:
  refill Checkpoint

  pickup WestGlades.ShrineHC:
    moki:
      Grapple, DoubleJump, Dash OR Glide
      Bash, Grenade=1
      Launch
    gorlek:
      Grapple, DoubleJump, TripleJump
      SentryJump=1
    kii:
      Bash  # Use the ennemies from the shrine
      DoubleJump, TripleJump
      Grapple, DoubleJump, Hammer OR Sword OR Sentry=2
    unsafe:
      Grapple, DoubleJump, Shuriken=2
      Grapple, Hammer, Dash                         # upswing after grapple plant, regaining dash when dashing into the corner/ceiling

  conn GladesShrine: free
  conn WestGlades.MillApproach: free

anchor GladesShrine at -635, -4020:
  refill Full

  state WestGlades.CombatShrineCompleted:
    moki, Regenerate, Combat=2xCrab+Bee+3xEnergyRefill+Hornbug+2xTentacle+3xEnergyRefill+2xSpinCrab+2xBee+3xEnergyRefill+2xMantis+Tentacle+SpinCrab:
      Damage=65                     # the crabs are terrifying!
      Damage=55, DoubleJump OR Dash  # these can help
      Damage=30, Launch             # if you're op, nothing's terrifying
    unsafe: Combat=2xCrab+Bee+3xEnergyRefill+Hornbug+2xTentacle+3xEnergyRefill+2xSpinCrab+2xBee+3xEnergyRefill+2xMantis+Tentacle+SpinCrab

  pickup WestGlades.CombatShrine:
    moki: WestGlades.CombatShrineCompleted

region OuterWellspring:
  moki: Danger=25
  gorlek: free
  kii: free
  unsafe: free

anchor OuterWellspring.EntranceDoor at -856, -4058:  # Outside the door where you enter the first room
  refill Checkpoint
  refill Health=1:
    gorlek: Combat=Slug
    unsafe: free  # barely out of sight, also past an enemy...
  refill Energy=3:
    unsafe: BreakCrystal  # pretty far to the left

  # ommited a lot of paths in moki including most bash-related paths because of how complex this place is to navigate (as in, more paths were omitted than were taken into moki...)
  state OuterWellspring.EntranceDoorOpen:
    moki, BreakWall=16:
      DoubleJump, Dash OR Glide
      Dash, Glide
      Grapple, Bash, DoubleJump OR Dash
      Grapple, Glide
      Bash, Grenade=1, DoubleJump OR Dash OR Glide
      Launch
    gorlek, BreakWall=16:
      DoubleJump, TripleJump OR Sword OR Hammer
      Dash, Sword OR Hammer OR Damage=15
      Grapple, Sword
      Grapple, Damage=15, DoubleJump OR Hammer
      Bash, DoubleJump OR Dash OR Glide OR Sword  # different ways to solve using the many bash targets around
      SwordSJump=1
      HammerSJump=1, Damage=15
    unsafe, BreakWall=16:
      Damage=15, Sword
      Dash OR Bash OR Glide

  pickup OuterWellspring.EntranceRoofEX:
    moki:
      DoubleJump, Grapple, Dash OR Glide
      Grapple, Launch
    gorlek:
      Grapple, DoubleJump, TripleJump
      Grapple, Dash, Sword OR Hammer  # upswing into the pickup
      Launch, Bash, Grenade=1  # other launch paths are covered from the anchor above
  pickup OuterWellspring.WheelEX:
    moki: OuterWellspring.EntranceDoorOpen
  pickup OuterWellspring.BasementEC:
    moki:
      Water:  # mirror of the entrancedooropen paths
        DoubleJump, Dash OR Glide
        Dash, Glide
        Grapple, Bash, DoubleJump OR Dash
        Grapple, Glide
        Bash, Grenade=1, DoubleJump OR Dash OR Glide
        Launch
      OuterWellspring.EntranceDoorOpen  # casual strat I guess?
    gorlek:
      Damage=15, DoubleJump OR Dash OR Grapple OR Glide OR Sword OR Hammer  # go around the moss wheel
      Water:  # mirror of the entrancedooropen paths
        DoubleJump, TripleJump OR Sword OR Hammer
        Dash, Sword OR Hammer OR Damage=15
        Grapple, Sword
        Grapple, Damage=15, DoubleJump OR Hammer
        Bash, DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Damage=15  # different ways to solve using the many bash targets around
        SwordSJump=1
        HammerSJump=1, Damage=15
      Bash, Glide, DoubleJump, TripleJump OR Grapple  # bashglide
      Bash, DoubleJump, TripleJump, Grapple
      Bash, Launch, DoubleJump OR Glide
  pickup OuterWellspring.LifeHarvestShard:
    moki, BreakWall=20:
      DoubleJump, Bash
      Launch
    gorlek, BreakWall=20:
      SentryJump=1, DoubleJump OR Dash OR Glide OR Damage=15
      Bash, Dash  # other options are somewhere on the border between difficulties
      Bash, Grenade=1  # this would be in moki if the camera didn’t put ori right at the top of the screen, making it hard to aim/catch the grenade
    unsafe, BreakWall=20:
      Bash, Hammer  # not gorlek due to a non trivial combo attack
      DoubleJump, TripleJump
  pickup OuterWellspring.SwimEX:
    moki: Water

  conn InnerWellspring.EntranceDoor:
    moki: OuterWellspring.EntranceDoorOpen
  conn OuterWellspring.AboveEntranceDoor:
    moki: DoubleJump, Grapple  # save all the other ways for gorlek...
    gorlek:
      Grapple                                         # Grapple up using the right hanging plant
      Launch                                          # Launch up using left side (possible with either wheel state)
      SentryJump=1, DoubleJump, TripleJump            # Sentry Jump up to the wheel on the left side of entrance door, then jump across and use sword or hammer stall to finish
      Bash, Grenade=2, DoubleJump OR Dash             # Go up the left side; works for either wheel state
      Bash, Grenade=1, Damage=15, DoubleJump OR Dash  # As above but damage boost to get to the pole
      Bash, Grenade=3, Glide OR Damage=15             # As above but Glide needs an extra bashnade in case the wheel is down
    unsafe:
      SentryJump=1, Bash, Grenade=1                   # Throw the greande, sentry jump to it, then bash off it, on right side (do a small lure on bottom slime to get to platform)
      SentryJump=1, Damage=15, Dash OR Glide          # Slightly different methods needed for hammer vs sentry, hammer is similar to above, sword goes left side
      SwordSJump=2
      HammerSJump=2, Dash OR Glide OR Damage=15
  conn OuterWellspring.WestDoor:  # going directly up the left wall
    gorlek:
      Bash, Grenade=2, DoubleJump, Dash OR Glide
      Bash, Grenade=3, DoubleJump
      Launch
  # connections using the left wall wheel would be pointless
  conn WestGlades.MillApproach:
    moki:
      DoubleJump, Dash, Glide
      Bash, Grenade=1, DoubleJump, Dash OR Glide
      Bash, Grenade=1, Dash, Glide
      Bash, Grenade=2, DoubleJump OR Dash OR Glide
      Water OR Launch
    gorlek:
      DoubleJump, TripleJump OR Dash OR Glide OR Sword
      DoubleJump, Hammer, Damage=20
      Glide, Damage=20
      SwordSJump=2
      HammerSJump=1, Glide
      HammerSJump=2, DoubleJump OR Dash OR Glide OR Damage=20
      Bash, Grenade=1, Glide
      Bash, Grenade=2, Sword OR Damage=20
    unsafe:
      Bash, Glide
      Bash, DoubleJump, Sword
      Bash, DoubleJump, Hammer, Damage=20
      Bash, SentryJump=1, DoubleJump OR Dash

# checkpoint at -978, -4042

anchor OuterWellspring.AboveEntranceDoor at -837, -4026:  # at the crystal above the entrance door
  refill Energy=3:
    moki: BreakCrystal

  pickup OuterWellspring.EntranceRoofEX:
    gorlek: Launch, DoubleJump OR Dash OR Glide OR Sword OR Hammer
  pickup OuterWellspring.RightWallEC:
    gorlek: BreakWall=20, DoubleJump, TripleJump, Damage=15  # go above the wheel to the right, damage not mandatory

  conn OuterWellspring.EastDoor:  # going to the right
    moki:
      Grapple, DoubleJump, Dash OR Glide
      Launch
    gorlek: Grapple, DoubleJump, TripleJump OR Sword OR Hammer
    unsafe:
      Grapple
      DoubleJump, TripleJump, Damage=15, Sword OR Hammer
      SentryJump=1, DoubleJump, Damage=15, Dash OR Glide
      SentryJump=1, Bash, Grenade=1, DoubleJump
      SentryJump=2, Bash, Grenade=1, Glide, Dash
  conn OuterWellspring.WestDoor:  # going to the left
    moki:
      Grapple, DoubleJump, Dash
      Grapple, Glide
    gorlek:
      Grapple, DoubleJump OR Dash OR Glide OR Sword OR HammerSJump=1 OR Damage=15  # depending on the spikes you hit, you may take 10 or 15 damage oriShrug
      Grapple, Bash, Grenade=1
      DoubleJump, TripleJump  # climb the far left wall
      Bash, Grenade=1, DoubleJump, Dash, Glide
      Bash, Grenade=2, DoubleJump, Dash OR Glide
      Bash, Grenade=3, DoubleJump
  conn OuterWellspring.RightWallMidpoint:
    moki: Grapple
    gorlek:
      DoubleJump, Bash OR Glide
      DoubleJump, TripleJump, Damage=15  # go above the wheel to the right, damage not mandatory
      DoubleJump, Dash, Sword
      Bash, Grenade=1, Glide
      Bash, Grenade=2, Dash OR Sword
      SentryJump=2, Glide
      SwordSJump=2, DoubleJump OR Dash
      SentryJump=1, Dash, Glide
    unsafe: Glide
  conn WestGlades.MillApproach:
    gorlek: Grapple OR Glide
  conn OuterWellspring.EntranceDoor: free

anchor OuterWellspring.WestDoor at -892, -3992:  # Outside the door where you exit the first room
  refill Checkpoint

  # the wheel is only a shortcut, at least in moki doesn't open up anything new
  state OuterWellspring.WestDoorBlueMoonFree:
    moki: BreakWall=3, Launch
    gorlek, BreakWall=3, Bow OR Spear OR Shuriken OR Grenade OR Blaze OR Grapple:  # // TODO account for this kind of syntax
      Bash, Grenade=1
      SentryJump=1
      Grapple, Damage=15, DoubleJump, TripleJump OR Dash  # go up on the left to get into range and then grapple to the corruption

  pickup OuterWellspring.HiddenHC:
    moki, OuterWellspring.WestDoorBlueMoonFree:
      Grapple, DoubleJump, Dash OR Glide
      Grapple, Dash, Glide
      Grapple, Launch
    gorlek:
      OuterWellspring.WestDoorBlueMoonFree:
        Grapple, DoubleJump, TripleJump OR Damage=15
        Grapple, Damage=15, Dash OR Glide
      Grapple, Bash, Grenade=1, DoubleJump, TripleJump OR Glide OR Damage=15
      Grapple, Bash, Grenade=1, Damage=15, Dash OR Glide
      Grapple, SentryJump=1, DoubleJump, TripleJump OR Glide OR Damage=15
      Grapple, SentryJump=1, Damage=15, Dash OR Glide
      Bash, Grenade=1, Launch
      SentryJump=1, Launch
    unsafe:
      Bash, Grenade=1, SentryJump=1, DoubleJump, TripleJump
  pickup OuterWellspring.EntranceRoofEX:
    moki: DoubleJump, Launch, Dash OR Glide

  # this tokk disappears after the needle quest
  conn InnerWellspring.WestDoor:
    moki: InnerWellspring.MiddleDoorsOpen
  conn OuterWellspring.EastDoor:
    moki:
      Bash, Grenade=1, DoubleJump, Dash OR Glide
      Bash, Grenade=1, Launch
      Launch, DoubleJump OR Dash OR Glide
      OuterWellspring.WestDoorBlueMoonFree, Grapple, DoubleJump, Dash OR Glide
      OuterWellspring.WestDoorBlueMoonFree, Grapple, Launch
    gorlek:
      Bash, Grenade=1, DoubleJump, TripleJump OR Sword OR Hammer
      SentryJump=1, DoubleJump
      Launch, Sword OR Hammer OR Damage=15
      OuterWellspring.WestDoorBlueMoonFree, Grapple, DoubleJump, TripleJump OR Sword OR Hammer
      Grapple, Damage=15, DoubleJump, TripleJump OR Dash  # mirror from breaking the blue moon free since you don't need wall breakage to perform this
  conn OuterWellspring.AboveEntranceDoor:
    moki:
      Grapple, DoubleJump OR Dash OR Glide
      Bash, Grenade=1, DoubleJump OR Dash OR Glide
      DoubleJump, Dash, Glide
      Launch
  conn OuterWellspring.EntranceDoor: free

anchor OuterWellspring.EastDoor at -814, -3973:  # Outside the door leading to the spin puzzle
  refill Checkpoint

  state OuterWellspring.WestDoorBlueMoonFree:
    moki, BreakWall=3, Bow OR Spear OR Grenade:
      DoubleJump OR Dash OR Glide
      Bash, Grenade=1
      InnerWellspring.TopDoorOpen, Grapple
    gorlek: BreakWall=3  # each weapon has its way of dealing with the spikes below

  quest OuterWellspring.TheLostCompass:
    moki: InnerWellspring.NeedleQI

  pickup OuterWellspring.RightWallEC:
    moki, BreakWall=20:
      DoubleJump, Dash
      Glide OR Launch
      Grapple, DoubleJump OR Dash
      Grapple, Bash, Grenade=1
    gorlek:
      BreakWall=20, DoubleJump, TripleJump
      DoubleJump, Sword
      Grapple, Sword OR Hammer
      BreakWall=20, Bash, Grenade=1, DoubleJump OR Dash
      Bash, Grenade=1, Sword OR Hammer
      BreakWall=20, Bash, Grenade=2
    unsafe: DoubleJump, Hammer, Damage=15

  conn InnerWellspring.EastDoor:
    moki: InnerWellspring.MiddleDoorsOpen
  conn OuterWellspring.AboveWestDoor:
    moki:
      InnerWellspring.TopDoorOpen, Grapple OR Launch
      InnerWellspring.TopDoorOpen, Bash, Grenade=1, DoubleJump
      Bash, Grenade=1, Launch
    gorlek:
      InnerWellspring.TopDoorOpen:
        SwordSJump=1
        HammerSJump=1, DoubleJump OR Dash OR Glide OR Damage=10
        Bash, Grenade=1, Dash OR Glide OR Sword
        Bash, Grenade=1, Hammer, Damage=10
      Bash, Grenade=1, DoubleJump, TripleJump
      Bash, Grenade=1, Grapple
  conn OuterWellspring.WestDoor:
    moki: DoubleJump OR Dash OR Launch
    gorlek: Glide OR Sword OR Hammer
    unsafe: free
  conn OuterWellspring.TrialApproach:
    moki: Grapple OR Launch
    gorlek:
      DoubleJump, TripleJump, Dash OR Glide OR Sword OR Hammer OR Damage=10
      DoubleJump, TripleJump, Bash, Grenade=1
      DoubleJump, Dash, Glide OR Sword OR Hammer OR Damage=10
      DoubleJump, Dash, Bash, Grenade=1
      DoubleJump, Glide
      SentryJump=2  # follow up the second sentryjump with a weapon hover
      Bash, Grenade=2, DoubleJump OR Dash OR Glide OR Sword OR Hammer
  conn OuterWellspring.RightWallMidpoint:
    moki: DoubleJump OR Dash OR Glide OR Grapple OR Launch
    gorlek:
      Sword OR Hammer
      Bash, Grenade=1
  conn OuterWellspring.AboveEntranceDoor: free
  conn WestGlades.MillApproach:
    gorlek:
      DoubleJump OR Dash OR Sword OR Damage=20
      Bash, Grenade=1

anchor OuterWellspring.AboveWestDoor at -866, -3949:  # on the platform arcing over west door
  refill Energy=3:
    moki: BreakCrystal

  pickup OuterWellspring.HiddenHC:
    moki:
      Grapple, DoubleJump, Dash OR Glide
      Grapple, Dash, Glide
      Launch, DoubleJump OR Dash OR Grapple OR Glide
    gorlek:
      Grapple, DoubleJump, TripleJump OR Damage=15
      Grapple, Damage=15, Dash OR Glide
      DoubleJump, TripleJump, Dash, Glide OR Sword
      DoubleJump, TripleJump, Glide, Damage=15
      Launch, Sword OR Damage=15

  conn OuterWellspring.TopDoor:
    moki:
      Grapple OR Launch
      Bash, Grenade=1
    gorlek:
      Bash OR SentryJump=1
      InnerWellspring.TopDoorOpen, DoubleJump
  conn OuterWellspring.WestDoor:
    moki: Combat=Miner OR DoubleJump OR Dash OR Grapple OR Glide OR Launch
    gorlek: Sword OR Hammer OR Damage=15
  conn OuterWellspring.EastDoor:  # paths with top door open seem rather pointless?
    moki:
      DoubleJump, Dash
      Glide
    gorlek:
      Damage=15, DoubleJump OR Dash OR Sword OR Hammer
      DoubleJump, TripleJump
      Dash, Sword OR Hammer
  conn OuterWellspring.AboveEntranceDoor: free

anchor OuterWellspring.TopDoor at -836, -3927:  # Outside the door leading to the teleporter
  state OuterWellspring.TrialActivation:  # Since you have to reach this place again in a race to get an advantage, only paths possible during a trial are meaningful
    moki: Grapple, DoubleJump, Dash OR Glide
    gorlek: Grapple, Dash, Glide

  pickup OuterWellspring.UltraGrappleShard:
    moki:
      Grapple, DoubleJump, Dash OR Glide
      Bash, Grenade=1
      Launch
    gorlek:
      SentryJump=1, DoubleJump OR Dash OR Glide  # generous extra abilities
      Grapple, DoubleJump, TripleJump OR Sword
      Grapple, Dash, Sword
      Grapple, Glide

  conn InnerWellspring.Teleporter:
    moki: InnerWellspring.TopDoorOpen
  conn OuterWellspring.EastDoor: free
  conn OuterWellspring.AboveWestDoor: free

# checkpoint at -973, -3949
# checkpoint at -969, -3910
# checkpoint at -902, -3895

anchor OuterWellspring.RightWallMidpoint at -746, -4019:  # Next to OuterWellspring.RightWallOre
  pickup OuterWellspring.RightWallOre: free

  conn WestGlades.MillApproach:
    moki: Grapple OR Glide  # Others are redundant with EntranceDoor
    gorlek:
      Sword OR Damage=20
      HammerSJump=1, DoubleJump OR Dash OR Damage=20
      Bash, Grenade=1, DoubleJump OR Dash OR Sword OR Damage=20
    unsafe: DoubleJump OR Dash OR Hammer
  conn OuterWellspring.EntranceDoor:
    moki: Water OR Glide OR Launch  # Grapple paths are redundant with AboveEntranceDoor
    gorlek:
      DoubleJump, TripleJump OR Dash OR Sword OR Hammer
      Dash, Sword OR Hammer
      Damage=20 OR SentryJump=1
      Bash, Grenade=1
    unsafe: DoubleJump OR Dash OR Hammer
  conn OuterWellspring.AboveEntranceDoor:
    moki:
      Grapple, DoubleJump OR Dash OR Glide OR Launch
      Launch, DoubleJump OR Dash OR Glide
    gorlek:  # Launch is redundant with EntranceDoor
      Grapple
      Bash, Grenade=1, Glide
      Bash, Grenade=1, DoubleJump, TripleJump OR Dash OR Sword OR Hammer
      Bash, Grenade=1, Dash, Sword OR Hammer
      SentryJump=1, Glide
      SwordSJump=1, DoubleJump, TripleJump OR Dash  # Weapon hover
      HammerSJump=1, DoubleJump, TripleJump, Dash  # Weapon hover
    unsafe:
      DoubleJump, TripleJump, Dash
      Bash, Grenade=1, Sword OR Hammer OR DoubleJump
      Launch
  conn OuterWellspring.TrialApproach:  # no moki path because the camera makes the connection hard to see
    gorlek: Grapple, Combat=Bee OR Bash  # Launch is redundant with EntranceDoor -> AboveEntranceDoor -> EastDoor

anchor OuterWellspring.TrialApproach at -727, -3961:  # at the ledge going towards the trial room
  refill Checkpoint

  pickup OuterWellspring.RightWallEX:
    moki:
      Grapple, DoubleJump, Dash OR Glide
      DoubleJump, Bash, Grenade=1
      Launch
    gorlek:
      Grapple, DoubleJump, TripleJump
      SentryJump=1, DoubleJump OR Dash OR Glide
      Bash, Grenade=1, Dash OR Glide
    unsafe:
      Grapple, Dash, Glide  # Might be a bit tight for gorlek
  pickup OuterWellspring.RightWallEC:
    moki, BreakWall=20:
      DoubleJump, Dash
      Glide OR Launch
      Grapple, DoubleJump OR Dash
    gorlek:
      BreakWall=20, DoubleJump OR Dash
      Sword OR Hammer

  conn OuterWellspring.TrialRoom:
    moki:
      Grapple, DoubleJump OR Dash OR Glide
      Launch
    gorlek:
      Grapple
      SentryJump=1
      Bash, Grenade=1
  conn OuterWellspring.EastDoor:
    moki:
      Grapple, DoubleJump OR Dash OR Glide
      Launch
    gorlek:
      Grapple OR Glide
      Bash, Grenade=1, DoubleJump OR Dash OR Sword OR Hammer
      DoubleJump, TripleJump OR Dash OR Sword
      DoubleJump, Hammer, Damage=15
      SentryJump=1, DoubleJump OR Dash
  conn OuterWellspring.AboveEntranceDoor:
    moki: DoubleJump OR Dash OR Glide OR Grapple OR Launch
    gorlek:
      Sword OR Hammer
      Bash, Grenade=1
      SentryJump=1
      Damage=15
  conn OuterWellspring.RightWallMidpoint:
    moki: DoubleJump OR Dash OR Glide OR Grapple OR Launch
    gorlek: free

anchor OuterWellspring.TrialRoom at -684, -3947:  # checkpoint on the way to trial start
  refill Checkpoint
  refill Health=1
  refill Energy=1:
    moki: BreakCrystal

  conn OuterWellspring.TrialStart:
    moki:
      Grapple, DoubleJump
      Launch
    gorlek:
      Dash OR Glide
      DoubleJump, Sword OR Hammer
    unsafe: DoubleJump
  conn OuterWellspring.TrialApproach: free

anchor OuterWellspring.TrialStart at -665, -3937:
  refill Checkpoint

  pickup OuterWellspring.TrialOre: free
  pickup OuterWellspring.SpiritTrial:
    moki: OuterWellspring.TrialActivation, DoubleJump, Dash, Grapple
    gorlek: OuterWellspring.TrialActivation, Dash, Grapple, Glide

  conn OuterWellspring.TrialRoom:
    moki:
      DoubleJump, Dash OR Glide
      Grapple, Glide
      Launch
    gorlek:
      DoubleJump, TripleJump OR Sword
      Dash, Sword OR Hammer
      Glide
      Grapple, DoubleJump OR Dash OR Sword OR Hammer

region InnerWellspring:
  moki: Danger=25
  gorlek: free
  kii: free
  unsafe: free

anchor InnerWellspring.EntranceDoor at -1263, -3952:  # Inside the door where you enter the first room
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  state InnerWellspring.ThreeWheels:
    moki: BreakWall=3

  pickup InnerWellspring.ThreeWheelsEX:
    moki:
      Bash, Grenade=1
      Launch
      InnerWellspring.ThreeWheels
    gorlek:
      DoubleJump, TripleJump
      SentryJump=1
    unsafe:
      Grenade=1
  pickup InnerWellspring.WaterSwitchEX:
    moki: Water, WaterDash
    unsafe: WaterDash, Damage=40, Damage=60

  conn OuterWellspring.EntranceDoor: free
  conn InnerWellspring.ThornShardArea:
    moki:
      Grapple, DoubleJump OR Dash OR Glide
      InnerWellspring.ThreeWheels, DoubleJump OR Dash OR Glide
      DoubleJump, Bash, Grenade=1
      Launch
    gorlek:
      Grapple, Sword OR Hammer
      InnerWellspring.ThreeWheels, Sword OR Hammer
      SentryJump=1  # sentry jump on right side, then use sword/hammer to reach platform
      DoubleJump, TripleJump
    kii:
      Bash, Grenade=1, Dash OR Glide OR Sword OR Hammer  # Bash grenade up right side, climb on the first wheel to reach yourgrenade (whih isn't gorlek), jump to left side vines, use abilities to reach platform
  conn InnerWellspring.DrainRoom:
    moki:
      DoubleJump OR Dash OR Glide OR Launch
      InnerWellspring.ThreeWheels, Grapple
      InnerWellspring.ThreeWheels, Bash, Grenade=1
    gorlek:
      Sword OR Hammer
      Bash, Grenade=1, Damage=15
      InnerWellspring.ThreeWheels, Damage=15
    kii:
      Grapple, Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
      Damage=15, Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1  # possible damageless but InnerWellspring.ThreeWheels makes it way harder
      InnerWellspring.ThreeWheels, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Shuriken=2 OR Blaze=3 OR Flash=2 OR Sentry=2
    unsafe:
      Bash, Grenade=1
      InnerWellspring.ThreeWheels
  conn InnerWellspring.ShortcutLever:
    moki:
      Grapple, DoubleJump OR Dash OR Glide
      Launch
    gorlek:
      DoubleJump, TripleJump, Damage=15  # bit tricky
      Grapple, Damage=15  # bit tricky
      Grapple, Sword OR Hammer
    kii: Grapple
    unsafe:
      InnerWellspring.ThreeWheels, Damage=30, DoubleJump
      InnerWellspring.ThreeWheels, Damage=45, Dash OR Glide OR Sword OR Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1
      InnerWellspring.ThreeWheels, Damage=60, Spear=1 OR Blaze=1

# checkpoint at -1336, -3943

anchor InnerWellspring.ThornShardArea at -1317, -3933:  # on top of the wall at the left of the entrance
  refill Checkpoint

  pickup InnerWellspring.ThornShard: free
  pickup InnerWellspring.ThornEX:  # Having Clean Water change the position of the grapplable plant. Make sure it solves with both states?
    moki:
      Grapple, DoubleJump, Dash OR Glide
      Launch
    gorlek:
      DoubleJump, TripleJump, Damage=15
      SentryJump=1, DoubleJump, TripleJump, Dash OR Glide
      SentryJump=1, Damage=15, DoubleJump, Dash OR Glide OR TripleJump
      SentryJump=1, Damage=15, Dash, Glide
      Grapple, Damage=15, DoubleJump OR Dash OR Glide OR Sword
      Grapple, DoubleJump, TripleJump OR Sword OR Hammer
      Grapple, Dash, Glide OR Sword OR Hammer
    kii:
      Bash, Grenade=1, Dash OR DoubleJump OR Glide OR Shuriken=1 OR Flash=1 OR Sentry=1
      Grapple, Dash OR DoubleJump  # with djump, walljump on the wall above the grappable plant
      Grapple, Sword, Glide OR Hammer OR Spear=1 OR Shuriken=1
      Grapple, Hammer, Shuriken=1 OR Sentry=2 OR Damage=15
      Dash, DoubleJump, TripleJump OR Glide OR Sword OR Hammer OR Shuriken=1 OR Sentry=2 OR Damage=15
      Dash, Damage=15, Sword OR Hammer
      Dash, Glide, Damage=15, Shuriken=1 OR Flash=1 OR Sentry=1
      Dash, Sentry=2, Damage=15
    unsafe:
      SwordSJump=1, Damage=15
      Grapple, Sword
      Dash, Shuriken=2, Damage=15

  conn InnerWellspring.EntranceDoor: free
  conn InnerWellspring.ShortcutLever:  # for fully rspawn. Make sure it's not redundant with paths from EntranceDoor
    unsafe:
      Damage=30, DoubleJump
      Damage=45, Dash OR Sword OR Hammer OR Shuriken=3 OR Flash=3 OR Sentry=3
      Damage=60, Spear=3

anchor InnerWellspring.ShortcutLever at -1264, -3907:  # At the lever on top of the entrance door
  state InnerWellspring.ShortCutWheel: free

  # InnerWellspring.ShortcutWheelEX paths are redundant with InnerWellspring.WestDoor

  conn InnerWellspring.EntranceDoor:
    moki: Grapple OR Launch OR DoubleJump
    gorlek: free
  conn InnerWellspring.WestDoor:
    moki, InnerWellspring.ShortCutWheel:
      DoubleJump, Dash OR Glide
      Dash, Glide
      Launch
    gorlek, InnerWellspring.ShortCutWheel:
      DoubleJump OR Dash  # pretty tight
      Damage=15, Glide OR Sword OR Hammer
    kii, InnerWellspring.ShortCutWheel:
      Sword OR Damage=15
      Hammer, Glide OR Sword OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Glide, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe, InnerWellspring.ShortCutWheel:
      Hammer OR Sentry=2  # friendly spikes when you slide off the wheel
      Shuriken=2

anchor InnerWellspring.DrainRoom at -1167, -3946:  # Left of the water you can drain
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  state InnerWellspring.DrainRoomBottomWheel:  # @validator I added that state for DrainRoomExit->DrainRoom connection. Previous difficulty didn't deemed pathfinding that state was worth it so I'm not pathfinding it for kii either
    moki: InnerWellspring.ThreeWheels, BreakWall=16

  conn InnerWellspring.EntranceDoor:
    moki:
      DoubleJump OR Dash OR Grapple OR Glide OR Launch
      Bash, Grenade=1
    gorlek: free
  conn InnerWellspring.DrainRoomCenter:
    moki:
      DoubleJump, Glide
      Grapple OR Launch
      Glide, Bash, Grenade=2
      InnerWellspring.DrainRoomBottomWheel, DoubleJump
      InnerWellspring.DrainRoomBottomWheel, Dash, Bash, Grenade=1
      Water, DoubleJump  # if you drained the water, you can use the bottom of the wheel instead
      Water, WaterDash, Dash, Bash, Grenade=1  # if you drained the water, you can use the bottom of the wheel instead
    gorlek:
      # if you have a weapon here, you can break the three wheels free. Redundant paths without the three wheels state were removed.
      DoubleJump, TripleJump OR Dash OR Sword
      Dash, Glide
      Glide, Damage=15
      Bash, Grenade=1, DoubleJump OR Glide
      SentryJump=1, Glide
      InnerWellspring.DrainRoomBottomWheel:
        Dash
        Damage=15, Sword OR Hammer
        Bash, Grenade=1, Sword OR Hammer
        SentryJump=1
      Water, Dash  # if you drained the water, you can use the bottom of the wheel instead
      Water, Bash, Grenade=4  # if you drained the water, you can use the bottom of the wheel instead
    kii:
      DoubleJump, Blaze=5 OR Sentry=3
      Dash, Blaze=3 OR Sentry=2
      Glide, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      InnerWellspring.DrainRoomBottomWheel, Sword OR Hammer OR Shuriken=4 OR Sentry=4
      Damage=60, DoubleJump OR Dash  # dboost in dirty water water. If you drained the water, you can use the bottom of the wheel instead
      Damage=60, Bash, Grenade=3  # dboost in dirty water water. If you drained the water, you can go bellow the wheel instead
      WaterDash, Damage=40, DoubleJump OR Dash  # dboost in dirty water water. If you drained the water, you can use the bottom of the wheel instead
      WaterDash, Damage=40, Bash, Grenade=4  # dboost in dirty water water. If you drained the water, you can use the bottom of the wheel instead
      InnerWellspring.DrainLever:  # @validator confused about why no paths are using this state in gorlek/moki
        DoubleJump OR Dash
        Bash, Grenade=3
      # if you have a non-energy weapon here, you can break the three wheels free. Redundant paths without the three wheels state were removed.
      # Sword, InnerWellspring.DrainLever OR Dash OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
      # Hammer, DoubleJump OR Dash OR Sentry=3
      # Hammer, InnerWellspring.DrainLever, Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      DoubleJump  # climb the right wall
      Glide
      Sword, Spear=1 OR Blaze=1
      Shuriken=2, Dash OR Hammer
      Damage=15, Dash OR Sword
      WaterDash, Bash, Grenade=3, BreakWall=10, Water OR Damage=20  # if you drained the water, you can go through through the drained room instead
      WaterDash, Bash, Grenade=2, Damage=15, BreakWall=10, Water OR Damage=20  # if you drained the water, you can go through through the drained room instead
      InnerWellspring.DrainRoomBottomWheel, Shuriken=3 OR Blaze=5 OR Flash=3 OR Sentry=3
      InnerWellspring.DrainRoomBottomWheel, Bash, Grenade=2  # not hard, but grenades can vanish on rotating objects sometimes
  conn InnerWellspring.DrainAreaEntrance:
    moki: InnerWellspring.DrainLever, DoubleJump OR Dash OR Grapple OR Glide OR Launch
    gorlek, InnerWellspring.DrainLever:
      Sword OR Hammer OR Damage=15
      Bash, Grenade=1
    kii: InnerWellspring.DrainLever
  conn InnerWellspring.DrainAreaExit:
    gorlek, ShurikenBreak=10:
      # if you have a weapon here, you can break the three wheels free. Redundant paths without the three wheels state were removed.
      # cross the gap going over
      Grapple OR Glide OR Launch
      DoubleJump, TripleJump
      Bash, Grenade=1, DoubleJump, Dash
      InnerWellspring.DrainLever:  # use the bottom of the wheel, don't have to free it
        DoubleJump OR Dash
        Bash, Grenade=2
      InnerWellspring.DrainRoomBottomWheel, DoubleJump OR Dash OR Sword OR Hammer  # DrainRoomBottomWheel state is free enough that alternatives don't seem worth noting
      Water, DoubleJump OR Dash  # if you drained the water, you can use the bottom of the wheel instead
      Water, Bash, Grenade=1, Damage=15  # if you drained the water, you can go through through the drained room instead
      Water, Bash, Grenade=2  # if you drained the water, you can go through through the drained room instead
    kii, ShurikenBreak=10:
      DoubleJump, Blaze=4 OR Sentry=3
      Dash, Blaze=3 OR Sentry=2
      InnerWellspring.DrainRoomBottomWheel, Shuriken=2 OR Flash=2 OR Sentry=2
      Damage=60, DoubleJump OR Dash  # dboost in dirty water water. If you drained the water, you can use the bottom of the wheel instead
      Damage=60, Bash, Grenade=1  # dboost in dirty water water. If you drained the water, you can use the bellow the wheel instead
      WaterDash, Damage=40, DoubleJump OR Dash  # dboost in dirty water water. If you drained the water, you can use the bottom of the wheel instead
      WaterDash, Damage=40, Bash, Grenade=4  # dboost in dirty water water. If you drained the water, you can use the bottom of the wheel instead
      InnerWellspring.DrainLever:
        DoubleJump OR Dash OR Damage=45
        Bash, Grenade=1
      # if you have a non-energy weapon here, you can break the three wheels free. Redundant paths without the three wheels state were removed.
      # Sword, InnerWellspring.DrainLever OR Dash OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
      # Hammer, DoubleJump OR Dash OR Sentry=3
      # Hammer, InnerWellspring.DrainLever, Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe, ShurikenBreak=10:
      DoubleJump
      Dash, Damage=15  # cross the gap going over
      InnerWellspring.DrainRoomBottomWheel, Bash, Grenade=2  # not hard, but grenades can vanish on rotating objects sometimes

anchor InnerWellspring.DrainAreaEntrance at -1128, -3968:  # On the wall after dropping through the gate draining the water
  pickup InnerWellspring.DrainHC:
    moki:
      Water OR DoubleJump OR Grapple OR Launch  # bit of a weird pickup
      Bash, Grenade=1  # seems fine
    gorlek: Dash OR Bash OR Glide OR Damage=20
    kii: Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe: free

  conn InnerWellspring.DrainAreaEX:
    moki:  # the skeetos just want to be bashed here
      DoubleJump, Water OR Bash
      Dash, Bash, Grenade=1
      Water, Bash, Grenade=1, Grapple OR Glide
      Launch
    gorlek:
      DoubleJump, Water OR TripleJump OR Dash OR Bash OR Glide OR Sword OR Hammer OR Damage=20
      Bash, Dash, Sword OR Hammer
      Bash, Grenade=1, Water OR Dash OR Damage=20
      Bash, SentryJump=1, Water OR Damage=20
      Water, WaterDash, Dash, Sword OR Hammer  # @validator Added path. Gorlek might want some variation of this.
    kii:
      Dash, Hammer OR Sword
      Dash, Bash, Spear=1 OR Flash=1 OR Sentry=1  # use energy weapon to reach the wall at the left of the lever
      Dash, Water, Combat=2xWeakSlug, WaterDash OR Spear=1 OR Flash=1 OR Sentry=1
      Dash, Damage=20, Combat=2xWeakSlug, Spear=1 OR Flash=1 OR Sentry=1
      Dash, Damage=20, Damage=20, Combat=2xWeakSlug, WaterDash
      DoubleJump, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Bash, Grenade=1, Sword
    unsafe:
      Dash, Combat=2xWeakSlug
      Water, WaterDash, Glide  # glide jump from the wheel to the sl container
      Bash, Grenade=1, Shuriken=1

anchor InnerWellspring.DrainAreaEX at -1064, -3961:  # At DrainEX
  pickup InnerWellspring.DrainEX: free
  pickup InnerWellspring.DrainHC:
    moki: Water OR Launch
    gorlek:
      DoubleJump, TripleJump
      DoubleJump, Dash, Sword
      Bash, DoubleJump OR Dash  # luring the skeetos with other abilities seems tricky
    kii:
      Damage=40, Bash OR Damage=20
      Damage=20, Damage=20, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # use energy weapon the two floating logs
      Damage=20, DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Spear=2 OR Shuriken=2 OR Flash=2 OR Sentry=2
      WaterDash, Damage=20, Bash OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Damage=20
      Dash, DoubleJump OR Sword OR Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      DoubleJump
      WaterDash, Damage=20

  conn InnerWellspring.DrainAreaExit:
    moki, BreakWall=10:
      DoubleJump OR Dash OR Launch
      Bash, Grenade=1
    gorlek, BreakWall=10: Glide OR Sword
    kii, BreakWall=10: Bash OR Hammer OR Shuriken=2 OR Sentry=2  # no flash here because you can't diasble flash while holding the pole
    unsafe, BreakWall=10: Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1

anchor InnerWellspring.DrainAreaExit at -1093, -3950:  # At the checkpoint in the breakable wall.
# This anchor assumes that the wall is already broken.
  refill Checkpoint

  conn InnerWellspring.DrainAreaEX: free
  conn InnerWellspring.DrainRoomCenter:
    moki:
      DoubleJump OR Launch
      Dash, Bash, Grenade=1
      Bash, Grenade=2
    gorlek:
      Dash
      Glide, Grapple OR SentryJump=1 OR Damage=15
      Sword, Grapple OR SentryJump=1 OR Damage=15
      Bash, Grenade=1, Grapple OR Glide OR Sword OR Damage=15
      SentryJump=1, Grapple OR Damage=15
      SentryJump=2
    kii:
      Sword OR Hammer OR Spear=3 OR Shuriken=3 OR Sentry=3  # No flash path because you can't cancel it while on the pole
      Glide, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Bash, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # Bait the skeeto
    unsafe:
      Spear=2 OR Shuriken=2 OR Blaze=3 OR Flash=2 OR Sentry=2
      Bash  # Bait the skeeto
  conn InnerWellspring.DrainRoom:  # Make sure it's not redundant with DrainAreaExit->DrainRoomCenter->DrainRoom
    moki: Dash, Glide, Water  # @validator I removed most moki paths because they were redundant with DrainAreaExit->DrainRoomCenter->DrainRoom but there might have some paths using DrainRoomBottomWheel/DrainLever to find here...
    gorlek:
      Glide, Water OR Damage=20
      Water, Sword
      Water, Dash, Damage=15
      Water, Grapple, Damage=15, Hammer
    kii:
      InnerWellspring.DrainRoomBottomWheel, Sentry=4
      InnerWellspring.DrainRoomBottomWheel, Bash, Grenade=2
      InnerWellspring.DrainRoomBottomWheel, Bash, Grenade=1, Damage=20  # dboost in dirty water. If you drained the water, dboost in spikes instead.
      InnerWellspring.DrainLever:
        Damage=15, Spear=1 OR Shuriken=1 OR Blaze=3 OR Flash=1 OR Sentry=1 OR Damage=15
        Bash, Grenade=2
        Bash, Grenade=1, Damage=15
      Bash, Grenade=1, Damage=80  # dboost in dirty water water. If you drained the water, you can dboost in the spikes instead
      WaterDash, Damage=40, Spear=1 OR Shuriken=1 OR Blaze=3 OR Flash=1 OR Sentry=1  # dboost in dirty water water. If you drained the water, dboost in spikes instead
      WaterDash, Damage=40, Bash, Grenade=4  # dboost in dirty water water. If you drained the water, you can use the bottom of the wheel instead
    unsafe:
      InnerWellspring.DrainLever, Damage=15, Grapple OR Blaze=2  # Grapple is awkward if the wheel is spinning snce you need to jump blindly and you might have jumped before the wheel can be grappled

# checkpoint at the anchor below, just hard to reach

anchor InnerWellspring.DrainRoomCenter at -1116, -3924:  # Standing on the wheel in the center of the room
  state InnerWellspring.DrainRoomTopWheel:  # breaking the top wheel free; has a state because it can be used to connect from top right to top left
    moki:
      BreakWall=16, Bow OR Grenade OR Spear
      Launch, BreakWall=16
    gorlek: BreakWall=16

  conn InnerWellspring.DrainRoom:
    moki:
      DoubleJump, Dash
      Grapple OR Glide OR Launch
    gorlek:
      DoubleJump OR Dash OR Sword
      Hammer, Damage=20  # dboost in water
      Hammer, Water, Damage=15
    kii:
      Hammer OR Blaze=3 OR Sentry=2 OR Damage=40  # dboost in Water. Can dboost in spikes if water is drained
      Damage=20, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1  # dboost in Water. Can dboost in spikes if water is drained
      Bash, Grenade=1
      InnerWellspring.DrainLever, Damage=15  # grab the pole on the right to reach the bottom of the spinning wheel
      InnerWellspring.DrainRoomBottomWheel, Damage=20  # grab the pole on the right to reach the spinning wheel. dboost in water
      InnerWellspring.DrainLever, InnerWellspring.DrainRoomBottomWheel, Shuriken=1  # grab the pole on the right to reach the spinning wheel.
    unsafe: Damage=20  # dboost in water
  conn InnerWellspring.DrainAreaEntrance:
    moki: InnerWellspring.DrainLever
  conn InnerWellspring.DrainAreaExit:
    gorlek: ShurikenBreak=10
  conn InnerWellspring.DrainRoomTop:
    moki: InnerWellspring.DrainRoomTopWheel OR Grapple OR Launch
    gorlek:
      DoubleJump OR Dash
      Bash, Grenade=1
    unsafe: Shuriken=1 OR Flash=1 OR Sentry=1

anchor InnerWellspring.DrainRoomTop at -1086, -3908:  # At the right ledge on top of the drain room
  refill Checkpoint
  refill Health=1

  pickup InnerWellspring.LaserOre:
    moki:
      DoubleJump, Dash OR Glide
      Dash, Glide, Combat=Miner OR Bash
      Launch
    gorlek:
      DoubleJump OR Dash OR Sword
      Glide, Combat=Miner OR Bash
    kii: Combat=Miner, Shuriken=2 OR Blaze=4 OR Sentry=3
    unsafe:
      Glide OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=3 OR Sentry=2 OR Damage=15  # bait the gorlek into falling on the left so you don't have to fight it
      Bash, Grenade=1  # there's a safe spot on the left of the laser, where you can charge your grenade safely

  conn InnerWellspring.DrainRoomCenter: free
  conn InnerWellspring.BelowDrainLever:
    moki:
      DoubleJump, Dash OR Glide
      InnerWellspring.DrainRoomTopWheel, Grapple
      Launch
    gorlek:
      DoubleJump, TripleJump OR Sword OR Hammer OR Damage=15
      Dash, Glide OR Sword OR Hammer OR Damage=15
      Grapple, SentryJump=1
      Bash, Grenade=1, DoubleJump OR Dash OR Grapple
      SwordSJump=1, Glide
      InnerWellspring.DrainRoomTopWheel, Bash, Grenade=1
      InnerWellspring.DrainRoomTopWheel, SentryJump=1
    kii:
      DoubleJump OR Dash
      Grapple, Glide OR Sword OR Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1
      Bash, Grenade=1, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      Grapple
      Bash, Grenade=1

anchor InnerWellspring.BelowDrainLever at -1153, -3895:  # In the first room below the drain lever
  refill Checkpoint

  state InnerWellspring.DrainLever:
    moki:
      Bash, Grenade=1  # not softlockable: UpperCorruption solves this
      InnerWellspring.UpperCorruption, DoubleJump
      Launch
    gorlek:
      DoubleJump, TripleJump, Damage=15
      InnerWellspring.UpperCorruption OR SentryJump=1
    unsafe: Grenade=1

  pickup InnerWellspring.LeverEC:
    moki:
      Bash, Grenade=2  # not softlockable: UpperCorruption solves this
      Bash, Grenade=1, Grapple, DoubleJump OR Dash OR Glide  # not softlockable: UpperCorruption solves this
      InnerWellspring.UpperCorruption, DoubleJump, Bash, Grenade=1
      InnerWellspring.UpperCorruption, DoubleJump, Grapple
      Launch
    gorlek:
      DoubleJump, TripleJump, Damage=15, Bash, Grenade=1
      DoubleJump, TripleJump, Damage=15, Grapple OR SentryJump=1
      Bash, Grenade=1, Grapple
      SentryJump=2
      SentryJump=1, Grapple
      InnerWellspring.UpperCorruption, Bash, Grenade=1
      InnerWellspring.UpperCorruption, Grapple OR SentryJump=1
      InnerWellspring.UpperCorruption, DoubleJump, TripleJump, Damage=15
    kii:
      DoubleJump, TripleJump, InnerWellspring.UpperCorruption OR Damage=15
      Bash, Grenade=1, DoubleJump, TripleJump
    unsafe:
      Grenade=2

  conn InnerWellspring.AbovePole:
    moki:
      DoubleJump, Dash OR Glide
      Launch
    gorlek:
      Damage=15
      DoubleJump, TripleJump OR Sword OR Hammer
    kii:
      DoubleJump, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Dash, Sword OR Hammer
    unsafe: free  # lovely friendly spikes
  conn InnerWellspring.WestDoor:
    moki:
      DoubleJump, Bash, Grenade=1
      InnerWellspring.UpperCorruption OR Launch
    gorlek:
      DoubleJump, TripleJump, Damage=15
      Bash, Grenade=1
      SwordSJump=1, DoubleJump
      HammerSJump=1, DoubleJump, Glide
      SentryJump=2
    unsafe:
      Grenade=2
      SentryJump=1, Damage=15
      DoubleJump, Damage=30
  conn InnerWellspring.DrainRoomTop:
    moki: DoubleJump OR Dash OR Glide OR Launch
    gorlek: free
  conn InnerWellspring.DrainRoomCenter: free

anchor InnerWellspring.AbovePole at -1164, -3874:  # Under InnerWellspring.UpperCorruption
  state InnerWellspring.UpperCorruption:  # the fourth corruption you see on your way
    moki: BreakWall=16

  pickup InnerWellspring.LupoEX: free

  conn InnerWellspring.BelowDrainLever:
    moki: DoubleJump OR Dash OR Glide OR Launch
    gorlek: free

anchor InnerWellspring.WestDoor at -1216, -3897:  # Inside the door where you exit the first room
  refill Checkpoint
  refill Health=2
  refill Energy=3:
    moki: BreakCrystal

  state InnerWellspring.MiddleDoorsOpen:
    moki:
      Grapple
      Bash, Grenade=1, Launch
    gorlek:
      Bash, Grenade=1, DoubleJump, TripleJump
      SentryJump=1, DoubleJump, TripleJump  # solvable through wraparound if you don't sjump well
      Launch
    kii:
      Bash, DoubleJump, TripleJump  # bait the mantis. Need to bash it when used its third jump.
      Bash, Grenade=1  # bait the mantis, bash it in order to bash your grenade from higher up
    unsafe:
      Hammer, DoubleJump, TripleJump
      SentryJump=1

  pickup InnerWellspring.ShortcutWheelEX:
    moki: InnerWellspring.ShortCutWheel
  pickup InnerWellspring.LupoMap:
    moki, SpiritLight=150:
      Grapple, DoubleJump OR Dash OR Glide
      Bash  # bash the skeeto
      InnerWellspring.UpperCorruption
    gorlek, SpiritLight=150:
      Grapple
      SwordSJump=1  # hammer locking your movement makes this awkward
    kii, SpiritLight=150:
      DoubleJump, Sword  # pogo the skeeto
      DoubleJump, TripleJump, Hammer OR Spear=1
    unsafe, SpiritLight=150: DoubleJump  # kind of easy
  pickup InnerWellspring.GrappleTreeEX:
    moki:
      DoubleJump, Grapple
      Bash, Grenade=2
      Bash, Grenade=1, DoubleJump OR Dash OR Glide OR Grapple
      Launch
    gorlek:
      Bash, Grenade=1
      DoubleJump, TripleJump OR Hammer
      SentryJump=1
      Grapple, Dash
    kii:
      Grapple, Sword OR Hammer OR Shuriken=1
      DoubleJump, Sword
    unsafe:
      Grapple, Sentry=2
      Grenade=1
  pickup InnerWellspring.GrappleTree:
    moki:
      DoubleJump OR Dash OR Glide OR Grapple OR Launch
      Bash, Grenade=1  # jumper would be a lure
    gorlek: Bash OR Sword OR Hammer
    kii: free

  conn OuterWellspring.WestDoor:
    moki: InnerWellspring.MiddleDoorsOpen
  conn InnerWellspring.BelowDrainLever: free

anchor InnerWellspring.EastDoor at -1190, -3733:  # Inside the door leading to the spin puzzle
  refill Checkpoint
  refill Health=1
  refill Energy=4:
    moki: BreakCrystal

  state InnerWellspring.SpinArena:  # finishing the arena
    moki: Combat=2xLizard+3xMantis+Miner, DoubleJump OR Dash OR Glide OR Launch
    gorlek: Combat=2xLizard+3xMantis+Miner  # different ways to solve
  state InnerWellspring.SpinningRoomOpen:  # Breaking the corruption which opens the spinning room
    moki: InnerWellspring.SpinArena, BreakWall=16, DoubleJump OR Dash OR Glide OR Launch
    gorlek: InnerWellspring.SpinArena, BreakWall=16
  state InnerWellspring.SpinPuzzleSolved:  # Having Water changes this room (not considered in moki)
    moki, InnerWellspring.SpinningRoomOpen:
      Grapple, DoubleJump OR Dash
      Grapple, Bash, Grenade=1
      Launch
    gorlek, InnerWellspring.SpinningRoomOpen:
      Grapple, Glide OR Sword OR Hammer
      Water, DoubleJump OR Grapple OR SentryJump=1
      Water, Bash, Grenade=1
      Water, Damage=15, Dash OR Sword
    kii, InnerWellspring.SpinningRoomOpen:
      Grapple, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Water, Dash OR Hammer OR Damage=30
      DoubleJump, TripleJump
    unsafe, InnerWellspring.SpinningRoomOpen:
      Grapple
      Water, Spear=1 OR Damage=15

  quest InnerWellspring.HandToHandHerbs:
    moki: GladesTown.HandToHandPouch
  quest InnerWellspring.NeedleQI:
    moki, InnerWellspring.TopDoorOpen:
      Grapple, DoubleJump OR Launch
      Bash, Grenade=1, DoubleJump OR Launch
      Launch, DoubleJump
    gorlek, InnerWellspring.TopDoorOpen:
      Bash, Grenade=1
      Grapple OR Launch
    kii, InnerWellspring.TopDoorOpen:
      DoubleJump, TripleJump, Hammer OR Spear=1
    unsafe, InnerWellspring.TopDoorOpen: DoubleJump, TripleJump, Flash=1 OR Sentry=1

  pickup InnerWellspring.AboveSpinArenaEX:
    moki:
      Grapple, DoubleJump OR Dash
      Launch
    gorlek:
      Grapple, Sword OR HammerSJump=1 OR Damage=15
      DoubleJump, TripleJump, SentryJump=1 OR Damage=15
      ShurikenBreak=10, Combat=Tentacle OR Bash
    kii:
      Grapple, Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1
      DoubleJump, TripleJump
    unsafe: DoubleJump
  pickup InnerWellspring.RotateRoomEX:  # after pulling two of the three levers, this pickup is blocked off. Due to that, fully solving the puzzle is the only non-softlockable solution for this pickup
    moki: InnerWellspring.SpinningRoomOpen, InnerWellspring.SpinPuzzleSolved
  pickup InnerWellspring.RotateRoomOre:  # blocked off until you fully solve the puzzle
    moki: InnerWellspring.SpinningRoomOpen, InnerWellspring.SpinPuzzleSolved

  conn OuterWellspring.EastDoor: free
  conn InnerWellspring.PastSpinPuzzle:  # while there are abilitysets to get through the spinning room regardless of state, they are more expensive than just solving the puzzle
    moki: InnerWellspring.SpinningRoomOpen, InnerWellspring.SpinPuzzleSolved, Grapple OR Launch
    gorlek: InnerWellspring.SpinningRoomOpen, InnerWellspring.SpinPuzzleSolved, Water  # gorlek is fun
    kii: InnerWellspring.SpinningRoomOpen, InnerWellspring.SpinPuzzleSolved, DoubleJump, TripleJump OR Damage=15
    unsafe: InnerWellspring.SpinningRoomOpen, InnerWellspring.SpinPuzzleSolved, Dash, Damage=15

anchor InnerWellspring.PastSpinPuzzle at -1101, -3778:  # Right after exiting the spin puzzle room
  refill Checkpoint

  conn InnerWellspring.TopSecondRoom:
    moki:
      Grapple, DoubleJump, Dash OR Glide
      Grapple, Dash, Glide
      Grapple, Launch
    gorlek:
      Grapple, DoubleJump OR Dash OR Glide OR Sword OR Hammer
      Water, Grapple, Damage=15
      Launch, DoubleJump, TripleJump
      Launch, Damage=15, DoubleJump OR Dash OR Glide
      Water, WaterDash, Launch, DoubleJump
    kii:
      Grapple, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1 OR Damage=15
      Launch, DoubleJump, Dash OR Glide OR Sword OR Hammer OR Sentry=3
      WaterDash, Launch, Water OR Damage=20
    unsafe:
      Launch, Water OR Damage=20
      Launch, DoubleJump, Shuriken=2
  # backwards connections would be cool here someday

# checkpoint at -1103, -3725

anchor InnerWellspring.TopSecondRoom at -1141, -3698:  # Next to the corruption which oppen the third room
  state InnerWellspring.TopDoorOpen:
    moki: BreakWall=16

  quest InnerWellspring.NeedleQI:
    moki: InnerWellspring.TopDoorOpen

  conn InnerWellspring.EastDoor:
    moki: InnerWellspring.TopDoorOpen

anchor InnerWellspring.Teleporter at -1308, -3675:  # At the teleporter
  refill Full
  
  state NonGladesTeleporter: free

  quest InnerWellspring.BlueMoonSeed:
    moki:
      DoubleJump, Dash
      Bash, Grenade=1
      Launch
    gorlek:
      DoubleJump, TripleJump OR Glide OR Sword OR Hammer
      SentryJump=1
    kii:
      Dash, Hammer
      DoubleJump, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1  # double jump can solve it by itself but the branch you are jumping from can be a bit janky
    unsafe: Dash OR DoubleJump

  pickup InnerWellspring.LibraryEX: free
  pickup InnerWellspring.AboveTpEX:
    moki:
      DoubleJump, Dash OR Glide
      Bash, Grenade=1
      Launch
    gorlek:
      DoubleJump, TripleJump                 # Can be done with just double jump but the first jump is precise
      SentryJump=1
    kii:
      DoubleJump, Sword OR Sentry=3
      Dash, Sword OR Sentry=2
    unsafe:
      DoubleJump, Hammer            # uses the wall to the left of tp
      Dash, Hammer                   # path from the right, tight combos to reach the platform
      Shuriken=2, DoubleJump OR Dash OR Glide
  pickup InnerWellspring.SwimOre:
    moki: Water
    unsafe:  # Enemies aren't here if you don't have Clean Water
      Damage=160
      WaterDash, Damage=60

  conn Teleporters: free
  conn OuterWellspring.TopDoor: free
  conn OpherShop: free
  conn InnerWellspring.EscapeSequence:
    moki:
      DoubleJump, Dash, Grapple
      Bash, Grenade=1, Grapple
      Bash, Grenade=1, DoubleJump, Dash
      Bash, Grenade=2
      Launch
    gorlek:
      DoubleJump, TripleJump OR Dash OR Glide OR Sword OR Hammer
      Bash, Grenade=1, DoubleJump
      SentryJump=1, DoubleJump OR Grapple
      SentryJump=2
    kii:
      DoubleJump, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Dash, Hammer, Grapple
    unsafe:
      Dash OR DoubleJump OR SentryJump=1

# checkpoint at -1249, -3641

anchor InnerWellspring.EscapeSequence at -1240, -3642:
  refill Full

  quest InnerWellspring.WaterEscape:
    moki:
      Bash, Grapple, DoubleJump, Dash OR Glide
      Bash, Grapple, Dash, Glide
      Grapple, Launch
    gorlek:
      Grapple, DoubleJump, Dash  # bit spicy
      Bash, Grapple, DoubleJump OR Dash OR Glide
      Launch, Dash OR Glide OR Damage=15  # Assumes at least one damage is taken in the final grapple section, probably possible without
    kii:
      Launch, Sword OR Shuriken=1 OR Flash=1 OR Sentry=1  # condition for the final grapple section
      Grapple, Dash OR Glide  # final wheel is pretty hard, you need to avoid touching it as much as possible (which could be viewed as area specific knowledge?)
      Grapple, DoubleJump, TripleJump OR Sword OR Hammer OR Shuriken=2 OR Blaze=3 OR Flash=2 OR Sentry=2  # condition for before and after the falling wheel. 1 blaze before and 2 after the wheel.
      Grapple, Bash, Sword
      Grapple, Bash, WaterDash:
        Water, Sentry=2 OR Damage=15  # two sentries to avoid the spikes before the falling wheel
        Damage=95
        Damage=60, Sentry=2  # two sentries before the falling wheel
        # condition for energy management, since flash and shuriken cost less enegy than sentry
        Damage=40, Sentry=2, Sentry=1 OR Shuriken=1 OR Flash=1  # same as above + either one at the 2nd jump or between the two rotating wheels
        Damage=20, Sentry=2, Sentry=2 OR Shuriken=2 OR Flash=2  # same as above but use both options
        Sentry=4, Sentry=2 OR Shuriken=2 OR Flash=2  # same as above but use 2 sentries to make the first jump
    unsafe:
      Launch
      Grapple, Bash, WaterDash, Damage=80
      Grapple, Bash, Hammer
      Grapple, DoubleJump

  pickup InnerWellspring.EscapeRevisitEX:
    moki: InnerWellspring.WaterEscape

region WoodsEntry:
  moki: Danger=40, Regenerate
  gorlek: Regenerate
  kii: Regenerate
  unsafe: free

anchor WoodsEntry.ShriekMeet at 391, -4198:  # The ledge after swimming through the Hollow connection
  refill Checkpoint

  pickup WoodsEntry.LedgeOre:
    gorlek: Launch
    kii: Bash, Grenade=1, DoubleJump, TripleJump OR Hammer

  conn WoodsEntry.FirstMud:
    moki: Combat=Balloon, Combat=Tentacle OR Bash OR Launch
    gorlek: Combat=Tentacle OR Bash OR Launch OR Damage=10
  conn EastHollow.Kwolok:
    gorlek: Water, Bash, Damage=10  # bit hard but important for random spawn
    kii: Water, Spear=1
    unsafe: Water, Bash OR Grenade=1 OR Sentry=1  # redirect the projectile (sentry is way harder than the others). Also works with sword+deflector

anchor WoodsEntry.FirstMud at 478, -4205:  # In front of the first instant death mud
  refill Checkpoint

  pickup WoodsEntry.MudPitEX:
    moki:
      DoubleJump OR Dash OR Glide OR Launch
      Bash, Grenade=2
    gorlek:
      Bash, Grenade=1
      SentryJump=1
    kii: free

  conn WoodsEntry.BelowTeleporter:
    moki:
      Combat=Balloon, Bash, DoubleJump OR Dash OR Glide
      Combat=Balloon, Launch, DoubleJump OR Dash OR Glide
    gorlek: DoubleJump OR Dash OR Glide OR Launch  # getting hit by the balloon doesn't matter since you get autosaved and respawn
    kii:
      Sword OR Shuriken=3  # Careful with sword because it can break bubbles
      Bash, Hammer OR Sentry=2  # Use the tentacle at the end
    unsafe: Hammer
  conn WoodsEntry.ShriekMeet:
    moki: Combat=Balloon, Combat=Tentacle OR Bash OR Launch
    gorlek: Combat=Tentacle OR Bash OR Launch OR Damage=10
  conn WoodsEntry.Teleporter:  # Paths that go up directly and aren't redundant with BelowTeleporter
    unsafe: Bash  # Use the tentacle

# checkpoint at 525, -4205

anchor WoodsEntry.BelowTeleporter at 591, -4198:  # Read the name
  refill Checkpoint

  conn WoodsEntry.FirstMud:  # check for redundancies with Teleporter
    moki: Combat=Balloon, Bash, DoubleJump, Dash OR Glide
    gorlek: DoubleJump, TripleJump OR Dash OR Glide  # If you struggle with the tentacle and die, it'll despawn
    kii:
      DoubleJump, Sword OR Hammer
      Dash, Glide OR Sword OR Hammer OR Shuriken=1 OR Sentry=1 OR Flash=1  # You can use a dash refresh on the ceiling for more lenience. Or instead of grabbing the hanging log you can go below and aim for the bubble.
    unsafe: Glide, Sword OR Hammer  # Jump on the first bubble, glide then up slash near the 2nd bubble (not too close, you can pop the bubble with an upslash)
  conn WoodsEntry.Teleporter:
    moki:
      Grapple, DoubleJump OR Dash OR Glide
      Bash, Grenade=1, DoubleJump OR Dash OR Glide
      Launch
    gorlek:
      Grapple, Sword
      Grapple, Hammer, Bash, Damage=15  # Bash because the plant can be a bit awkward
      Bash, Grenade=1, Sword OR Damage=15
      SwordSJump=1
      HammerSJump=1, Bash, Damage=15  # again mildly awkward
    kii:
      Grapple, Hammer, Shuriken=1 OR Sentry=1 OR Flash=1 OR Damage=15
      Grapple, Sentry=2, Damage=15
      Grapple, Sentry=4
      DoubleJump, TripleJump, Sword OR Hammer OR Shuriken=1 OR Sentry=1 OR Flash=1
      Bash, DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Sentry=2 OR Damage=15  # Use the tentacle, note that it despawns if you die and respawn on this anchor
    unsafe:
      DoubleJump, TripleJump
      Bash
      DoubleJump, Hammer  # Double jump to the right wall, upslash to start climbing it (?)
  conn WoodsEntry.TwoKeystoneRoom:
    moki: Combat=2xBalloon, DoubleJump OR Dash OR Glide OR Launch
    gorlek: Combat=2xBalloon, Sword OR Hammer
    kii:
      Combat=2xBalloon, Shuriken=3 OR Sentry=3 OR Spear=3
      Combat=2xBalloon, Bash, Grenade=1, Flash=2
      Combat=2xBalloon, Bash, Grenade=2, Spear=1
      Damage=20, Damage=20, DoubleJump OR Glide  # tank the balloons
      Launch  # by refreshing on the ceiling you can maneuver around the balloons
    unsafe: Sentry=2 OR Blaze=2

anchor WoodsEntry.Teleporter at 611, -4162:  # At the West Woods Teleporter
  refill Full

  state NonGladesTeleporter: free

  quest WoodsEntry.LastTreeBranch: free
  quest WoodsEntry.DollQI:
    moki: GladesTown.FamilyReunionKey
  quest WoodsEntry.TreeSeed:
    moki: TuleyShop.LastTreeBranchRejected

  pickup WoodsEntry.TpEX: free
  pickup WoodsEntry.LeafPileEX:
    moki: Flap
  pickup WoodsEntry.LedgeOre:
    moki:
      Glide, DoubleJump OR Launch
      Bash, Grenade=1, Glide OR Launch
      DoubleJump, Dash, Launch
    gorlek:
      Glide, Dash
      DoubleJump, TripleJump, Dash, Sword OR Hammer
      SentryJump=1, DoubleJump, Dash  # Dash after the apex of the sjump then sword's full combo + up slash
      Bash, Grenade=1, DoubleJump, TripleJump OR Sword OR Hammer
      Bash, Grenade=1, Dash
      # launch paths from gorlek onwards are redundant with walking below it and launching up
    kii:
      Glide, Sword OR Hammer OR Shuriken=1 OR Sentry=1 OR Flash=1
      DoubleJump, TripleJump, Dash, Shuriken=1 OR Sentry=2 OR Flash=1
      DoubleJump, TripleJump, Sword, Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=1 OR Spear=1
      DoubleJump, TripleJump, Hammer, Shuriken=1 OR Sentry=2
      DoubleJump, Dash, Sword, Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=1 OR Spear=1
      DoubleJump, Dash, Hammer, Shuriken=1 OR Sentry=2
      Bash, Grenade=1, DoubleJump OR Sword
      Bash, Grenade=1, Hammer, Shuriken=1 OR Sentry=1 OR Flash=1
    unsafe:
      Glide  # No Glide jump, just start from the higher ground
      DoubleJump, Sword

  conn Teleporters: free
  conn WoodsEntry.ShriekMeet:
    gorlek: free
  conn WoodsEntry.FirstMud: free
  conn WoodsEntry.BelowTeleporter: free

anchor WoodsEntry.TwoKeystoneRoom at 672, -4183:  # In front of the keystone door
  refill Checkpoint
  refill Energy=3:
    moki: WoodsEntry.KeystoneDoor, BreakCrystal

  state WoodsEntry.KeystoneDoor:
    moki: Keystone=2

  pickup WoodsEntry.LowerKS:
    moki: DoubleJump OR Dash OR Glide  # Launch is awful
    gorlek: Launch OR Sword OR Hammer  # different ways to solve
    kii: free  # It's possible to get back to safety but also you can just teleport out
  pickup WoodsEntry.UpperKS:
    moki: DoubleJump OR Launch
    gorlek:
      Hammer, Dash
      Bash, Grenade=1
    unsafe: Sword OR Hammer

  conn WoodsMain.AfterKuMeet:
    moki: WoodsEntry.KeystoneDoor, Combat=2xSkeeto+Tentacle OR Bash OR Launch
    gorlek: WoodsEntry.KeystoneDoor, Damage=10
  conn WoodsEntry.BelowTeleporter:
    moki: Combat=2xBalloon, DoubleJump OR Glide OR Launch
    gorlek: DoubleJump OR Dash OR Glide OR Sword
    kii: Launch OR Hammer OR Shuriken=1 OR Sentry=2  # If you struggle and die, the first balloon will despawm
    unsafe: Sentry=1 OR Flash=1

region WoodsMain:
  moki: Danger=40, Regenerate
  gorlek: Regenerate
  kii: Regenerate
  unsafe: free

anchor WoodsMain.AfterKuMeet at 856, -4192:  # At the upper ledge opening up to the room after finding Ku
  refill Checkpoint

  state WoodsEntry.KeystoneDoor:
    moki: Keystone=2, Combat=2xSkeeto+Tentacle OR Bash OR Launch
    gorlek: Keystone=2, Damage=10

  conn WoodsMain.BelowFourKeystoneRoom:
    moki:
      DoubleJump, Dash
      Bash OR Glide OR Launch  # bash uses the enemy
    gorlek:
      DoubleJump, Sword  # many others work, but this lines up so beautifully oriGlow
      Dash, Sword OR Hammer
      SwordSJump=1  # sjump then full sword combo
    kii:
      Dash  # coyote dash
      Sentry=3
      Sword, Damage=10  # Sword hover->pogo->upslash. Damage can de avoided but you'll most likely get hit.
      Combat=Tentacle, Sword
      Combat=Tentacle, Hammer, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Combat=Tentacle, DoubleJump, TripleJump OR Dash OR Hammer  # @validator Probably gorlek
      Combat=Tentacle, DoubleJump, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe:
      Sword  # Pogo the projectiles
      Hammer, DoubleJump  # upslash to protect yourself from projectiles then double jump
  conn WoodsEntry.TwoKeystoneRoom:
    moki: WoodsEntry.KeystoneDoor, Combat=2xSkeeto+Tentacle OR Bash OR Launch
    gorlek: WoodsEntry.KeystoneDoor, Damage=10

anchor WoodsMain.BelowFourKeystoneRoom at 951, -4210:  # At the first leaf pile after meeting Ku
  pickup WoodsMain.LowerLeafPileEX:
    moki: Flap
  pickup WoodsMain.BehindWallOre:
    gorlek: Flap, Glide  # Lure the balloon

  conn WoodsMain.FourKeystoneRoom:
    moki: Combat=2xBalloon, Flap, Glide
    gorlek: Flap, Glide  # Flap kills these
  conn WoodsMain.WallOreLedge:
    moki, Combat=2xBalloon:
      Bash, Grenade=3, DoubleJump  # different ways to solve
      Bash, Grenade=1, DoubleJump, Dash, Glide  # different ways to solve
      Launch
    gorlek:
      Combat=2xBalloon, DoubleJump, TripleJump, Dash OR Bash OR Glide OR Sword OR Hammer OR Damage=15
      Combat=Balloon, SentryJump=1, DoubleJump, TripleJump
      SwordSJump=1, DoubleJump, Bash  # bash the plant above and sword hover
      Damage=20, Bash, Grenade=2, DoubleJump OR Dash OR Glide
      Damage=20, Launch
    kii:
      DoubleJump, Sword, Combat=Balloon OR Damage=20  # Pogo the first balloon
      DoubleJump, Combat=2xBalloon, Damage=15, TripleJump OR Dash OR Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1
      DoubleJump, Damage=35, TripleJump OR Dash OR Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      DoubleJump, Sword  # Pogo the first balloon, avoid the second one and kill it with a pogo
      DoubleJump, HammerSJump=1  # DoubleJump + full sword combo + up slash from the breakable wall to reach the left platform
      DoubleJump, TripleJump, Combat=2xBalloon OR Damage=20
      DoubleJump, Dash
      Launch  # use launch invincibility to avoid dboost from balloons
  conn WoodsMain.AfterKuMeet:
    moki:
      Bash, Grenade=2, Damage=10  # uses the enemy
      Bash, Grenade=1, Damage=10, DoubleJump OR Dash  # uses the enemy
      Launch, DoubleJump OR Dash OR Bash OR Glide  # bash uses the enemy
    gorlek:
      Bash, DoubleJump, TripleJump
      Bash, Grenade=1 OR SentryJump=1
      Launch, Sword OR Hammer
    kii:
      DoubleJump, Bash
      DoubleJump, Sword  # Keep hitting the tentacle with sword to reset your double jump
      DoubleJump, TripleJump, Dash
      Combat=Tentacle, DoubleJump, TripleJump, Glide OR Hammer OR Sentry=2
      Combat=Tentacle, DoubleJump, Dash, Glide OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      Bash
      Combat=Tentacle, DoubleJump, TripleJump, Shuriken=2

anchor WoodsMain.WallOreLedge at 982, -4175:  # Next to hidden ore, without the wall being broken - paths would be complicated otherwise
  pickup WoodsMain.BehindWallOre:
    moki: BreakWall=20
  pickup WoodsMain.BelowKeystonesEX:  # Paths that can get to the pickup but can't go to FourKeystoneRoom
    moki:
      Glide, DoubleJump
      Bash, DoubleJump OR Dash OR Glide OR Launch
    gorlek:
      Glide, Dash OR Sword OR Hammer  # for the weapons, glide below and use the up attack
    kii:
      Glide, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      BreakWall=20, Dash  # Breakwall so you have more space for a coyote dash. Reset dash on the left wall
    unsafe:
      Dash  # Coyote dash. Reset dash on the left wall
  pickup WoodsMain.LowerKS:  # All paths that aren't breaking the yellow wall
    gorlek:
      Launch  # launch on the wall near WoodsMain.BelowKeystonesEX then launch again
      Glide, Bash  # glide above the tentacle and bash its projectiles to reach the floating platform
      Glide, DoubleJump, TripleJump  # glide and triple jump to reach the floating platform
      Glide, Dash, DoubleJump, Sword OR Hammer  # glide, dash when just bellow the pickup, double jump and up slash to reach the floating platform
    kii:
      Bash, DoubleJump, TripleJump
      Glide, DoubleJump, Hammer, Dash OR Shuriken=1 OR Flash=1 OR Sentry=1  #  glide und er the pickup then djump-> upslash -> dash/energy to get on the floasting platform

  conn WoodsMain.BelowFourKeystoneRoom: free
  conn WoodsMain.FourKeystoneRoom:
    moki:
      DoubleJump, Dash, Glide
      Launch
    gorlek:
      DoubleJump, TripleJump OR Dash
      Bash, Grenade=1, Dash  # Shoot a grenade from the breakable wall. Dash to reach the grenade and bash it to get on the left platform
    kii:
      Bash, Grenade=1, DoubleJump
      DoubleJump, Sword OR Hammer OR Shuriken=1  # with sword, breaking the wall makes it way easier than jumping from the small ledge.
    unsafe: DoubleJump, Flash=1 OR Sentry=1
  conn WoodsMain.AfterKuMeet:  # paths gliding to the left, either from above or below
    gorlek:
      Glide, DoubleJump, TripleJump
      Glide, SentryJump=1

# checkpoint at 906, -4136

anchor WoodsMain.FourKeystoneRoom at 944, -4137:  # In front of the four keystone door
  refill Checkpoint

  state WoodsMain.KeystoneDoor:
    moki: Keystone=4

  pickup WoodsMain.MiddleLeafPileEX:
    moki: Flap
  pickup WoodsMain.RightKS:
    moki:
      Glide OR Launch
      Bash, Grenade=1
    gorlek:
      Bash  # so many skeeto friends oriGlow
      SentryJump=1
      DoubleJump, TripleJump
    kii: DoubleJump, Sword  # bait a skeeto and pogo it
    unsafe: DoubleJump  # Climb the left wall to get on the right wall, let ori slide slowly then double jump and quickly turn around to catch the other side of the wall
  pickup WoodsMain.UpperKS:
    moki, BreakWall=3:
      Glide OR Launch
      Bash, Grenade=1, DoubleJump OR Dash
    gorlek:
      Flap, Glide  # lure the balloon
      BreakWall=3, DoubleJump, TripleJump
      BreakWall=3, Combat=3xSkeeto, SwordSJump=1
      BreakWall=3, Combat=3xSkeeto, HammerSJump=1, DoubleJump OR Dash
      BreakWall=3, Bash, Grenade=1 OR DoubleJump OR Dash
    kii:
      BreakWall=3, DoubleJump OR Bash
      BreakWall=3, Sword, Dash  # Pogo the skeetos
      Flash=1, Glide OR DoubleJump OR Bash  # Use flash to kill the balloon near the bulb
      Damage=20, Glide OR DoubleJump OR Bash  # lure the balloon
    unsafe:
      Hammer, Combat=Balloon  # seems like there is a micro ledge on the wall bellow the pickup which reset your upslash
      BreakWall=3, SentryJump=1  # start your double jump from the higher floor near the spikes / bash the mosquitos / sjump from the platform next to the door to reach the platformtform above the door, sjump from there and sword combo + up slash
  pickup WoodsMain.LeftKS:
    moki: Combat=Balloon, Glide
    gorlek, Combat=Balloon:
      Damage=15, DoubleJump, TripleJump OR Dash
      Launch
    kii:
      DoubleJump, Combat=Balloon, Damage=15
      DoubleJump, Damage=20
    unsafe:
      DoubleJump, TripleJump  # tjump on the wall above
  pickup WoodsMain.LowerKS:  # All path reaching that pickup without breaking the yellow wall are from WallOreLedge
    moki, Flap:  # Flap being the casual way of breaking the yellow barrier
      Glide OR Launch
      DoubleJump, Dash
      Bash, DoubleJump OR Dash
    gorlek, Flap:
      DoubleJump OR Dash OR Sword
      Hammer, Bash
    kii:
      # moki/gorlek paths but bait the balloon near the wall instead of using flap
      Combat=Balloon, Glide OR Launch OR DoubleJump OR Dash OR Sword OR Hammer
      Damage=20, Glide OR Launch OR DoubleJump OR Dash OR Sword OR Hammer
      # new paths
      Bash, Combat=Balloon, Spear=1 OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1 OR Damage=15
      Bash, Damage=20, Spear=1 OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1 OR Damage=15
      Flap OR Combat=Balloon OR Damage=20:  # energy management is fun
        Spear=3 OR Shuriken=3 OR Sentry=3 OR Blaze=4 OR Flash=3 OR Sentry=3
        Damage=15, Spear=2 OR Shuriken=2 OR Sentry=2 OR Blaze=2 OR Flash=2 OR Sentry=2
        Damage=30, Spear=1 OR Shuriken=1 OR Sentry=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe:
      Bash, Flap OR Combat=Balloon OR Damage=20  # precise jump to avoid damage in the first spikes. Bash glide from the bashable plant to the platform before the pickup
      Flap OR Combat=Balloon OR Damage=20:  # friendly spikes
        Spear=2 OR Sentry=2 OR Blaze=2 OR Flash=2 OR Sentry=2
        Damage=15, Spear=1 OR Shuriken=1 OR Sentry=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      # fiendly spikes and slide from the ceiling to the platform
      Flap OR Combat=Balloon OR Damage=20:
        Shuriken=1 OR Damage=15
  pickup WoodsMain.BelowKeystonesEX:  # Make sure it's not redundant with WallOreLedge->BelowKeystonesEX
    gorlek:
      Launch
      DoubleJump, TripleJump OR Dash
    kii:
      Bash
      DoubleJump, Shuriken=1 OR Flash=1 OR Sentry=1
      DoubleJump, Sword, Damage=15  # Pogo the plant
      Dash  # reset dash on the wall
    unsafe:
      DoubleJump  # get a wall jump after dropping down

  conn WoodsMain.GiantSkull:
    moki: WoodsMain.KeystoneDoor
  conn WoodsMain.WallOreLedge:
    moki: DoubleJump OR Dash OR Glide OR Launch
    gorlek: Sword OR Hammer
    kii: Bash OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe: Grenade=1 OR Bow=1
  conn WoodsMain.BelowFourKeystoneRoom: free

anchor WoodsMain.GiantSkull at 957, -4138:  # Behind the four keystone room door
  refill Checkpoint

  state WoodsMain.KeystoneDoor:
    moki: Keystone=4

  pickup WoodsMain.UpperLeafPileEX:
    moki: Flap
  pickup WoodsMain.BehindDoorRoofEX:
    moki, Combat=Balloon:
      Bash OR Launch
      DoubleJump, Dash, Glide
    gorlek, Combat=Balloon:
      SentryJump=1
      DoubleJump, Glide, TripleJump OR Sword OR Hammer
    kii:
      # Moki/gorlek paths ignoring the balloon
      Bash OR Launch
      Glide, DoubleJump, Dash OR TripleJump OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      # New paths
      DoubleJump, TripleJump, Sword  # Pogo the balloon
      Glide, Dash, Hammer OR Shuriken=1
    unsafe:
      Glide, DoubleJump  # need a really precise vertical boost from the wind
      Glide, Dash, Sword  # dash->upslash->downslash
      Glide, Dash, Spear=1 OR Blaze=1 OR Flash=1 OR Sentry=1

  conn WoodsMain.BalloonLure:
    moki: Combat=Balloon, Bash, DoubleJump OR Dash OR Glide OR Launch  # bash for the rude placement of the tentacle
    gorlek, Combat=Balloon:
      Bash, Sword
      Bash, HammerSJump=1
    kii:
      # Moki/gorlek paths ignoring the balloon
      Bash, DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Shuriken=1 OR Damage=15
      # new paths
      Launch OR Glide
      Combat=Tentacle, DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Damage=15
    unsafe: Bash
  conn WoodsMain.FourKeystoneRoom:
    moki: WoodsMain.KeystoneDoor

anchor WoodsMain.BalloonLure at 1056, -4144:  # At the bottom of the shaft you lure a balloon through to break a yellow wall - mostly exists for the lure specifically since paths for it would otherwise be awkward
  refill Checkpoint

  pickup WoodsMain.YellowWallEX:
    moki: BreakWall=3, Flap, Glide
    gorlek: BreakWall=3, Flap, Launch
    kii:
      Glide OR Launch:  # no combat=balloon, Damage=20 variation because I'm assuming BreakWall=3 is less restrictive than Combat=Balloon
        Combat=Balloon, BreakWall=3
        Damage=20, Damage=20 OR BreakWall=3  # dboost on the balloon when it's close to the corruption/wall
      BreakWall=3, DoubleJump, TripleJump, Flap OR Combat=Balloon OR Damage=20
    unsafe:
      DoubleJump, TripleJump, Damage=20, Flap OR Combat=Balloon OR Damage=20  # dboost on the balloon to break the corruption
      BreakWall=3, DoubleJump, Dash, Bash, Grenade=1  # Bait the enemy by jumping and imediately dashing against the left wall, double wall off the wall to  get to the edge near the spikes and bash grenade. Launch the grenade near the right edge and bash it to get to the left edge. If you are too slow, the enemy will die from the explosion after your bash
      Launch  # Use launch invulnerability to protect you from balloon's explosions

  conn WoodsMain.BelowHiddenOre:
    moki: BreakWall=3, Glide
    gorlek: BreakWall=3, Launch
    kii:
      Damage=20, Glide OR Launch
      BreakWall=3, DoubleJump, TripleJump, Combat=Balloon OR Damage=20  # Don't need the balloon for anything but he's really annoying to avoid
    unsafe:
      DoubleJump, TripleJump, Damage=20
      BreakWall=3:
        DoubleJump, Bash, Grenade=1  # land on the ledge near the spikes bellow the breakable wall
        DoubleJump, SentryJump=1  # land on the ledge near the spikes bellow the breakable wall
        Dash, Bash, Grenade=2
        Bash, Grenade=3  # bash grenade to get on the skull, bash a tentacle projectile and the bashable plant to get to the blowing enemy level, 2nd bash grenade to get near the spikes and last one to reach the connection
        SentryJump=3  # jump + sword combo to reach the skull, sword combo to reach the tentacle. use your sjumps to get to the connection
  conn WoodsMain.GiantSkull:
    moki:
      Glide OR Launch
      DoubleJump, Dash
    gorlek:
      DoubleJump, TripleJump OR Sword
      Bash, DoubleJump OR Dash
    kii:
      Dash
      DoubleJump, Hammer OR Damage=15
      Bash, Hammer OR Shuriken=1 OR Sentry=2

anchor WoodsMain.BelowHiddenOre at 1038, -4101:  # Below and to the right of the hidden ore, close to the yellow wall
  pickup WoodsMain.HiddenOre:
    moki: Flap, Glide
    gorlek:
      Launch  # Launch straight up from the right side of the fire pit to touch the ceiling, go a bit to the left, launch again on the right wall, wall jump and launch to the pickup. Launch again to return to safety
      DoubleJump, TripleJump, Bash, Damage=15  # can either use the plant or the skeeto
    kii: DoubleJump, Bash  # bash the plant and the skeeto, wall jump on the right wall
    unsafe:
      SentryJump=1, DoubleJump, TripleJump, Damage=15  # sjump from a micro ledge at very edge of the fire pit
      Sword, DoubleJump, TripleJump, Damage=15  # double jump onto the wall, then double sword jump into the spikes.

  conn WoodsMain.PetrifiedHowl:
    moki: Glide
    gorlek: Launch  # launch on the wall just bellow the ceiling's spikes, wall jump and lauch again to get to the right wall after the ceiling's spikes
    kii:
      DoubleJump, Damage=45
      DoubleJump, Damage=15, TripleJump OR Bash  # With bash, bait the skeeto
    unsafe:
      DoubleJump, Damage=30
      DoubleJump, Damage=15, Shuriken=2 OR Flash=2 OR Sentry=2
  conn WoodsMain.BalloonLure:
    moki:
      Combat=Tentacle, Sword OR Hammer
      Combat=Tentacle, BreakWall=3, Grenade OR Blaze
      Bash, Sword OR Hammer
      Bash, BreakWall=3, Grenade OR Blaze
    unsafe:
      ShurikenBreak=3 OR Sentry=1

anchor WoodsMain.PetrifiedHowl at 910, -4071:  # At silenced Howl
  refill Checkpoint
  refill Health=1

  pickup WoodsMain.PetrifiedHowlEX: free

  conn WoodsMain.AboveHowl:
    moki: Launch, DoubleJump OR Dash OR Bash OR Glide  # if you don't think of going straight up, these can also carry you through the way around
    gorlek:
      Launch
      Bash, Grenade=1  # it's a checkpoint, you have retries to figure it out
      SentryJump=1, DoubleJump, TripleJump
      SentryJump=1, DoubleJump, Dash
    kii: DoubleJump, Bash  # Bash the tentacle projectile
    unsafe:
      Bash
      DoubleJump, TripleJump
  conn WoodsMain.TrialStart:  # Be carefull that it's not redundant with the AboveHowl connection
    moki: BreakWall=3, Bash, Glide
    gorlek:
      BreakWall=3, Glide, Damage=10  # just easy to catch a projectile
      BreakWall=3, DoubleJump, Bash, Damage=15  # different ways to solve
      Bash, DoubleJump, TripleJump
      Dash, DoubleJump, TripleJump, Damage=10  # just easy to catch a projectile
    kii:
      BreakWall=3, Glide
      DoubleJump, Sword  # pogo the tentacles
      Dash, DoubleJump, TripleJump
  conn WoodsMain.BelowHiddenOre:
    moki:
      Glide
      Launch, DoubleJump OR Dash
    gorlek:
      DoubleJump OR Dash OR Launch  # just holding right works so nicely
    kii:
      Sword OR Hammer OR Sentry=3
      Blaze=3, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Damage=15, Spear=2 OR Shuriken=2 OR Flash=2 OR Sentry=2
      Damage=15, Damage=15, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe: free  # Friendly spikes truly are the best friends of rando players

# checkpoint at 824, -4068

anchor WoodsMain.TrialStart at 848, -4052:  # At the collapsing petrified Owl
  refill Checkpoint

  pickup WoodsMain.SpiritTrial:
    moki: WoodsMain.TrialActivation, DoubleJump, Dash, Bash, Grapple, Burrow

  conn WoodsMain.AboveHowl:
    moki:
      DoubleJump OR Launch
      Bash, Grenade=2
    gorlek:
      Dash, Damage=15
      Bash OR SentryJump=1
      Grapple, Glide
    kii:
      Dash OR Sword OR Hammer OR Damage=15  # With sword, pogo the skeeto
      Grapple, Sentry=3 OR Blaze=5
    unsafe: Grapple, Shuriken=3
  conn WoodsMain.MidwayTrial:
    moki:
      DoubleJump, Bash, Grapple, Dash OR Glide
      Launch, Grapple, Bash, DoubleJump OR Dash OR Glide
    gorlek:
      Launch, DoubleJump OR Dash OR Glide
      DoubleJump, Bash, Grapple
    kii:
      Launch
      DoubleJump, TripleJump, Grapple OR Damage=15
    unsafe:
      Hammer, DoubleJump, Grapple  # either djump+upslash to get a walljump just under the checkpoint or upslash+one slash to land on the branch
      Sword, DoubleJump, Grapple  # upslash+downslash to pass through the semi solid branch at the checkpoint

anchor WoodsMain.MidwayTrial at 873, -3980:  # At the checkpoint under the first sand bag
# This anchor is purely to make WoodsMain.TrialStart->WoodsMain.OverflowShard less painful to pathfind
  refill Checkpoint

  conn WoodsMain.TrialEnd:
    moki:
      DoubleJump, Bash, Burrow, Dash OR Glide
      Launch, Bash, DoubleJump OR Dash OR Glide
    gorlek:
      Launch, DoubleJump OR Dash OR Bash OR Glide
      Launch, Damage=15, Sword OR Hammer OR Burrow
      DoubleJump, Bash, Burrow, TripleJump OR Sword
      DoubleJump, Bash, Burrow, Hammer, Damage=15
      DoubleJump, Bash, Grenade=2, Damage=15, TripleJump OR Dash OR Glide OR Sword  # You can either damage boost at the first sand ball or grenade bash from below
    kii:
      Launch
      DoubleJump, Bash, Burrow OR Grenade=2
      DoubleJump, Burrow, Damage=30
    unsafe:
      DoubleJump, TripleJump, Damage=30
  conn WoodsMain.AboveHowl:
    gorlek: free  # Jump and hold right

anchor WoodsMain.TrialEnd at 868, -3952:  # Below the trial end pedestal
  refill Checkpoint

  state WoodsMain.TrialActivation:  # Since you have to reach this place again in a race to get an advantage, only paths possible during a trial are meaningful
    moki: DoubleJump, Dash
    gorlek: DoubleJump, TripleJump OR Glide

  pickup WoodsMain.OverflowShard:
    moki:
      DoubleJump, Dash OR Glide
      Launch
    gorlek: DoubleJump OR Dash OR Glide

  conn WoodsMain.AboveHowl:
    moki:
      DoubleJump, Dash OR Bash OR Glide
      Launch
    gorlek: DoubleJump OR Dash OR Bash OR Glide OR Sword OR Hammer

anchor WoodsMain.AboveHowl at 916, -4047:  # At the semisolid above silenced Howl
  pickup WoodsMain.HiddenEX: free

  conn WoodsMain.PetrifiedHowl: free
  conn WoodsMain.Teleporter:
    moki:
      Combat=4xBalloon, BreakWall=3, DoubleJump OR Launch
      Combat=4xBalloon, BreakWall=3, Bash, Grenade=1
    gorlek: SentryJump=1, Combat=Balloon OR Dash OR Damage=20
    kii:
      Sword  # Pogo the skeeto twice
      Bash, BreakWall=3
      BreakWall=3, DoubleJump OR Launch  # Ignore the balloons
      Hammer, Glide OR Dash OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
  conn WoodsMain.TrialStart:
    moki: Launch OR DoubleJump OR Bash
    gorlek: Hammer OR SentryJump=1
    kii: Sword  # Pogo a skeeto
    unsafe: free  # Touch the checkpoint then die or qtm
  conn WoodsMain.OrangeTree:  # pass over the tree
    gorlek, Combat=Balloon:
      Launch
      DoubleJump, Bash, Grenade=1
      DoubleJump, SentryJump=1
      Bash, Grenade=2
    kii:
      Launch
      DoubleJump, Bash, Grenade=1
    unsafe:
      Bash, Grenade=2  # You can kill the balloon with your first bashgrenade

# checkpoint at 980, -4015

anchor WoodsMain.Teleporter at 1083, -4052:  # At the East Woods Teleporter
  refill Full

  state NonGladesTeleporter: free

  conn Teleporters: free
  conn WoodsMain.AbovePit:  # So far, this also cover the OrangeTree connection
    moki:
      Glide
      DoubleJump, Bash, Launch  # :)
    gorlek: Launch, Damage=15
    kii:
      Launch
      DoubleJump, TripleJump, Damage=45
      DoubleJump, TripleJump, Bash, Damage=15
    unsafe:
      DoubleJump, Damage=45, Dash OR Shuriken=2
      DoubleJump, Damage=15, TripleJump OR Bash
  conn WoodsMain.AboveHowl:  # moki paths are solved with the Teleporter->AbovePit->OrangeTree connection. Make sure this isn't redundant with Teleporter->OrangeTree->AboveHowl
    gorlek, Sword OR Hammer OR Grenade=1 OR Blaze=1 OR Sentry=1:  # these can break the corruption from behind
      DoubleJump, Combat=2xBalloon, Hammer OR Sword OR TripleJump
      DoubleJump, Dash
      SentryJump=1, Combat=2xBalloon OR Dash
      Bash, Grenade=1, Combat=2xBalloon OR Dash
      Launch
    kii, Sword OR Hammer OR Grenade=1 OR Blaze=1 OR Sentry=1:
      Combat=Balloon, DoubleJump, Sword OR Hammer OR TripleJump OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # only need to kill the first balloon
      Damage=20, DoubleJump, Sword OR Hammer OR TripleJump OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # dboost on the first balloon to kill it
    unsafe, ShurikenBreak=3 OR Sword OR Hammer OR Grenade=1 OR Blaze=1 OR Sentry=1:
      DoubleJump
      SentryJump=1, Combat=2xBalloon OR Dash
      Bash, Grenade=1, Combat=2xBalloon OR Dash

anchor WoodsMain.OrangeTree at 1030, -4010:  # At the right of the tree above the teleporter
# Conenction to teleporter are handled through AbovePit. And even then, going to the teleporter is only allowing you to either go back to AbovePit or go AboveHowl, making going to the teleporter pointless in the first place
  conn WoodsMain.AbovePit:
    moki: Bash OR Glide OR Launch
    gorlek:
      DoubleJump
      Dash
    kii: Sword  # Pogo the plant
    unsafe: Hammer, Shuriken=1 OR Flash=1 OR Sentry=1
  conn WoodsMain.AboveHowl:
    moki:
      Launch
    gorlek:
      SentryJump=1, DoubleJump
      DoubleJump, Bash, Grenade=1
    kii: Bash

# checkpoint at the anchor below, could split another anchor off for the crystal and move it over

anchor WoodsMain.AbovePit at 1234, -3985:  # To the left of the pit before feeding grounds
  refill Energy=3:  # the crystal in the pit
    unsafe: BreakCrystal, Bash, DoubleJump OR Dash OR Glide OR Launch  # technically just Bash

  conn WoodsMain.Teleporter:  # a dead end in moki
    gorlek: DoubleJump OR Dash OR Glide OR Launch OR Sword OR Damage=15
    kii:
      Hammer OR Shuriken=2 OR Blaze=4 OR Flash=2 OR Sentry=2 OR Damage=15
      Bash, Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
  conn WoodsMain.OrangeTree:
    moki: Bash OR Glide OR Launch
    gorlek:
      DoubleJump, Dash OR TripleJump OR Damage=15
      Dash, Damage=15
    kii:
      Damage=30
      Sword  # Pogo the plant
      Damage=15, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Hammer, DoubleJump OR Dash
  conn WoodsMain.FeedingGrounds:
    moki:
      DoubleJump, Dash OR Bash
      Glide OR Launch
      Bash, Grenade=1
    gorlek:
      DoubleJump, Hammer
      Bash, Dash OR Hammer
      Sword
    kii:
      Dash OR DoubleJump OR Hammer OR Blaze=4 OR Sentry=2
      Bash, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
  conn WoodsShrine:  # Make sure this isn't redundant with AbovePit->FeedingGrounds->WoodsShrine
    gorlek: Damage=15, DoubleJump OR Dash
    kii:
      Blaze=4 OR Sentry=2
      Damage=15, Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
    unsafe: free

anchor WoodsMain.FeedingGrounds at 1292, -3993:  # At the left entrance to feeding grounds
  refill Checkpoint

  # having the initial escape completed is a negative, not a positive. The paths going through it are the connections to Wastes.
  # if you complete the initial escape, rocks fall and block most of the connection paths to WestTP. This is equally true for the base game though and solved by the fact that if you complete the escape, you unlock the teleporter, making these paths not softlockable

  conn WoodsShrine:
    moki:
      Glide OR Launch
      DoubleJump, Dash
    gorlek: Damage=15, DoubleJump OR Dash
    kii:
      DoubleJump OR Dash OR Sword OR Hammer OR Blaze=4 OR Sentry=2
      Damage=15, Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe: free
  conn LowerWastes.WestTP:
    moki:
      Grapple, Glide, DoubleJump OR Dash OR Launch  # this solves with Seir as well
      WindtornRuins.Seir:  # these wouldn't solve without Seir
        DoubleJump, Bash, Grenade=1, Grapple
        Grapple, Glide
        Burrow
        Launch
    gorlek:
      Launch
      Burrow  # If doing cat and mouse, burrow below first to reset shriek aggression then burrow to the TP
      Glide, DoubleJump, TripleJump
      Glide, Grapple, DoubleJump OR Dash
      Grapple, SentryJump=1, DoubleJump
      WindtornRuins.Seir:  # these wouldn't solve without Seir
        SentryJump=1, DoubleJump, TripleJump  # tjump+up slash to reach the grappable surface
        Bash, Grenade=1, Grapple
        Bash, Grenade=2, Dash  # Dash to get in bash range on the 2nd grenade to get on the grappable surface
        Bash, Grenade=1, DoubleJump, TripleJump, Dash OR Sword OR Hammer
    kii:
      DoubleJump, TripleJump
      Glide, Dash, DoubleJump, Sword OR Hammer
      Glide, DoubleJump, Hammer, Shuriken=1 OR Flash=1 OR Sentry=1
      Bash, Grenade=1, Dash, DoubleJump, Sword OR Hammer
      Bash, Grenade=1, DoubleJump, Hammer, Shuriken=1 OR Flash=1 OR Sentry=1
      WindtornRuins.Seir:  # these wouldn't solve without Seir
        Glide, Bash, Grenade=1, DoubleJump OR Dash
        Bash, Grenade=2, DoubleJump
    unsafe:
      DoubleJump, Bash, Grenade=1
  conn WoodsMain.AbovePit:
    moki:
      DoubleJump, Bash
      Launch
    gorlek:
      Bash, Grenade=1, Dash OR Glide OR Sword OR Hammer
      SentryJump=1, DoubleJump OR Dash OR Glide
    kii:
      Bash, Grenade=1
      Dash, DoubleJump, TripleJump, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      DoubleJump, TripleJump, Hammer, Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe: DoubleJump  # fall then good old glide skip

anchor WoodsShrine at 1361, -4068:
  refill Full

  state WoodsMain.CombatShrineCompleted:
    moki, Regenerate, Combat=Hornbug+Lizard+3xSkeeto+4xEnergyRefill+2xCrystalMiner+Bat+4xEnergyRefill+9xBalloon+4xEnergyRefill+4xMantis+Bat:  # this one has it all -_-
      Damage=80
      Damage=65, DoubleJump OR Dash
      Damage=50, Launch
    unsafe: Combat=Hornbug+Lizard+3xSkeeto+4xEnergyRefill+2xCrystalMiner+Bat+4xEnergyRefill+9xBalloon+4xEnergyRefill+4xMantis+Bat

  pickup WoodsMain.ShrineEX: free
  pickup WoodsMain.CombatShrine:
    moki: WoodsMain.CombatShrineCompleted

region LowerReach:
  moki: Danger=40, Regenerate
  gorlek: Regenerate
  kii: Regenerate
  unsafe: free

anchor LowerReach.Entry at -390, -4025:  # Behind Baur
  refill Checkpoint
  refill Health=1

  state LowerReach.BearSneezed:
    moki: Flap
  state LowerReach.HeatBaurFurnace:
    moki, LowerReach.BearSneezed, LowerReach.BearBridgeBroken:
      Bash, Flap
      Grenade=1
  state LowerReach.CoolBaurFurnace:
    moki: LowerReach.BearSneezed, LowerReach.BearBridgeBroken, Flap

  pickup LowerReach.BelowBaurEX:
    moki, LowerReach.BearSneezed, LowerReach.BearBridgeBroken:
      DoubleJump, Dash, Bash, Flap
      Bash, Grenade=1
      Launch
    gorlek, LowerReach.BearSneezed, LowerReach.BearBridgeBroken:
      SentryJump=1
      Dash, DoubleJump, TripleJump
    kii, LowerReach.BearSneezed, LowerReach.BearBridgeBroken:
      Bash
      DoubleJump, TripleJump, Sword OR Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1
      Dash, DoubleJump, Sword OR Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Spear=1  # without hmmaer/sword, you only get one shot at these else you have to return to the anchor from a teleporter
    unsafe, LowerReach.BearSneezed, LowerReach.BearBridgeBroken:
      Grenade=1  # GrenadeJump=1
      Dash, DoubleJump, Blaze=1

  conn LowerReach.AboveEntry:
    moki:
      DoubleJump, Launch  # Can't rely on the sleeping bear to be there
      Bash, DoubleJump OR Launch OR Grenade=1
    gorlek:
      Bash, Dash
      Launch  # a little tight but totally doable. Jump up before launching.
      Bash, Glide, Damage=20
      SentryJump=1, DoubleJump OR Bash
    kii:
      Bash, Damage=20, Sword OR Hammer OR Sentry=2 OR Shuriken=2 OR Flash=2
    unsafe:
      SentryJump=1
      Bash  # can be done damageless, but damage is likely. Keep jumping at the right wall until you go over it and bash the first latern at just the right angle to reach the second
      DoubleJump, TripleJump, Sentry=3, Damage=20  # https://streamable.com/1rus0h except you can use some friendly spikes to avoid the first dboost
      DoubleJump, Hammer, Damage=20  # Hammer jumps
  conn LowerReach.Icefall:
    unsafe: DoubleJump, TripleJump, Hammer  # climb the left wall. Yes this is horrible after doing the escape
  conn WestGlades.Upper:
    moki: LowerReach.BearSneezed

anchor LowerReach.AboveEntry at -401, -4000:  # On the platform above Baur inside the tree trunk
  refill Checkpoint

  state LowerReach.Lever:
    moki:
      Launch
      LowerReach.HeatBaurFurnace, DoubleJump
    gorlek:
      LowerReach.HeatBaurFurnace, Dash
      LowerReach.HeatBaurFurnace, Bash, Grenade=1
    kii:
      DoubleJump, TripleJump, Damage=20
      Bash, Grenade=1, DoubleJump OR Dash OR Sword OR Hammer OR Sentry=2 OR Flash=2 OR Shuriken=2 OR Spear=2  # @validator djump/dash might be good enough for gorlek
      LowerReach.HeatBaurFurnace, Sword OR Sentry=2
      LowerReach.HeatBaurFurnace, Hammer, Shuriken=1 OR Sentry=1 OR Flash=1
      LowerReach.HeatBaurFurnace, Glide, Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      # LowerReach.HeatBaurFurnace, Glide, Spear=1
      LowerReach.HeatBaurFurnace, Sword OR Hammer OR Glide
      Bash, Grenade=1, Glide  # Use the plant as a platform
      SentryJump=1  # you actually want a weaker jump to land on top of the plant, a strong one will send you sailing over it. Weapon stalls from there
      Bash, Sword OR Hammer OR DoubleJump OR Dash OR Glide OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      DoubleJump, TripleJump, Sword OR Hammer  # you first need to get on the plant on the left
      Dash, DoubleJump, Damage=20, Hammer OR Sword  # djump+upslash+ dash in the spikes, grab the plant then djump + upslash to reach the left wall. Sword much harder, need to get a ramp

  pickup LowerReach.AboveBaurLowerEX:
    moki:
      Launch
      LowerReach.CoolBaurFurnace, Bash, Grenade=1  # seemed a bit hectic without cooling the furnace
      DoubleJump, Bash, LowerReach.HeatBaurFurnace OR Grenade=1  # use a grenadebash if you can't use the tongue plant
    gorlek:
      LowerReach.HeatBaurFurnace, Bash, Dash OR DoubleJump OR Glide  # have fun with the snaptraps
      Bash, Grenade=1 OR SentryJump=1
      SentryJump=2
    kii:
      DoubleJump, TripleJump  # Climbing frozen tongue with TripleJump, tjump from the left wall into the xp
      LowerReach.HeatBaurFurnace, Bash, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
      LowerReach.HeatBaurFurnace, DoubleJump, Dash OR Sword OR Hammer OR Sentry=2
    unsafe:
      SentryJump=1, DoubleJump  # sjump, climb the left wall then djump + up slash + weapon stall to reach the xp
      Bash  # jump repeatedly under the left side of the snaptrap to aggro the spitter. yes, really.
      DoubleJump, Dash  # From the left of the frozen tongue, dash ramp+doublejump+dash. Jump off the tongue asap, djump+dash. Climb the left wall then djump + dash
      LowerReach.HeatBaurFurnace, Sword, Hammer, Sentry=2, Damage=20  # pogo the mortar, climb the left wall then sentry+hammer upslash (you'll get a dboost there). Land on the ledge then jump, hammer upslash, sword hover+sentry at the end
      LowerReach.HeatBaurFurnace, Dash, Sword, Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1  # pogo the mortar once to go to the left wall and a second time to climb the wall. upslash+dash+energy from there
  pickup LowerReach.AboveBaurUpperEX:
    moki:
      Launch
      LowerReach.HeatBaurFurnace, DoubleJump, Dash, Bash
    gorlek:
      LowerReach.HeatBaurFurnace, DoubleJump, Bash
    kii:
      LowerReach.HeatBaurFurnace, DoubleJump, TripleJump OR Sword OR Hammer
      LowerReach.HeatBaurFurnace, Bash, Damage=20, Sword OR Hammer OR Glide OR Dash OR Spear=1 OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1  # land in the spikes near the mortar before it shoots then bash it and its projectile
    unsafe:
      DoubleJump, TripleJump  # I hope you'll hate that path as much as I do so it can stay in unsafe for ever
      LowerReach.HeatBaurFurnace, SentryJump=2, DoubleJump OR Damage=20  # First jump into the spikes near the shooter, can use lower jump to snaptrap - wall - weapon stall to spikes, then sentry up from spikes to the tongue plant
      LowerReach.HeatBaurFurnace, SwordSJump=2  # Pogo the shooter to make it to the left wall, move a bit away from it then sjump+upslash to reach the tongue
      LowerReach.HeatBaurFurnace, SentryJump=1, Dash  # up slash + dash to reach the left wall. Move a bit away from it, sjump to reach the tongue
      LowerReach.HeatBaurFurnace, Bash  # jump repeated under the left side of the snaptrap to aggro the spitter. On the second snaptrap, bash the projectile upwards then jump to it and bash to AboveBaurLowerEX. If you stayed long enough on the snaptrap, the shooter should shot a new projectile which you can use to grab the tongue.
      LowerReach.HeatBaurFurnace, Dash, Sword, Hammer OR Shuriken=2 OR Flash=2 OR Sentry=2  # pogo the mortar once to go to the left wall and a second time to climb the wall. upslash+dash+energy from there

  conn LowerReach.Icefall:
    moki: LowerReach.HeatBaurFurnace OR DoubleJump OR Launch
    gorlek: Dash
    kii:
      Bash, Grenade=1  # @validator might be ok for gorlek
      Sword OR Hammer OR Sentry=2 OR Shuriken=2  # with hammer/sword: upslash before grabing the frozen tongue, jump out of it then weapon stall
    unsafe:
      Bash  # jump to aggro the spitter (or use grenade) and catch high up on the frozen tongue, then jump off quickly
  conn LowerReach.Central:
    moki, LowerReach.Lever:
      Bash, DoubleJump OR Dash OR Glide
      Launch
    gorlek, LowerReach.Lever:
      DoubleJump, TripleJump OR Dash
      Glide, DoubleJump OR Dash
    kii, LowerReach.Lever:
      Sword, Spear=1 OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1 OR Damage=20
      Hammer, Shuriken=1, Damage=20
      Bash, Sword OR Hammer OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1 OR Damage=20
      Glide, Sword OR Hammer OR Damage=20
      Dash, Sword OR Hammer OR Sentry=2 OR Damage=20
      DoubleJump, Sword OR Sentry=2 OR Damage=20
    unsafe, LowerReach.Lever:
      Hammer, Damage=20, Spear=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Glide, Spear=1 OR Sentry=1 OR Shuriken=1 OR Flash=1
      Dash, Shuriken=1 OR Sentry=2  # Dash on the small wall from the branch where the lantern is attached, dash again then stall with sentry/shuriken
  conn LowerReach.Entry: free

anchor LowerReach.Icefall at -448, -3999:  # Where you drop the rock on Baur's nose
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  state LowerReach.BearBridgeBroken:
    moki: LowerReach.BearSneezed  # the game behaves weird when dropping the rock on Baur
  state LowerReach.LeftFurnace:
    moki:
      Grenade=1, Bash, DoubleJump OR Dash OR Glide  # Grenade to light the furnace
      Grenade=1, Launch  # Grenade to light the furnace
      Grenade=1, Grapple, DoubleJump  # Grenade to light the furnace
    gorlek:
      Grenade=1, Bash
      Grenade=1, Grapple, Dash OR Glide OR Sword OR Hammer  # Weapon stall after grabing the plant. Use sword/hammer to combat the Bees as well
      Grenade=1, SentryJump=1, Combat=Nest
    kii:
      Grenade=1, Combat=Nest, Damage=20  # Damage boost on the spikes on the frozen waterfall
      Grenade=1, DoubleJump, TripleJump, Combat=Nest  # @validator Might be ok for gorlek
      Grenade=1, Grapple, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      Grenade=1, DoubleJump, Combat=Nest

  pickup LowerReach.IcefallOre:
    moki, LowerReach.LeftFurnace:
      Bash, Grapple OR Launch  # bash the enemies
      Combat=2xSlug, Grapple, Damage=10, DoubleJump OR Dash  # grapple past the enemies and probably get hit by them
      Water, Launch  # swim past the enemies
    gorlek, LowerReach.LeftFurnace:
      Water, WaterDash, DoubleJump, TripleJump
      Bash
      Grapple, Damage=10, Sword OR Hammer OR DoubleJump OR Dash OR Glide  # weapon stall needed, probably get hit by wasps
      Launch, Damage=10
    kii, LowerReach.LeftFurnace:
      Launch
      Grapple, Sword OR Hammer OR DoubleJump OR Dash OR Glide OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      WaterDash, DoubleJump, Water, Sword OR Hammer OR Spear=1
      WaterDash, DoubleJump, Damage=20, TripleJump OR Sword OR Hammer OR Spear=1 OR Flash=1 OR Sentry=1  # @validator the tjump variation should be fine for gorlek
      DoubleJump, TripleJump, Sword OR Hammer  # land on the snaptrap and tjump+upslash from there. Sword/Hammer can deal with the combat. With sword, you can make the path easier by pogoing a fish or hitting mosquitos but it's not mandatory.
      DoubleJump, Dash, Sword OR Hammer  # can hit the skeetos/nest with sword to reset djump but not mandatory.
      DoubleJump, TripleJump, Dash, Combat=Nest  # bait the second snaptrap, coyote dash+dash+tjump from there
      DoubleJump, TripleJump, Combat=Nest, Sentry=3 OR Shuriken=2  # bait the second snaptrap, tjump+energy weapon from there
      DoubleJump, TripleJump, Glide, Combat=Nest, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Water OR Damage=20
    unsafe, LowerReach.LeftFurnace:
      # DoubleJump, Glide, Sword  # pogo the fish, land on the snaptrap. from the second snaptrap, glide+djump+upslash
      DoubleJump, Sword  # reset your djump by hitting the nest with sword
      DoubleJump, Dash, Combat=Nest, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Damage=40  # bait the second snaptrap, dash ramp on the snaptrap then dash+djump.
      DoubleJump, TripleJump, Combat=Nest, Glide OR Water OR Damage=20  # with glide, glide jump
      Combat=Nest, SwordSJump=1, DoubleJump, TripleJump  # running sjump +tjump+upslash
      Combat=Nest, HammerSJump=1, DoubleJump, TripleJump, Dash
  pickup LowerReach.IcefallEX:
    moki, LowerReach.LeftFurnace:
      DoubleJump, Bash  # bash the enemies
      Combat=2xSlug, DoubleJump, Grapple, Damage=10  # grapple past the enemies and probably get hit by them
      Combat=2xSlug, Water, DoubleJump, WaterDash  # swim past the enemies
      Launch
    gorlek, LowerReach.LeftFurnace:
      Water, WaterDash, DoubleJump
      Water, DoubleJump, TripleJump
      DoubleJump, TripleJump, Damage=20  # dboost in the poisonous water
      WaterDash, DoubleJump, Damage=20
      Grapple, DoubleJump
    kii, LowerReach.LeftFurnace:
      DoubleJump, TripleJump, Dash OR Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1  # @validator dash variation might be gorlek
      DoubleJump, Damage=40  # dboost in poisonous water and spikes to reach snaptrap
      DoubleJump, Water, Damage=20  # dboost in spikes to reach the snaptraps
      DoubleJump, Dash, Hammer
      DoubleJump, Dash, Sword, Spear=1 OR Damage=20
      Grapple, Hammer
      Grapple, Damage=20, Dash OR Glide OR Sword OR Spear=2 OR Shuriken=2 OR Blaze=2 OR Flash=2 OR Sentry=2  # dboost to get the pickup
      Grapple, Spear=1, Dash OR Glide OR Sword OR Shuriken=2 OR Blaze=2 OR Flash=2 OR Sentry=2  # Spear to reach the pickup
      Grapple, Spear=3
      WaterDash, Hammer, Damage=20 OR Water
      Water, WaterDash, Spear=1 OR Damage=20
      WaterDash, Damage=20, Spear=1 OR Damage=20  # dboost or spear to reach the pickup
      # Pogo a fish
      Sword, Water, Hammer OR Spear=1 OR Damage=20
      Sword, Damage=20, Hammer OR Spear=1 OR Damage=20
      Sword, DoubleJump
      Sword, Dash, Hammer OR Spear OR Damage=20
    unsafe, LowerReach.LeftFurnace:
      Combat=Nest, SwordSJump=1, DoubleJump OR Dash OR Glide
      Combat=Nest, SentryJump=1, Glide, Dash OR DoubleJump
      Combat=Nest, SentryJump=1, Dash, DoubleJump
      Grapple, Dash OR Glide:
        Blaze=1 OR Sentry=1 OR Flash=1  # bait the snaptrap, jump of it so it returns to its highest point then jump again+energy to reach the pickup
      Bash
      Grapple, Sword
      Sword, Water OR Dash OR Damage=20  # Pogo a fish
      Water, WaterDash, Damage=20 OR Hammer
      WaterDash, Damage=20, Sword OR Hammer OR Spear=1 OR Damage=20
      Water, WaterDash, Flash=1 OR Sentry=1 OR Spear=1
      DoubleJump, Damage=20, Hammer OR Spear=1  # dboost in poisonous water, djump+upslash/spear to walljump of the left side of the snaptrap

  conn LowerReach.AboveEntry:
    moki: LowerReach.HeatBaurFurnace OR DoubleJump OR Launch
    gorlek: Dash
    kii:
      Glide OR Sword OR Hammer OR Sentry=3  # From the same height as the water
      Bash  # Bait a skeeto
  conn LowerReach.Entry: free

anchor LowerReach.Central at -335, -4010:  # After the lever door
  refill Checkpoint

  pickup LowerReach.AboveDoorEX:
    moki:
      LowerReach.CentralFurnace, DoubleJump, Dash, Bash OR Hammer OR Spear=1
      LowerReach.CentralFurnace, Bash, Grenade=1
      Launch
    gorlek:
      Bash, Grenade=1
      SentryJump=1
      LowerReach.Lever, DoubleJump, TripleJump
    kii:
      Bash
      DoubleJump, Sword OR LowerReach.Lever  # pogo the slime or walljump off the door
      LowerReach.CentralFurnace, Hammer, DoubleJump OR Dash
      LowerReach.CentralFurnace, Sword, Dash, Spear=1
      LowerReach.CentralFurnace, Sword, Hammer, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # hammer upslash+sword full combo+energy weapon
    unsafe:
      DoubleJump, TripleJump
      Sword, Hammer, Flash=1 OR Sentry=1 OR Spear=1
      Grenade=1  # GrenadeJump=1
      Dash, DoubleJump, Sentry=1 OR Blaze=1 OR Spear=1 OR Flash=1 OR Shuriken=1  # Dash ramp from the ramp near the spikes otw to Lupo
  pickup LowerReach.LupoMap:
    moki, SpiritLight=150:
      Launch
      DoubleJump, Dash
      LowerReach.CentralFurnace, Bash, Grenade=1, DoubleJump OR Dash OR Glide
    gorlek, SpiritLight=150:
      DoubleJump, TripleJump
      SentryJump=1  # from the snaptrap
      LowerReach.CentralFurnace, Bash, Grenade=1  # just land on the little wall first
    kii, SpiritLight=150:
      Bash  # If you miss, you need to die at another anchor for the slime to respawn
      Sword, Dash OR DoubleJump
      Hammer, Dash OR DoubleJump
      DoubleJump, Glide, Shuriken=1 OR Flash=1 OR Sentry=1
      DoubleJump, Glide, LowerReach.Lever  # from LowerReach.AboveDoorEX
      DoubleJump, Sentry=2
    unsafe, SpiritLight=150:
      Grenade=1  # GrenadeJump=1
      DoubleJump, Shuriken=1
  pickup LowerReach.TPLeftEX:  # Be carefull it's not redundant with Central->OutsideTPRoom->TPLeftEX
    moki:
      Launch
      LowerReach.CentralFurnace, DoubleJump, Dash
      LowerReach.CentralFurnace, Bash, Grenade=1, DoubleJump OR Dash OR Glide
    gorlek:
      SwordSJump=2, Spear=1
      HammerSJump=2
      Bash, Grenade=2, Hammer OR Spear=1
      DoubleJump, TripleJump, LowerReach.Lever, Hammer OR Spear=1  # finish with an upswing
    kii:
      Bash, Hammer OR Spear=1  # Break the ceiling, bash the slime then the mortar projectile
      LowerReach.Lever, DoubleJump, Hammer
      LowerReach.Lever, DoubleJump, Spear=1, Dash OR Damage=20
      LowerReach.CentralFurnace, LowerReach.Lever, DoubleJump, Glide  # from LowerReach.AboveDoorEX
      LowerReach.CentralFurnace, DoubleJump, Glide, Shuriken=1 OR Flash=1 OR Sentry=1
      LowerReach.CentralFurnace, Bash, Sword  # use sword to stall in the air
      LowerReach.CentralFurnace, DoubleJump, TripleJump OR Sword OR Hammer OR Sentry=5
      LowerReach.CentralFurnace, Dash, Sword OR Hammer
    unsafe:
      LowerReach.Lever, DoubleJump, Sword, Spear=1  # Pogo the mortar projectile once it hit the snaptrap
      Grenade=2, Hammer OR Spear=1  # GrenadeJump=2, Hammer OR Spear=1
      LowerReach.CentralFurnace:
        Dash, Glide, Shuriken=1 OR Flash=1 OR Sentry=1
        Bash

  conn LowerReach.SecondSoup: free
  conn LowerReach.OutsideTPRoom:
    moki:
      Launch
      LowerReach.CentralFurnace, DoubleJump, Dash, Bash
      LowerReach.CentralFurnace, Bash, Grenade=1
    gorlek:
      SwordSJump=3, Spear=1
      HammerSJump=4
      Spear=1, Bash, Grenade=1, DoubleJump OR Dash OR Damage=20
      Spear=1, Bash, Grenade=2
      Hammer, Bash, Grenade=2, DoubleJump OR Dash OR Damage=20
      Hammer, Bash, Grenade=3
      LowerReach.CentralFurnace, DoubleJump, TripleJump OR Dash  # stand on the tongue plant
    kii:
      Bash, Hammer OR Spear=1
      LowerReach.Lever, DoubleJump, Hammer
      LowerReach.Lever, DoubleJump, TripleJump, Spear=1
      Sword, DoubleJump, TripleJump, Spear=1  # Pogo the slime
      Sword, DoubleJump, Hammer  # Pogo the slime
      LowerReach.CentralFurnace, Bash  # move the purple slug to the right first
      LowerReach.CentralFurnace, DoubleJump, Hammer OR Sword  # Might want to add Damage=10 because mortar shot is hard to avoid
      LowerReach.CentralFurnace, Dash, Hammer  # coyote dash->upslash->dash, land on snaptrap or near lupo to refresh upslash. From the top of the tongue, jump->upslash->dash->hammer hover
      LowerReach.CentralFurnace, Dash, Sword, Shuriken=1 OR Flash=1 OR Sentry=1  # coyote dash->upslash->dash, land on snaptrap or near lupo to refresh upslash. From the top of the tongue, jump->upslash->dash->sword combo->energy weapon
    unsafe:
      Grenade=2, DoubleJump, Hammer OR Spear=1  # GrenadeJump=2, DoubleJump, Hammer OR Spear=1
      LowerReach.CentralFurnace, SentryJump=2
      LowerReach.CentralFurnace, Dash, Sword  # coyote dash->up slash->dash->weapon stall to grab the tongue. pass through the tongue ennemy from the right with downslashes
  conn LowerReach.Entry:
    moki, LowerReach.Lever:
      DoubleJump, Dash OR Glide
      Launch
    gorlek, LowerReach.Lever: DoubleJump OR Dash OR Damage=20
    kii, LowerReach.Lever:
      Hammer  # upslash + hover
      Bash  # bash the slime near the spikes then bash glide to the lantern
      Shuriken=1
      Sword, Glide
    unsafe, LowerReach.Lever:
      Sword
      Glide, Spear=1 OR Flash=1 OR Sentry=1

anchor LowerReach.OutsideTPRoom at -311, -3970:  # To the left of the teleporter room
  refill Checkpoint
  refill Full:  # use the teleporter
    moki: Grenade=1
    gorlek: SentryBurn=1
  refill Health=1
  refill Energy=3:
    moki: BreakCrystal

  pickup LowerReach.AboveDoorEX:
    moki: Bash OR Hammer OR Spear=1
    unsafe: Sentry=1  # Sentry redirect
  pickup LowerReach.LupoMap:
    moki: SpiritLight=150, DoubleJump OR Dash OR Glide OR Launch
    gorlek: SpiritLight=150  # not too hard to do damageless, slide down the tongue plant and land on the little wall
  pickup LowerReach.TPLeftEX:
    moki:
      Bash, DoubleJump OR Dash OR Glide
      Launch
    gorlek:
      Glide OR SentryJump=1
      DoubleJump, Dash OR TripleJump OR Sword OR Hammer
      Dash, Sword OR Hammer
    kii:
      DoubleJump OR Dash OR Sword OR Hammer OR Sentry=2
      Bash, Grenade=1  # from the ledge next to breakable floor, might be good for gorlek
    unsafe: free  # Pause float
      # Grenade=1  # GrenadeJump=1
      # Bash
  pickup LowerReach.HiddenOre:
    moki:
      Launch
      LowerReach.CentralFurnace, DoubleJump, Bash, Dash OR Glide OR Grenade=1
    gorlek:
      LowerReach.CentralFurnace, DoubleJump, Bash OR SentryJump=1
    kii:
      Sword, DoubleJump, TripleJump  # pogo the mortar
      Bash, DoubleJump, TripleJump OR Dash OR Glide OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # jump on the tongue, let ori slide down then double jump again and go for the right wall
      Bash, DoubleJump, TripleJump OR Dash OR Glide OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # jump on the tongue, let ori slide down then double jump again and go for the right wall
      LowerReach.CentralFurnace, Bash, Grenade=1  # bash the mortar so you can reach your grenade from higher
      LowerReach.CentralFurnace, Bash, Dash OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1  # stand near to the mortar, bash it then its projectile to reach the snaptrap. Use your option once it oppens again.
    unsafe:
      LowerReach.CentralFurnace, Bash  # stand beside the spitter, bash off it once it shoots, then again off the projectile
      SentryJump=1
      DoubleJump, Damage=20, TripleJump OR Sword  # jump onto the spikes then up to the snaptrap. Jump on the tongue, let ori slide down then double jump again and go for the right wall

  conn LowerReach.SecondSoup: free
  conn LowerReach.Central:
    moki: DoubleJump OR Dash OR Bash OR Glide OR Launch OR Hammer OR Spear=1
    gorlek: free
  conn LowerReach.BelowTokk:
    moki:
      DoubleJump, Dash, Bash  # bash the squonkey
      DoubleJump, Bash, Grenade=1  # bash the squonkey
      Launch
    gorlek:
      SentryJump=1, DoubleJump  # use weapon stall as well
      Bash, Grenade=1, Dash OR Glide  # use the spitter projectile to get a higher bash off your grenade
    kii:
      Bash, Dash OR DoubleJump OR Sword OR Hammer
      DoubleJump, TripleJump  # Need to start jumping just under the energy cristal to get to the first snaptrap
    unsafe:
      DoubleJump, Damage=40
      Bash
      # !!!never tested for this connection, moved from 'conn UpperReach.KeystoneRoom'!!!
      # SentryJump=1, DoubleJump, LowerReach.CentralFurnace  # djump+dash from the frozen snaptrap / bait the last snaptrap and double jump + use weapon to stall in the air
      # HammerSJump=1, DoubleJump, Glide  # double jump+upslash from the plant to get near the burrow section, climb it then glide to the right

anchor LowerReach.BelowTokk at -296, -3944:
  refill Checkpoint

  conn LowerReach.OutsideTPRoom: free
  conn UpperReach.KeystoneRoom:
    moki:
      DoubleJump, Dash, Bash  # bash the squonkey
      DoubleJump, Bash, Grenade=1  # bash the squonkey
      Launch
    gorlek:
      SentryJump=1, DoubleJump
      DoubleJump, Dash
      Bash, Dash OR Glide OR DoubleJump  # bash the squonkey
      # @validator these paths might be gorlek
      # LowerReach.CentralFurnace, DoubleJump, Sword
      # Bash, Sword
    kii:
      Sword  # Pogo the mantis
      Hammer, DoubleJump OR Dash
      Bash, Hammer OR Shuriken=1 OR Sentry=2  # Bash the mantis, use the other things to get to the mantis
      DoubleJump, TripleJump  # @validator might be gorlek
      LowerReach.CentralFurnace, Combat=Mantis, DoubleJump, Sentry=2
      LowerReach.CentralFurnace, Combat=Mantis, DoubleJump, Glide, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      LowerReach.CentralFurnace, Combat=Mantis, Dash, Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1  # coyote dash from the snaptrap
    unsafe:
      LowerReach.CentralFurnace, Combat=Mantis, Dash, Spear=1 OR Blaze=1
  conn UpperReach.BurrowArea:
    moki, Burrow:
      DoubleJump, Dash, Bash  # bash the squonkey
      DoubleJump, Bash, Grenade=1  # bash the squonkey
      Launch
    gorlek, Burrow:
      SentryJump=1, DoubleJump
      DoubleJump, TripleJump
      Bash, Dash OR Glide OR DoubleJump  # bash the mantis
      # @validator these paths might be gorlek
      # LowerReach.CentralFurnace, DoubleJump, Sword
      # Bash, Sword
    kii, Burrow:
      Sword  # Pogo the mantis
      Bash, Hammer OR Shuriken=1 OR Sentry=2
      DoubleJump, Hammer
      DoubleJump, Combat=Mantis, Damage=20
      LowerReach.CentralFurnace, DoubleJump, Combat=Mantis, Dash OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # @validator Dash might be gorlek
      LowerReach.CentralFurnace, Dash, Hammer
    unsafe, Burrow:
      LowerReach.CentralFurnace, Combat=Mantis, Dash, Spear=1

anchor LowerReach.Teleporter at -259, -3962:
  refill Full

  state NonGladesTeleporter: free

  conn Teleporters: free
  conn LowerReach.OutsideTPRoom:
    moki: Grenade=1
    gorlek: SentryBurn=1
  conn LowerReach.East:
    moki: LowerReach.TPLantern

# checkpoint at -296, -3944

anchor LowerReach.SecondSoup at -316, -4037:  # Next to the soup below the teleporter
  state LowerReach.CentralFurnace:
    moki:
      Combat=ShieldMiner, DoubleJump, Dash, Bash, Flap
      Grenade=1, Combat=ShieldMiner OR Bash OR Burrow OR Launch
    gorlek:
      Bash, Flap, Combat=ShieldMiner OR Dash OR Launch
      Grenade=1, DoubleJump OR Dash OR Glide
    kii:
      Grenade=1
      Bash, Flap

  pickup LowerReach.MeltIceEX:
    moki: Grenade=1
    gorlek:
      Bash, Flap
      SentryBurn=1
  pickup LowerReach.BurrowEX:
    moki: Burrow, DoubleJump OR Dash OR Glide OR Launch
    gorlek: Burrow  # TP out

  conn LowerReach.Central:
    moki:
      DoubleJump, Bash, Flap OR Grenade=1
      DoubleJump, Burrow
      Launch
    gorlek:
      DoubleJump, Bash
      Bash, Dash, Grenade=1 OR Flap  # With flap, need to juggle the projectile
      SentryJump=1
    kii:
      Burrow, DoubleJump  # @validator probably gorlek
      Burrow, Dash, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      DoubleJump, TripleJump OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # @validator tjump/sword/hammer might be gorlek
      Bash, Grenade=1 OR Flap  # Bash the ShieldMiner before bashing your grenade or soup's projectile
      Dash, Sword  # Pogo the ShieldMiner
    unsafe:
      Burrow, Sentry=4  # 1 sentry to reach the left wall + 2 to reach the snaptrap + 1 to reach the checkpoint
      Bash, Grenade=1 OR Flap  # Bash the ShieldMiner before bashing your grenade or soup's projectile
      DoubleJump
  conn LowerReach.WindChannel:
    moki:
      Combat=ShieldMiner OR Bash OR Launch
      Burrow, DoubleJump OR Dash OR Glide
    kii: free  # jump over the ShieldMiner from the soup

anchor LowerReach.WindChannel at -256, -4035:  # The furnace left of the wind channel connecting to east reach
  refill Checkpoint
  refill Energy=3:
    moki, BreakCrystal:
      Combat=ShieldMiner, DoubleJump OR Dash
      Bash OR Launch
    gorlek: BreakCrystal

  state LowerReach.CentralFurnace:
    moki: Grenade=1

  state LowerReach.WindLantern:
    moki: Grenade=1, Combat=ShieldMiner
    gorlek:
      Grenade=1  # wait for the gorlek to get closer to the platform
      SentryBurn=1, DoubleJump OR Launch OR SentryJump=1  # may require a little luck to get the sentry close enough
      SentryJump=1
    unsafe:
      Flap, Bash, Dash  # Juggle the soup projectile
      SentryBurn=1, Bash OR Hammer

  pickup LowerReach.BelowLupoEX:
    moki:
      DoubleJump, Bash, Grenade=1
      Launch
      LowerReach.CentralFurnace, DoubleJump OR Dash
    gorlek:
      SentryJump=1, DoubleJump OR Dash OR Damage=20  # sjump from the frozen plant
      Grenade=1, Bash, Damage=20
      LowerReach.CentralFurnace, Damage=20, Glide OR Sword OR Hammer
    kii:
      LowerReach.CentralFurnace, Damage=20 OR Glide OR Sword OR Hammer
    unsafe:
      Flap, Bash, Damage=20 OR DoubleJump OR Dash OR Sword OR Glide  # Use the soup projectile
      SentryJump=1  # sjump from the frozen plant then upslash
  pickup LowerReach.BreakWallEX:
    moki, BreakWall=20:
      Combat=ShieldMiner OR Bash OR Launch
      DoubleJump, Dash OR Glide
    kii: BreakWall=20  # jump over the gorlek when it's near the anchor
  pickup LowerReach.WindBottomEX:
    moki: LowerReach.WindLantern, Glide
    gorlek, LowerReach.WindLantern:
      Damage=20, Launch OR SentryJump=1
    kii, LowerReach.WindLantern:
      DoubleJump, Damage=80
      DoubleJump, Damage=40, TripleJump OR Dash
    unsafe:
      LowerReach.WindLantern  # TP out
      # LowerReach.WindLantern, Damage=20
  pickup LowerReach.WindHiddenEX:
    moki: LowerReach.WindLantern, Glide
    gorlek:
      Launch, Damage=20, Glide
      SentryJump=2, Damage=20, DoubleJump OR Dash  # sjump, damage boost (the spikes wont hit Ori after landing on them), sjump again then upsalsh to reach the right wall then sword combo to reach the pickup and tp out
      DoubleJump, TripleJump, SentryJump=1, Damage=20  # same as above, triple jump + up slash to get to the right wall then jump into the spikes to avoid the first sjump
      Launch, DoubleJump OR Dash OR Sword
    kii:
      Launch, Glide OR Damage=40
      DoubleJump, TripleJump, Damage=60, Hammer OR Bash  # with bash, bash the gorlek and TP out.
    unsafe:
      Launch  # TP out
      DoubleJump, TripleJump, Damage=20, Sword OR Hammer OR Bash  # tjump + upslash/bash the gorlek to climb the right wall, tjump to the left spiky wall, iframe to wjump and tjump again to wjump from the wall just above and tjump again to the ice wall<
      SentryJump=2, Damage=20, DoubleJump OR Dash  # sjump, damage boost (the spikes wond t hit Ori after landing on them), sjump again then upsalsh to reach the right wall then sword combo to reach the pickup and tp out
      DoubleJump, TripleJump, SentryJump=1, Damage=20  # same as above, triple jump + up slash to get to the right wall then jump into the spikes to avoid the first sjump

  conn LowerReach.SecondSoup:
    moki:
      Combat=ShieldMiner, DoubleJump OR Dash OR Glide
      Bash, Grenade=1
      Launch
    gorlek: Bash OR Combat=ShieldMiner
    kii: DoubleJump
    unsafe: Damage=10
  conn LowerReach.SoupMoki:
    moki: LowerReach.WindLantern, Glide  # grenade to light the lantern
    gorlek: Launch, DoubleJump OR Dash OR Sword OR Hammer OR Damage=20
    kii: Launch, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      Launch
      DoubleJump, TripleJump, Damage=40, Sword OR Hammer OR Bash
      DoubleJump, Grenade=1, Damage=40  # Grenade jumps

# checkpoint at -223, -4043

anchor LowerReach.SoupMoki at -240, -3989:  # Below the reach teleporter, where you hand delicious marshclam soup to a moki (or alternatively extuingish his fireplace...)
  refill Energy=4:
    moki: BreakCrystal

  quest LowerReach.HandToHandHat:
    moki: LowerReach.HandToHandSoup

  pickup LowerReach.WindHiddenEX:
    moki:
      DoubleJump, Dash, Glide
      Launch, Glide
    gorlek: DoubleJump OR Dash OR Glide OR Launch OR Damage=20  # TP out
    unsafe:
      Sword OR Flash=1 OR Sentry=1 OR Shuriken=1
      Bash, Grenade=1

  conn LowerReach.WindChannel:
    moki: Glide
    gorlek: DoubleJump OR Dash OR Launch OR Sword OR Hammer OR Damage=20
    kii: free  # Can use Spear, Shuriken, Blaze, Flash, Sentry to slow you down if the free connection is too hard
  conn LowerReach.East:
    moki:
      Bash, Grenade=1, DoubleJump, Dash
      Launch
    gorlek:
      Bash, Grenade=1, DoubleJump, TripleJump OR Dash
      Bash, Grenade=1, Damage=20, DoubleJump, Glide OR Sword
      SentryJump=1, DoubleJump, TripleJump OR Dash
      SentryJump=1, Damage=20, DoubleJump, Glide OR Sword
    kii:
      Bash, Grenade=1 OR DoubleJump OR Dash OR Sword
      Bash, Hammer, Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      SentryJump=1
      Bash, Hammer, Spear=1
      Bash, Glide, Spear=1 OR Shuriken=1 OR Sentry=1
      DoubleJump, TripleJump, Dash OR Sword  # climb the wall near the moki, dash then triple jump to the wall to reset your jumps and dash + triple jump to reach the plant. With sword, pogo the fire, triple jump + upslash to reach the wall to reset your jumps then sword jump to the plant

anchor LowerReach.East at -223, -3967:  # To the right side outside the teleporter
  refill Full:  # use the teleporter
    moki: LowerReach.TPLantern

  state LowerReach.TPLantern:  # Most paths redundant with Snowball
    kii: Grenade=1  # Climb up from the closed door

  conn LowerReach.Teleporter:
    moki: LowerReach.TPLantern
  conn LowerReach.Snowball:
    moki:
      Bash, Grenade=2, DoubleJump, Dash OR Glide  # The first Grenade may hit the enemy
      Launch
    gorlek:
      Bash, Grenade=1, DoubleJump OR Dash OR Glide OR Sword OR Hammer
      SentryJump=1, DoubleJump, TripleJump, Grenade=1 OR Spear=1  # drop the slime for leniency
      SentryJump=1, DoubleJump, Dash, Grenade=1 OR Spear=1  # drop the slime for leniency
    kii:
      Bash, Grenade=1
      DoubleJump, TripleJump, Combat=WeakSlug, Dash OR Glide OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe:
      Bash  # Bash the slime
      SentryJump=1
      DoubleJump, TripleJump
  conn LowerReach.SoupMoki: free

anchor LowerReach.Snowball at -182, -3968:  # At the ledge above the snowball ice wall
  refill Checkpoint

  state LowerReach.TPLantern:  # The slug despawns from the nearby checkpoint
    moki: Grenade=1, Combat=WeakSlug OR Bash
    gorlek:
      Grenade=1
      SentryBurn=1, SentryJump=1
      SentryBurn=1, DoubleJump, TripleJump
      SentryBurn=1, Launch
    kii:
      SentryBurn=1, Bash
      SentryBurn=1, DoubleJump, Hammer  # djump+upslash+sentry
    unsafe:
      SentryBurn=1, DoubleJump, Sword  # The slime won't respawn if you activated the checkpoint
  state LowerReach.RolledSnowball:
    moki: Grenade=1, Combat=Mantis OR Bash
    gorlek:  # Sentry to melt the ice
      SentryBurn=1, Launch
      SentryBurn=1, DoubleJump, TripleJump, Glide
    kii:
      SentryBurn=1, Bash, DoubleJump OR Glide OR Hammer
      SentryBurn=1, Bash, Dash, Damage=20
    kii:
      SentryBurn=1, DoubleJump, TripleJump, Dash OR Sword OR Hammer OR Sentry=2 OR Damage=20  # Jump from the branch above the ice, triple jump to get close enough, sentry to melt the ice then return to safety
    unsafe:
      SentryBurn=1, Damage=20, SentryJump=1  # Jump in the spikes (won't damage Ori afterwards), sjump then sentry to melt the ice + sword combo to return to safety
      SentryBurn=1, DoubleJump, TripleJump, Shuriken=1 OR Blaze=1

  pickup LowerReach.SnowballHC:
    moki: LowerReach.RolledSnowball, Burrow, DoubleJump OR Dash OR Glide OR Launch OR Damage=20
    gorlek: LowerReach.RolledSnowball, Burrow  # Dash in the snow before exiting the burrow section to get momentum

  conn LowerReach.East:
    moki:
      Combat=WeakSlug, DoubleJump OR Dash OR Glide
      Bash, DoubleJump OR Dash OR Glide
      Launch
    gorlek:
      Bash, Grenade=1
      Sword OR Hammer
    kii:
      DoubleJump OR Dash OR Glide OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe:
      Bash  # Bash glide the slime which despawn if you respawn at the checkpoint
  conn LowerReach.SoupMoki: free
  conn LowerReach.PastSnowball:
    moki, LowerReach.RolledSnowball:
      DoubleJump OR Glide OR Launch
      Bash, Grenade=1, Dash
      Bash, Grenade=2
    gorlek: LowerReach.RolledSnowball, Dash OR Sword OR Hammer OR Damage=20  # Bash the running ennemy to avoid the damage boost
    kii: LowerReach.RolledSnowball, Bash OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe: LowerReach.RolledSnowball

anchor LowerReach.PastSnowball at -99, -3982:  # At the bashnade pedestal after rolling the snowball
  refill Checkpoint
  refill Energy=4:  # fast respawning crystal
    moki: BreakCrystal

  pickup LowerReach.RoofLeftEX:  # Have to solve after LowerReach.RolledSnowball
    moki:  # intended path omitted in moki
      Launch, DoubleJump, Dash OR Glide
      Bash, Grenade=1, Launch
    gorlek:
      LowerReach.CoolEastFurnace, Bash, Grenade=2, DoubleJump, Dash, Glide  # intended path?
      Launch, DoubleJump  # Easier from under the snaptrap
    kii:
      Launch
      Bash, Grenade=2, DoubleJump, Dash
      LowerReach.HeatEastFurnace, Bash, Grenade=2, DoubleJump, Glide OR TripleJump OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      DoubleJump, TripleJump, Dash OR Glide OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      SwordSJump=1, DoubleJump, TripleJump
      Bash, Grenade=2, DoubleJump, TripleJump OR Dash OR Glide
      SentryJump=1, DoubleJump, Dash
      DoubleJump, Grenade=1  # from the checkpoint, grenade jumps to the small wall under the spikes and grenade jumps again from there
  pickup LowerReach.RoofRightEX:
    moki: Launch  # intended path omitted in moki
    gorlek:
      LowerReach.CoolEastFurnace, Bash, Grenade=2
      SwordSJump=2
    kii:
      Bash, Grenade=2  # You have to time the second grenade throw just before the snaptrap open again
      Bash, Grenade=1, DoubleJump, Dash OR TripleJump  # Climb on the right wall above the 2nd plant
    unsafe:
      SentryJump=1, DoubleJump  # Climb on the wall above the 2nd plant

  conn LowerReach.HalfwayIceCavern:
    moki:
      Bash, Grenade=1, DoubleJump, Dash, Glide
      Launch
    gorlek:
      SwordSJump=1, DoubleJump
      SwordSJump=3
      Bash, Grenade=1, DoubleJump, TripleJump OR Dash OR Glide
    kii:
      Bash, Grenade=3
      Bash, Grenade=2, DoubleJump OR Dash OR Sword OR Hammer OR Glide OR Shuriken=1 OR Flash=1 OR Sentry=1
      Bash, Grenade=1, DoubleJump, Sword OR Hammer OR Sentry=2
      Bash, Grenade=1, DoubleJump, Damage=20, Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
      Bash, Grenade=1, Dash, Sword OR Hammer OR Sentry=2
      LowerReach.HeatEastFurnace, Bash, Grenade=1, DoubleJump, Shuriken=1
      LowerReach.HeatEastFurnace, Bash, Grenade=1, DoubleJump, Blaze=1, Damage=20
      LowerReach.HeatEastFurnace, Bash, Grenade=1, Dash, Glide OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1 OR Damage=20
    unsafe:
      Bash, Grenade=1, DoubleJump, Damage=20
      SwordSJump=1, DoubleJump, Dash OR Glide
      Bash, Grenade=1, Dash, Sentry=1 OR Flash=1 OR LowerReach.HeatEastFurnace  # Need to walljump on the wall above the 2nd plant then dash, get a reset by touching the ceilin and dash a second time
  conn LowerReach.EastFurnace:
    gorlek: ShurikenBreak=20
  conn LowerReach.Snowball:
    moki, LowerReach.RolledSnowball:
      LowerReach.CentralFurnace, Combat=Lizard OR Bash
      Launch
    gorlek, LowerReach.RolledSnowball: DoubleJump
    kii, LowerReach.RolledSnowball:
      LowerReach.CentralFurnace
      Dash, Hammer OR Spear=1
    unsafe, LowerReach.RolledSnowball:
      Hammer
      Bash  # use the lizard

# checkpoint at -60, -3987

anchor LowerReach.HalfwayIceCavern at -43, -3955:  # On the snaptrap halfway through the spiky ice cavern
# Going through that ice cavern in order to activate LowerReach.EastDoorLantern or going to LowerReach.SwimmingPool is horrible to find paths for, especially when using sjumps/bashnades
# That anchor is just so pathfinder have an easier time patfinding the horrible paths through that icy cavern.
  state LowerReach.EastDoorLantern:
    moki:
      Grenade=1, DoubleJump, Dash, Glide
      Grenade=1, Launch
    gorlek:
      DoubleJump, Grenade=1, Sword OR Hammer OR Glide OR Dash OR TripleJump
      SwordSJump=1, Grenade=1
      SentryBurn=1, Launch OR DoubleJump
    kii:
      Bash, Grenade=3
      Bash, Grenade=2, Dash OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1 OR Damage=20
      Grenade=1, DoubleJump OR Glide OR Sword OR Hammer
    unsafe:
      Bash, Grenade=2
      SentryJump=2, Grenade=1, Dash  # Need to use up slashes
      SentryBurn=1, SwordSJump=2

  conn LowerReach.SwimmingPool:
    moki:
      Glide, DoubleJump OR Dash
      Launch
    gorlek: Glide OR DoubleJump OR Dash OR Sword OR Hammer OR Damage=20
    kii: Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1

anchor LowerReach.SwimmingPool at -44, -4001:  # At the platform in the freezable water
  refill Energy=4:
    moki: BreakCrystal, LowerReach.CoolEastFurnace OR Water

  pickup LowerReach.FractureShard:
    moki: LowerReach.HeatEastFurnace, Water

  conn LowerReach.ArenaArea:
    moki, LowerReach.EastDoorLantern:
      LowerReach.CoolEastFurnace, Bash, Grenade=1
      Launch, LowerReach.CoolEastFurnace OR DoubleJump OR Dash OR Glide
    gorlek, LowerReach.EastDoorLantern:
      Launch  # Launch into the ceiling then into the wall near the energy cristal and again to the platform
      SentryJump=1, LowerReach.CoolEastFurnace
      SwordSJump=1, Water
      SwordSJump=2, DoubleJump, Glide
      LowerReach.HeatEastFurnace, WaterDash, Water, DoubleJump  # Wall jump from the right wall
    kii:
      Bash, Grenade=1, Damage=40  # bash the fish and worm to go faster and avoid taking one more dboost
      Bash, Grenade=1, Damage=20, WaterDash OR DoubleJump OR Dash OR Sword
      Bash, Grenade=1, Sword, DoubleJump OR Dash  # pogo the worm
      Bash, Grenade=1, DoubleJump, Dash, TripleJump OR Glide OR Hammer OR Sentry=2
      Bash, Grenade=2, Dash OR Glide OR DoubleJump OR Sword OR Shuriken=1 OR Sentry=2 OR Damage=20
      LowerReach.HeatEastFurnace, Bash, Water  # bash the fish under the door
      LowerReach.HeatEastFurnace, Bash, WaterDash, Damage=20, Damage=40
      LowerReach.HeatEastFurnace, WaterDash, Water, Hammer OR Spear=1  # Wall jump from the right wall
      LowerReach.HeatEastFurnace, WaterDash, Damage=20, Damage=20, Hammer OR Spear=1
      LowerReach.HeatEastFurnace, DoubleJump, TripleJump, Hammer, Water OR Dash OR Glide OR Sword OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Damage=20  # tjump+ hammer upslash from the closed snaptrap to walljump on the left wall
      LowerReach.HeatEastFurnace, DoubleJump, TripleJump, Spear=1, Water OR Dash OR Glide OR Sword OR Sentry=3 OR Damage=20  # tjump+spear from the closed snaptrap to walljump on the left wall
    unsafe:
      SwordSJump=1, DoubleJump, TripleJump OR Dash OR Glide  # double jump from the platform, refill dash/jumps by slashing the energy cristal then sjump on the plant
      SwordSJump=2, DoubleJump OR Glide OR Dash
  conn LowerReach.EastFurnace:
    moki:
      Bash, Grenade=1
      Launch
    gorlek:
      DoubleJump, TripleJump  # Climb the right wall then jump to the left wall before double jumping again to the platform
      SwordSJump=1
      HammerSJump=1, Dash OR DoubleJump OR LowerReach.CoolEastFurnace
      LowerReach.HeatEastFurnace, WaterDash, DoubleJump, Water, Sword OR Hammer
      LowerReach.HeatEastFurnace, WaterDash, DoubleJump, Damage=20, Sword OR Hammer
    kii:
      DoubleJump  # Precise wall jump on the right wall then wjump on the left wall
      LowerReach.HeatEastFurnace, Bash, Water OR Damage=100  # Bash the fish
      LowerReach.HeatEastFurnace, Bash, WaterDash, Water OR Damage=40

anchor LowerReach.EastFurnace at -61, -3987:  # At the furnace above the swimming pool
  refill Checkpoint

  state LowerReach.HeatEastFurnace:
    moki: Grenade=1
  state LowerReach.CoolEastFurnace:
    moki: Flap

  conn LowerReach.PastSnowball:
    moki: BreakWall=20
  conn LowerReach.SwimmingPool: free

anchor LowerReach.ArenaArea at 44, -3992:  # To the left of the combat arena
  refill Checkpoint
  refill Health=1
  refill Energy=3:
    moki, BreakCrystal:
      DoubleJump, Dash
      Launch

  state LowerReach.ArenaBeaten:
    moki: Regenerate, Damage=40, Combat=3xShieldMiner+Hornbug+2xBee
    unsafe: Combat=3xShieldMiner+Hornbug+2xBee

  conn LowerReach.TrialStart:
    moki: LowerReach.ArenaBeaten
  conn LowerReach.LowerWispPath:
    moki, LowerReach.ArenaBeaten: Glide
    gorlek, LowerReach.ArenaBeaten: Launch, DoubleJump OR Dash OR Damage=20
    kii, LowerReach.ArenaBeaten:
      Launch
      DoubleJump, TripleJump
  conn LowerReach.SwimmingPool:
    moki, LowerReach.EastDoorLantern:
      LowerReach.CoolEastFurnace OR Water
      Launch, DoubleJump, Dash OR Glide
    gorlek, LowerReach.EastDoorLantern:
      DoubleJump, TripleJump, Glide
      DoubleJump, Dash, Glide, Sword
      Damage=20, DoubleJump OR Dash OR Glide OR Sword  # Swim in dirty water
      WaterDash, Damage=20, Hammer
      Launch  # refresh on wall above crystal
    unsafe, LowerReach.EastDoorLantern:
      Sword, DoubleJump OR Dash OR Glide  # Pogo something in the water
      DoubleJump, TripleJump, Dash

# checkpoint at just kidding, placed this mark because the refill logic below kind of sucks

anchor LowerReach.WindSpinners at 73,-3929:  # midway through the wind column above the combat arena
# This anchor is just so ArenaArea->WispsPath is easier to pathfind for
  conn LowerReach.LowerWispPath:
    moki:
      Glide, Grapple OR Launch
      Glide, DoubleJump, Bash, Grenade=1
    gorlek:
      Glide, SentryJump=1
      Glide, Bash, Grenade=1
      Glide, DoubleJump, TripleJump OR Dash
      Launch, DoubleJump, TripleJump OR Dash OR Damage=20  # Pass under the first spinner to reach the right wall, climb it and launch to the energy cristal
    kii:
      Launch, Dash OR Sword OR Hammer OR Damage=20  # Pass under the first spinner and launch to the wall above it
      Glide, DoubleJump, Hammer OR Damage=20
      DoubleJump, TripleJump, Damage=60  # 2 dboosts to reach the right wall, climb it, pass between the two spinners to reach the left wall, climb it and take a third dboost
      DoubleJump, TripleJump, Damage=40, Dash OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # pass under the 1st spinner by using tjump, dboost, tjump again and use your other mobility option to reach the right wall, climb it, pass between the two spinners to reach the left wall, climb it and take a third dboost
    unsafe:
      Glide, Dash, Hammer
      Launch, Spear=1 OR Shuriken=1 OR Sentry=1 OR Spear=1 OR Flash=1  # Pass under the first spinner and launch to the wall above it
      DoubleJump, TripleJump, Damage=20
      Bash, Grenade=1, DoubleJump, TripleJump  # Precise grenade throw above the first spinner, pass under the spinner to catch the grenade and bash glide to the right wall
  conn LowerReach.ArenaArea:
    moki: Glide, LowerReach.ArenaBeaten
    gorlek: LowerReach.ArenaBeaten

anchor LowerReach.LowerWispPath at 83, -3874:  # At the checkpoint just after the grappable plant
  refill Checkpoint
  refill Health=1:  # Requirements are here so you can return to the checkpoint afterwards
    moki:
      Grapple OR Launch
      Bash, Grenade=1  # wasted energy...
    gorlek:
      DoubleJump, TripleJump OR Dash
      SentryJump=1
    kii:
      DoubleJump, Hammer OR Damage=20
    unsafe:
      DoubleJump, Sword OR Hammer
      Dash, Hammer
  refill Energy=4:  # Requirements are here so you can return to the checkpoint afterwards
    moki:
      DoubleJump, Grapple
      DoubleJump, Bash, Grenade=1  # wasted energy...
      Dash, Damage=20, Grapple
      Dash, Damage=20, Bash, Grenade=1  # wasted energy...
      Launch
    gorlek:
      Grapple, Dash OR Glide OR Sword
      SentryJump=1
      Bash, Grenade=1, Dash OR Glide OR Sword
      DoubleJump, TripleJump OR Dash
    kii:
      Grapple, Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      DoubleJump, Hammer OR Damage=20
    unsafe:
      DoubleJump, Sword
      Dash, Hammer

  conn LowerReach.BridgeWispPath:  # The gorlek isn't here if you respawn at the chekpoint
    moki: Bash, Grenade=3 OR Launch
    gorlek: Launch, Bash OR SentryJump=1 OR Damage=20
    kii:
      Bash, Grenade=2
      Bash, Grenade=1, Glide OR Dash
      Bash, Grenade=1, DoubleJump, TripleJump OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Bash, DoubleJump, TripleJump, Damage=40
    unsafe:
      Bash, Grenade=1, DoubleJump
      Bash, DoubleJump, TripleJump, Damage=20
      Bash, SwordSJump=1
      Bash, HammerSJump=1, Glide OR DoubleJump OR Dash
  conn LowerReach.WindSpinners:
    moki: Glide
    gorlek: Launch, Damage=20
    kii: Launch OR DoubleJump OR Dash OR Sword OR Hammer OR Damage=20
    unsafe: free

# checkpoint at 80, -3805

anchor LowerReach.BridgeWispPath at 67, -3808:  # At the bridge checkpoint, next to the wind column
  refill Checkpoint

  conn LowerReach.SnowEscape:
    moki:
      Bash, Grenade=1, Glide, DoubleJump OR Grapple
      Glide, Launch
    gorlek:
      Launch
      Glide, SentryJump=1 OR DoubleJump OR Dash
      Bash, SwordSJump=1, DoubleJump, Dash OR TripleJump  # SentryJump to get on the right wall, use sword to air stall 2nd wind column.
      Bash, SwordSJump=2, Grapple  # SentryJump to get on the right wall at the 1st wind column
      Bash, Grenade=1, Glide
    kii:
      Bash, DoubleJump OR Dash OR Sword OR Hammer
      DoubleJump, TripleJump, Grapple OR Sword OR Hammer  # Climb the left wall then go to the right one. You can kill the slimes with weapons.
      DoubleJump, TripleJump, Sentry=2, Combat=2xWeakSlug  # Climb the left wall then go to the right one
      DoubleJump, TripleJump, Sentry=2, Damage=10, Damage=10  # Climb the left wall then go to the right one. dboost through the slimes.
    unsafe:
      Bash, DoubleJump OR Dash OR Grapple OR Glide OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      DoubleJump, TripleJump, Shuriken=2
  conn LowerReach.LowerWispPath:
    moki:
      Bash
      Combat=WeakSlug, Combat=Miner
    gorlek: free

anchor LowerReach.SnowEscape at 79, -3733:
  refill Full

  quest LowerReach.ForestsMemory:  # currently based on the requirements of getting here to simplify
    moki:
      Dash, Bash, Grapple, Glide, Water OR DoubleJump
      Bash, Glide, Launch
    gorlek:
      Launch, Water OR Glide OR Damage=20
      Dash, Glide, DoubleJump, TripleJump OR Damage=20
      Dash, Glide, Grapple
    kii:
      Launch
      Dash, DoubleJump, TripleJump OR Glide
      DoubleJump, Glide, Bash
      Glide, Grapple, Bash, Water, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Glide, Grapple, Bash, Damage=20, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      Glide, Sentry=2
      DoubleJump, Glide
      Dash, Glide, Damage=20
      SentryJump=1, DoubleJump, Dash, TripleJump  # Same path than above but the sjump ease it
      SentryJump=2, DoubleJump, Dash  # 1st sjump on a friendly spike and 2nd one on the branch to pass the 1st wind column
      SentryJump=3, Dash, Grapple OR Damage=20
      Dash, SentryJump=4

  state LowerReach.BearSneezed:  # Same paths as LowerReach.ForestsMemory (when finishing the escape, Baur isn't blocking the Reach entrance anymore)
    moki:
      Dash, Bash, Grapple, Glide, Water OR DoubleJump
      Bash, Glide, Launch
    gorlek:
      Launch, Water OR Glide OR Damage=20
      Dash, Glide, DoubleJump, TripleJump OR Damage=20
      Dash, Glide, Grapple
    kii:
      Launch
      Dash, DoubleJump, TripleJump OR Glide
      DoubleJump, Glide, Bash
      Glide, Grapple, Bash, Water, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Glide, Grapple, Bash, Damage=20, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      Glide, Sentry=2
      DoubleJump, Glide
      Dash, Glide, Damage=20
      SentryJump=1, DoubleJump, Dash, TripleJump  # Same path than above but the sjump ease it
      SentryJump=2, DoubleJump, Dash  # 1st sjump on a friendly spike and 2nd one on the branch to pass the 1st wind column
      SentryJump=3, Dash, Grapple OR Damage=20
      Dash, SentryJump=4

  pickup LowerReach.EscapeRevisitEX:
    moki: LowerReach.ForestsMemory

anchor LowerReach.TownEntry at -35, -4077:  # Where the wind starts
  conn LowerReach.VeralHome: free
  conn LowerReach.TrialStart:
    moki:
      Glide
    gorlek:
      Launch, DoubleJump, Damage=20
      Launch, Bash, Grenade=1
    kii:
      Launch, Damage=40
      Launch, Damage=20, Dash OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Bash, Grenade=1, DoubleJump, TripleJump, Dash, Hammer, Damage=20
    unsafe:
      Bash, Grenade=1, DoubleJump, TripleJump, Dash, Hammer OR Damage=20
      Bash, Grenade=1, DoubleJump, TripleJump, Spear=1, Damage=20  # extend your bash with spear
      Launch, DoubleJump, Dash OR TripleJump
      Launch, Damage=20  # Launch on the wall at the start of the wind cave

anchor LowerReach.TrialStart at 64, -4046:  # At trial start
  refill Checkpoint

  state LowerReach.KeystoneDoor:
    moki: Keystone=4
  state LowerReach.TrialActivation:  # Since you have to reach this place again in a race to get an advantage, only paths possible during a trial are meaningful
    moki: LowerReach.KeystoneDoor

  pickup LowerReach.SpiritTrial:
    moki: LowerReach.TrialActivation, Dash, Glide
  pickup LowerReach.RightKS:
    moki:
      Glide
      DoubleJump, Dash, Bash, Grenade=1
      Launch, DoubleJump OR Damage=20
    gorlek:
      Launch
      SentryJump=1, DoubleJump
      Bash, Grenade=1, DoubleJump
    kii:
      Dash, DoubleJump, TripleJump, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      DoubleJump, TripleJump, Hammer, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
  pickup LowerReach.UpperLeftKS:
    moki: Glide
    kii:  # TP out after taking the pickup
      Launch, DoubleJump, TripleJump, Damage=30  # dboost in the spikes+ dboost on the slime next to the keystone
      DoubleJump, TripleJump, Combat=BombSlug, Damage=80
    unsafe: Launch, DoubleJump, TripleJump, Damage=20  # Launch against the walls. When on the wall above LowerReach.VeralHome, first use triple jump then lauch, triple jump again to take a damage boost to refresh launch then launch and triple jump again to take the pickup and tp out
  pickup LowerReach.MiddleLeftKS:
    moki: Glide
    kii:  # TP out after taking the pickup
      DoubleJump, TripleJump, Damage=60
      Launch, Damage=40
      Launch, DoubleJump, Damage=20, TripleJump OR Dash
    unsafe: Launch, Damage=20, DoubleJump OR Dash  # Launch against the walls. When on the wall above LowerReach.VeralHome, first use djump/dash then lauch, reuse your mobility option, take a damage boost to refresh launch, take the pickup and TP out
  pickup LowerReach.BottomLeftKS:
    moki: Glide
    kii:  # TP out after taking the pickup
      Launch, DoubleJump OR Dash OR Sword OR Hammer OR Sentry=3 OR Damage=20  # sentry where the two bomb slug are, walljump launch, 2 senties
      DoubleJump, TripleJump, Combat=BombSlug, Sword OR Dash OR Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Damage=20
    unsafe:
      Launch, Shuriken=1 OR Flash=1 OR Sentry=1  # shuriken/flash/sentry before using launch
      DoubleJump, TripleJump, Sword OR Dash OR Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Damage=10  # dboost on the flying spikes, which only deal 10 damages
  pickup LowerReach.TrialEX:
    moki: Glide
    kii:
      Launch, Damage=40  # Pass under the two falling slimes
      Launch, Damage=20, DoubleJump OR Dash
      Launch, DoubleJump, TripleJump

  conn LowerReach.TownEntry:
    moki: Glide
    gorlek:
      Damage=20, Sword OR Dash OR DoubleJump OR Launch  # sword or hammer for weapon stalling
      Bash, Grenade=1, Sword OR Dash OR DoubleJump OR Launch
      Launch, Sword OR Hammer OR Dash OR DoubleJump
      DoubleJump, Sword OR Hammer OR Dash OR TripleJump
      Dash, Sword OR Hammer
      SwordSJump=1
    kii:
      Damage=20, Damage=40
      Hammer, Damage=30  # dboost on the falling slime
      Bash, Grenade=1, Damage=20, Damage=20
      Bash, Grenade=1, Hammer OR Shuriken=2 OR Blaze=4 OR Sentry=3
      Bash, Grenade=1, Damage=20, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe:
      Damage=20, Hammer
      Damage=10, Damage=40
      Bash, Grenade=1, Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1 OR Damage=10
  conn LowerReach.ArenaArea:
    moki: LowerReach.ArenaBeaten, Glide
    unsafe: LowerReach.ArenaBeaten, Launch  # Launch Swap

region UpperReach:
  moki: Danger=40, Regenerate
  gorlek: Regenerate
  kii: Regenerate
  unsafe: free

anchor UpperReach.BurrowArea at -369, -3917:  # left of the entrance sand wall
  # unsafe paths may be incorrect after moving the anchor
  pickup UpperReach.LifeForceEX:
    moki:
      Burrow, Launch, Bash
    gorlek:
      Launch
      Burrow, Bash, DoubleJump, TripleJump OR Dash OR Glide
      Burrow, DoubleJump, TripleJump, Dash, Glide
    kii:
      Burrow, Bash, DoubleJump OR Dash OR Glide
      Burrow, Bash, Sword
      Burrow, Bash, Sentry=5  # One sentry in order to reach the second crumbling platfom then 2 to reach the lantern and another 2 to get to the EX platform
      Burrow, Sword, Dash, DoubleJump  # "Precise" burrow angle bellow UpperReach.LifeForceEX then full sword combo + movement options
      Burrow, DoubleJump, TripleJump OR Hammer  # precise angle underneath UpperReach.LifeForceEX then land next to the pickup
      Burrow, DoubleJump, Damage=20  # dboost in the spikes under the pickup
      Burrow, DoubleJump, Sentry=1 OR Flash=1  # precise angle underneath UpperReach.LifeForceEX then land next to the pickup
      Burrow, Bash, Grenade=1, Damage=20  # grenade from under the pickup, burrow to reach it then land near the pickup. Damage because of the 2nd sand platform
      Burrow, Dash, Glide  # go to UpperReach.LifeForceShard first
    unsafe:
      Burrow, SwordSJump=2  # Running sjump from under LifeForceEX
      Burrow, SentryJump=1, Glide OR Damage=20  # sjump to enter the burrow section. There is a small safespot in the right spikes below the sand after the bashable plant. Use weapon to stall in the air.
      Burrow, SwordSJump=1, Dash  # Need a precise angle to exit the burrow section under LifeForceEX. Use sword for air stalling.
      Burrow, HammerSJump=1, Dash, Damage=20  # Need a precise angle to exit the burrow section under LifeForceEX. Use sword for air stalling.
      Burrow, Bash, Damage=20, Spear=2 OR Shuriken=2 OR Blaze=2 OR Sentry=2 OR Flash=2
      Burrow, Sword, Sentry=2 OR Flash=2  # Pogo the mantis, before the lantern get a good burrow angle then sentry->sword hover->up slash->sentry to reach the crumbling platform. Same with flash but you have to disable flash during your sword hover so you get a second hop.
      Burrow, DoubleJump, Damage=20  # dboost in the spikes near the mantis to reach the burrow section then precise angle from under UpperReach.LifeForceEX
      Burrow, DoubleJump, Sentry=1 OR Flash=1 OR Shuriken=1  # Precise djump from the frozen muncher. Can make it easier by standing on the right of the muncher first so the left side is a bit higher.
      Burrow, Sword, Damage=20  # Pogo the mantis, precise angle to land into the spikes under UpperReach.LifeForceEX, precise walljump into upslash to land next to the pickup. Blame Wolf who made me realize it was possible
  pickup UpperReach.LifeForceShard:
    moki:
      Burrow, Launch, Bash
    gorlek:
      Launch
      Burrow, Bash, DoubleJump, TripleJump OR Dash OR Glide
      Burrow, DoubleJump, TripleJump, Dash, Glide
    kii:
      Burrow, Bash, DoubleJump OR Dash OR Glide OR Sword OR Hammer
      Burrow, Bash, Sentry=3  # One sentry in order to reach the second crumbling platfom then 2 to reach the lantern
      Burrow, Sword, Dash, DoubleJump  # "Precise" burrow angle bellow UpperReach.LifeForceEX then full sword combo + movement option
      Burrow, DoubleJump, TripleJump OR Hammer  # precise angle underneath UpperReach.LifeForceEX then land next to the pickup, then go to shard
      Burrow, DoubleJump, Damage=20  # dboost in the spikes under the EX pickup, then jump to the Shard
      Burrow, DoubleJump, Sentry=1 OR Flash=1  # precise angle underneath UpperReach.LifeForceEX then land next to the EX pickup, then go to shard
      Burrow, Dash, Glide
    unsafe:
      Burrow, SwordSJump=2  # Running sjump from under LifeForceEX
      Burrow, SentryJump=1, Glide OR Damage=20  # sjump to enter the burrow section. There is a small safespot in the right spikes below the sand after the bashable plant. Use weapon to stall in the air.
      Burrow, SwordSJump=1, Dash  # Need a precise angle to exit the burrow section under LifeForceEX. Use sword for air stalling.
      Burrow, HammerSJump=1, Dash, Damage=20  # Need a precise angle to exit the burrow section under LifeForceEX. Use sword for air stalling.
      Burrow, Bash, Damage=20, Spear=2 OR Shuriken=2 OR Blaze=2 OR Sentry=2 OR Flash=2
      Burrow, Sword, Sentry=2 OR Flash=2  # Pogo the mantis, before the lantern get a good burrow angle then sentry->sword hover->up slash->sentry to reach the crumbling platform. Same with flash but you have to disable flash during your sword hover so you get a second hop.
      Burrow, DoubleJump, Damage=20  # dboost in the spikes near the mantis to reach the burrow section then precise angle from under UpperReach.LifeForceEX
      Burrow, DoubleJump, Sentry=1 OR Flash=1 OR Shuriken=1  # Precise djump from the frozen muncher. Can make it easier by standing on the right of the muncher first so the left side is a bit higher.
      Burrow, Sword, Damage=20  # Pogo the mantis, precise angle to land into the spikes under UpperReach.LifeForceEX, precise walljump into upslash to land next to the pickup. Blame Wolf who made me realize it was possible

  conn LowerReach.BelowTokk:
    moki: Burrow

anchor UpperReach.KeystoneRoom at -256, -3914:  # At the furnace in the four keystone room before Grenade tree
  refill Checkpoint

  # This entire room can be in two mutually exclusive states: Frozen or Thawed.
  # Additionally, you can only change the state if you have access to the furnace.
  # This is important, because you have to avoid writing logic that requires a frozen furnace on its first half and a thawed furnace on its second half.
  # To account for this, anchors in this room have up to three different variants:
  # - Main Variant ("UpperReach.[name]"):
  #     Paths to this anchor have to work with both furnace states! Outgoing connections can use either furnace state.
  # - Frozen Variant ("UpperReach.[name]Frozen):
  #     Paths to this anchor have to use the frozen furnace state! Outgoing connections cannot use the thawed furnace state.
  #     Outgoing anchor connections may only connect to frozen variants, unless they light the furnace, in which case they may connect to thawed variants.
  # - Thawed Variant ("UpperReach.[name]Thawed):
  #     Paths to this anchor have to use the thawed furnace state! Outgoing connections cannot use the frozen furnace state.
  #     Outgoing anchor connections may only connect to frozen variants
  # This would however create countless redundancies, which is why additionally there's a counterpart for each variant:
  # These counterparts may not connect to any other anchors that have variants dependant on the same furnace, unless explicitely to connect into another furnace state.
  # - Main Paths ("UpperReach.[name]Paths"):
  #     All three variants connect to this anchor. Outgoing connections have to work with both furnace states.
  # - Frozen Paths ("UpperReach.[name]FrozenPaths"):
  #     The Main and Frozen variants connect to this anchor. Outgoing connections have to use the frozen furnace state.
  # - Thawed Paths ("UpperReach.[name]ThawedPaths"):
  #     The Main and Thawed variants connect to this anchor. Outgoing connections have to use the thawed furnace state.

  state UpperReach.ThawFurnace:  # mirror of the paths to UpperSoupFrozen, but without the freeze furnace state since that is guaranteed when trying to thaw it
    moki:
      Grenade=1  # this makes grenadebash paths meaningless
      Flap, Bash, DoubleJump OR Launch
    gorlek: Flap, Bash, Sword OR Hammer
    kii: Flap, Bash, Dash OR Glide OR Shuriken=1 OR Sentry=1 OR Flash=1
    unsafe: Flap, Bash, Blaze=1 OR Spear=1
  state UpperReach.FreezeFurnace:  # refreezing the waterfall can be valuable
    moki: Flap

  pickup UpperReach.LowerKS:
    moki:
      UpperReach.ThawFurnace, DoubleJump
      UpperReach.ThawFurnace, Bash, Grenade=1
      UpperReach.ThawFurnace, Water, WaterDash
      Launch
    gorlek:
      UpperReach.ThawFurnace, WaterDash, Damage=20
      UpperReach.ThawFurnace, SentryJump=1
      SentryJump=1, DoubleJump, TripleJump
    kii:
      UpperReach.ThawFurnace, Bash, Dash OR Glide OR Sword OR Hammer OR Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=2  # bash the gorlek
      UpperReach.ThawFurnace, Hammer OR Sword  # with sword, pogo the gorlek
    unsafe:
      UpperReach.ThawFurnace, Spear=1
      UpperReach.ThawFurnace, Dash, Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=1
      SentryJump=1  # need a decently high one
  pickup UpperReach.SwimEX:  # dirty water paths using the damage advantage over starting from the right
    kii, UpperReach.ThawFurnace:
      Damage=80, WaterDash
      Damage=120
    unsafe, UpperReach.ThawFurnace:
      Damage=40, WaterDash
      Damage=100

  conn Tokk: free
  conn UpperReach.UpperSoup:  # check for redundancies with OutsideTreeRoom and KeystoneSnapPlant
    moki:
      # these paths go through the hidden area below the soup
      Combat=ShieldMiner, Bash, Grenade=1, DoubleJump
      Launch
      # these paths work with both furnace states (even though sometimes through different routes)
      # paths that go to the right if the furnace is lit
      Water, DoubleJump, Grapple
      Water, DoubleJump, Bash, Grenade=1
      DoubleJump, Dash, Glide, Grapple
      # paths that go above if the furnace is lit
      DoubleJump, Bash, Glide
      DoubleJump, Bash, Grapple, Dash
      Bash, Grenade=1, Dash, Glide
    gorlek:
      # these paths go through the hidden area below the soup
      Bash, Grenade=1, DoubleJump OR Sword OR Hammer
      SentryJump=1, DoubleJump
      # these paths work with both furnace states (even though sometimes through different routes)
      # paths that go to the right if the furnace is lit
      DoubleJump, TripleJump OR Grapple
      DoubleJump, Dash, Water OR Glide OR Sword OR Hammer OR Damage=20
      Dash, Grapple, Glide, Combat=ShieldMiner, Sword OR Hammer
      Dash, Grapple, Glide, Bash, Grenade=1 OR Sword OR Hammer
      Water, Dash, Grapple, Combat=ShieldMiner, Sword OR Hammer
      Water, Dash, Grapple, Bash, Sword OR Hammer
      Water, WaterDash, Dash, Grapple, Sword  # go up to get over the enemy
      Water, WaterDash, Dash, Grapple, Glide, Hammer  # go up to get over the enemy
      Damage=20, Dash, Grapple, Combat=ShieldMiner, Sword OR Hammer
      Damage=20, Dash, Grapple, Bash, Sword OR Hammer
      Bash, Grenade=1, Dash, Water OR Damage=20
      Water, Bash, Grenade=1, Damage=20, Glide OR Sword OR Hammer
      # paths that go above if the furnace is lit
      Bash, DoubleJump, Dash OR Sword OR Hammer OR Damage=20
      Bash, Grenade=1, Glide
      Bash, Water, WaterDash, Glide, Sword OR Hammer
      Bash, Water, WaterDash, Grapple, Sword
      Bash, Damage=20, WaterDash, Glide, Sword OR Hammer
      Bash, Damage=20, WaterDash, Grapple, Sword
      Bash, SentryJump=1, Glide
      Bash, SwordSJump=1, Grapple
      Bash, HammerSJump=1, Grapple, Dash
      Bash, HammerSJump=1, Grapple, Damage=20, Sword
    kii:
      # these paths go through the hidden area below the soup
      Bash, Grenade=1, Dash OR Shuriken=1 OR Sentry=1 OR Flash=1 OR Spear=1
      Bash, Grenade=2
      # these paths work with both furnace states (even though sometimes through different routes)
      # paths that go to the right if the furnace is lit
      DoubleJump, Dash OR Sword OR Hammer OR Sentry=4
      Grapple, Dash OR Sword OR Hammer
      Grapple, Glide, Sentry=4
      Grapple, Glide, Sentry=3, Damage=20
      Grapple, Sentry=6
      Water, DoubleJump, Shuriken=1 OR Sentry=1 OR Flash=1 OR Spear=1
      Damage=20, DoubleJump, Shuriken=1 OR Sentry=1 OR Flash=1 OR Spear=1
      Grapple, Sentry=4, Water OR Damage=20
      Grapple, Sentry=3, Damage=20, Water OR Damage=20
      Bash, Grenade=1, Damage=20, Water OR Damage=20
      # paths that go above if the furnace is lit
      Bash, Glide
      Bash, DoubleJump, Shuriken=1 OR Sentry=1 OR Flash=1 OR Spear=1 OR Damage=20
      Bash, WaterDash, Grapple, Shuriken=2, Damage=20, Water OR Damage=20
      Bash, Grapple, Sentry=5
      Bash, Grapple, Damage=20, Shuriken=3
      Bash, Grapple, Damage=40, Shuriken=2
    unsafe:
      SentryJump=1
      DoubleJump, Sword, Hammer  # Pogo the gorlek, wall jump under the hidden passage and djump+hammer upslash. You need to not use any forwards slashes with sword in order to have your hammer upslash available
  conn UpperReach.UpperSoupFrozen:
    moki, UpperReach.FreezeFurnace:
      DoubleJump
      Bash, Grenade=1
    gorlek: UpperReach.FreezeFurnace, Sword OR Hammer
    kii: UpperReach.FreezeFurnace, Dash OR Glide OR Shuriken=1 OR Sentry=1 OR Flash=1
    unsafe: UpperReach.FreezeFurnace, Blaze=1 OR Spear=1
  conn UpperReach.UpperSoupThawed:
    unsafe, UpperReach.ThawFurnace:
      WaterDash, Sword, Water OR Damage=20
      WaterDash, Hammer, Water OR Damage=20
      WaterDash, Dash, Water OR Damage=20  # dive launch
  conn UpperReach.OutsideTreeRoom:  # when changing or adding paths, keep in mind that there are derived paths to UpperSoup
    # The floating platform in the water only spawns if you reload from menu nearby.
    moki, UpperReach.ThawFurnace:
      Water, Combat=ShieldMiner OR DoubleJump OR Bash
      DoubleJump, Dash, Glide
    gorlek, UpperReach.ThawFurnace:
      Water, WaterDash, Glide OR Sword  # go up to get over the enemy
      Damage=20, WaterDash, Combat=ShieldMiner OR DoubleJump OR Bash
      DoubleJump, TripleJump OR Damage=20
      DoubleJump, Dash, Sword OR Hammer
      Combat=ShieldMiner, Damage=20, Dash OR Glide OR Sword OR Hammer
      Bash, Damage=20, Dash OR Glide OR Sword OR Hammer
      Grapple, DoubleJump
      Grapple, Dash, Glide, Combat=ShieldMiner OR Bash
      Grapple, Damage=20, Combat=ShieldMiner OR Bash
    kii, UpperReach.ThawFurnace:
      Water OR Damage=20
      DoubleJump, Dash OR Glide OR Sword OR Hammer OR Sentry=3
      Dash, Sword OR Hammer
      Grapple, Dash OR Glide OR Sword OR Hammer OR Sentry=2
    unsafe, UpperReach.ThawFurnace:
      DoubleJump OR Dash OR Sword OR Hammer OR Glide OR Grapple OR Shuriken=1 OR Sentry=1 OR Flash=1 OR Spear=1  # QTM near the waterfall to make a floating platform appear
  conn UpperReach.KeystoneSnapPlant:  # when changing or adding paths, keep in mind that there are derived paths to UpperSoup
    gorlek: Launch
    kii: Bash, DoubleJump, TripleJump
  conn UpperReach.KeystoneSnapPlantThawed:
    moki, UpperReach.ThawFurnace:
      Bash, DoubleJump, Grapple OR Glide
      Bash, Water, WaterDash, Dash, Glide
      Bash, Grenade=1, Dash, Glide
      Bash, Launch
    gorlek, UpperReach.ThawFurnace:
      Bash, DoubleJump
      Bash, WaterDash, Glide, Water OR Damage=20
      Bash, Water, WaterDash, Grapple, Dash OR Sword OR Damage=20
      Bash, Damage=20, WaterDash, Grapple, Dash OR Sword
      Bash, Grenade=1, Glide
      Bash, Grenade=1, Grapple, Dash OR Sword OR Damage=20
      Bash, SentryJump=1, Glide
      Bash, SwordSJump=1, Grapple
      Bash, HammerSJump=1, Grapple, Dash OR Damage=20
    kii, UpperReach.ThawFurnace:
      Bash, Glide  # Bash the gorlek to reach the plant
      Bash, WaterDash, Grapple, Water OR Damage=20
      Bash, Grapple, Dash OR Sword OR Hammer OR Shuriken=2 OR Sentry=2 OR Flash=2
      Bash, Grapple, Damage=20, Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=2
    unsafe, UpperReach.ThawFurnace:
      Sword, Damage=20
  conn LowerReach.BelowTokk: free

# checkpoint at -369, -3917
# checkpoint at -216, -3895

anchor UpperReach.KeystoneSnapPlant at -231, -3865:  # At the snap plant with MiddleLeftKS in its mouth
  conn UpperReach.KeystoneSnapPlantPaths: free
  conn UpperReach.KeystoneSnapPlantThawedPaths:
    moki: UpperReach.ThawFurnace
  conn UpperReach.UpperSoup:  # mirrored in thawed variant
    moki:
      Glide OR Launch
      DoubleJump, Dash
    gorlek:
      Sword
      DoubleJump, TripleJump OR Hammer OR Damage=20
      Dash, Hammer OR Damage=20
    kii:
      DoubleJump, Shuriken=1 OR Sentry=1 OR Flash=1 OR Spear=1
      Dash, Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=1 OR Spear=1
      Hammer, Shuriken=1 OR Sentry=1 OR Flash=1 OR Damage=20
      Sentry=3
      Damage=20, Shuriken=1 OR Sentry=2
    unsafe:
      Damage=40

anchor UpperReach.KeystoneSnapPlantThawed at -231, -3865:
  conn UpperReach.KeystoneSnapPlantPaths: free
  conn UpperReach.KeystoneSnapPlantThawedPaths: free
  conn UpperReach.UpperSoupThawed:  # mirrored in main variant
    moki:
      Glide OR Launch
      DoubleJump, Dash
    gorlek:
      Sword
      DoubleJump, TripleJump OR Hammer OR Damage=20
      Dash, Hammer OR Damage=20
    kii:
      DoubleJump, Shuriken=1 OR Sentry=1 OR Flash=1 OR Spear=1
      Dash, Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=1 OR Spear=1
      Hammer, Shuriken=1 OR Sentry=1 OR Flash=1 OR Damage=20
      Sentry=3
      Damage=20, Shuriken=1 OR Sentry=2
    unsafe:
      Damage=40

anchor UpperReach.KeystoneSnapPlantPaths at -231, -3865:
  pickup UpperReach.MiddleLeftKS: free
  pickup UpperReach.LowerKS:
    gorlek: DoubleJump, TripleJump
    kii: DoubleJump
    unsafe: Sword

  conn UpperReach.KeystoneRoom:  # check for redundancies with UpperSoup
    moki: DoubleJump OR Dash
    gorlek: Hammer OR Damage=20
    kii: Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=1 OR Spear=1

anchor UpperReach.KeystoneSnapPlantThawedPaths at -231, -3865:
  pickup UpperReach.LowerKS:
    moki: Glide
    gorlek:
      Sword
      Dash, Bash OR Grapple OR Damage=10
      Hammer, Bash OR Grapple OR Damage=10
      Dash, Hammer
      Damage=20, Grapple
    kii: Dash OR Hammer OR Shuriken=1 OR Sentry=1 OR Flash=1 OR Blaze=2 OR Damage=20
    unsafe: free

anchor UpperReach.UpperSoup at -215, -3877:  # At the soup
  conn UpperReach.UpperSoupPaths: free
  conn UpperReach.UpperSoupFrozenPaths:
    moki: UpperReach.FreezeFurnace
  conn UpperReach.UpperSoupThawedPaths:
    moki: UpperReach.ThawFurnace

anchor UpperReach.UpperSoupFrozen at -215, -3877:
  conn UpperReach.UpperSoupPaths: free
  conn UpperReach.UpperSoupFrozenPaths: free

anchor UpperReach.UpperSoupThawed at -215, -3877:
  conn UpperReach.UpperSoupPaths: free
  conn UpperReach.UpperSoupThawedPaths: free

anchor UpperReach.UpperSoupPaths at -215, -3877:
  refill Checkpoint

  pickup UpperReach.SoupOre: free
  pickup UpperReach.LowerKS:  # check for redundancies with KeystoneSnapPlant
    gorlek: DoubleJump, TripleJump, Glide
    kii:
      DoubleJump, TripleJump
      Flap, Bash  # Use the soup projectile. Bash the gorlek first so you get enough height from it.
      Glide, DoubleJump, Hammer OR Sentry=1 OR Flash=1 OR Shuriken=1
    unsafe:
      DoubleJump, Dash OR Hammer OR Sentry=1
      Sword, Damage=20, Damage=20  # go through the mortar room
  pickup UpperReach.UpperKS:
    moki:
      DoubleJump, Bash
      Launch
    gorlek: Bash
    unsafe: SwordSJump=1, Damage=20, DoubleJump OR Hammer  # dboost in the spike at the right of the enemy and sjump from here
  pickup UpperReach.SwingPoleEX:
    moki:
      DoubleJump
      Bash, Grenade=1
      Launch
    gorlek:
      Bash OR Hammer
      SentryJump=1
    kii: Spear=1
    unsafe:  # Since the cooled state solves by itself, all paths can use the heated state implicitely without any risk of softlocking
      Sword
      Damage=20
      # Dash, Sword, Damage=10  # upslash+dash in the icy part of the pole

  conn UpperReach.KeystoneRoom: free
  conn UpperReach.KeystoneSnapPlant:
    moki: Launch, DoubleJump OR Dash OR Glide
    gorlek: Damage=20, DoubleJump, TripleJump
    kii:
      Damage=20, DoubleJump, Dash OR Sword OR Hammer OR Sentry=2
      Damage=40, DoubleJump OR Dash
      Dash, Hammer, Damage=20
      Dash, Sword, Damage=40
    unsafe:
      DoubleJump, TripleJump
      DoubleJump, Damage=20, Sentry=1 OR Flash=1 OR Shuriken=1
      SwordSJump=1, Damage=20  # start at the soup, need to weapon stall to land further left on the spikes
      Damage=20, Grenade=1, Sword OR Hammer OR DoubleJump OR Dash OR Glide  # GrenadeJump=1 start at the soup, need to land further left on the spikes

anchor UpperReach.UpperSoupFrozenPaths at -215, -3877:
  refill Checkpoint

  pickup UpperReach.UpperKS:
    unsafe: SwordSJump=1, Damage=20  # dboost in the spike at the right of the enemy and sjump from here
  pickup UpperReach.SwingPoleEX:
    gorlek: Dash OR Sword
    kii: Glide OR Hammer OR Sentry=1 OR Flash=1 OR Shuriken=1
    unsafe: free

  conn UpperReach.UpperSoupThawedPaths:  # light the furnace without dropping down
    unsafe:
      Grenade=1
      Flap, Bash

anchor UpperReach.UpperSoupThawedPaths at -215, -3877:
  refill Checkpoint

  pickup UpperReach.LowerKS:
    moki: Glide
    gorlek:
      Sword
      Dash, Hammer
    kii: Dash OR Sentry=2 OR Blaze=4
    unsafe: Damage=20, Sentry=1 OR Flash=1 OR Shuriken=1 OR Blaze=2
  pickup UpperReach.MiddleRightKS:
    moki:
      DoubleJump
      Bash, Grenade=1
      Launch
    gorlek:
      Bash OR Hammer
      SentryJump=1
    kii: Spear=1
    unsafe:
      Sword
      Damage=20
      # Dash, Sword, Damage=10  # upslash+dash in the icy part of the pole

  conn UpperReach.OutsideTreeRoom: free

anchor UpperReach.OutsideTreeRoom at -169, -3911:  # In front of the keystone door
  refill Checkpoint
  refill Energy=3:
    moki, UpperReach.ThawFurnace, BreakCrystal:
      Water, Grapple, DoubleJump OR Dash OR Glide
      Launch
    gorlek, UpperReach.ThawFurnace:
      BreakCrystal, Grapple, DoubleJump OR Dash
      BreakCrystal, DoubleJump, TripleJump OR Dash
      Water, BreakCrystal, Bow OR Spear
      Water, Grapple, BreakCrystal, Sword OR Hammer
    kii, UpperReach.ThawFurnace:
      Water, BreakCrystal, Grenade

  state UpperReach.KeystoneDoor:
    moki: Keystone=4

  pickup UpperReach.SwimEX:
    moki: UpperReach.ThawFurnace, Water

  conn UpperReach.UpperSoup:
    moki, UpperReach.ThawFurnace:
      Grapple, DoubleJump
      Bash, Grenade=1, DoubleJump
    gorlek, UpperReach.ThawFurnace:
      Grapple, Dash
      DoubleJump, TripleJump OR Dash
      Bash, Grenade=1, Dash
      Bash, Grenade=1, Damage=20, Glide OR Sword OR Hammer
    kii, UpperReach.ThawFurnace:
      DoubleJump, Sword OR Hammer OR Shuriken=1 OR Sentry=1 OR Flash=1 OR Spear=1
      Grapple, Sword OR Hammer OR Sentry=4
      Grapple, Sentry=3, Damage=20
      Bash, Grenade=1, Sword OR Hammer OR Shuriken=1 OR Sentry=1 OR Flash=1 OR Damage=20
    unsafe: UpperReach.ThawFurnace, DoubleJump, Glide
  conn UpperReach.TreeRoomLedge:
    moki: UpperReach.KeystoneDoor
  # backwards connection can't get through the Icefall

anchor UpperReach.TreeRoomLedge at -136, -3911:  # On the ledge to the left and above the tree
  state UpperReach.KeystoneDoor:
    moki: Keystone=4

  pickup UpperReach.TreeOre:
    moki:
      Bash, Grenade=1, DoubleJump, Dash OR Glide
      Bash, Grenade=1, Dash, Glide
      Launch, DoubleJump OR Dash OR Glide
    gorlek:
      Bash, Grenade=1, Glide
      Bash, Grenade=1, DoubleJump, Sword OR Hammer
      Bash, Grenade=1, Dash, Sword OR Hammer
      Launch, Sword OR Hammer
      Launch, Bash, Grenade=1
      SentryJump=1, DoubleJump, Dash OR Glide
    kii:
      Bash, Grenade=1, Dash OR Sword OR Sentry=3
      Bash, Grenade=1, Hammer, Shuriken=1 OR Sentry=1 OR Flash=1
    unsafe:
      Bash, Grenade=1, Hammer
      SentryJump=1, DoubleJump OR Dash OR Glide
      Launch

  conn UpperReach.TreeRoom: free
  # backwards connection can't get through the Icefall

anchor UpperReach.TreeRoom at -107, -3933:  # At the tree
  refill Checkpoint:  # the hut door saves
    unsafe: free
  refill Energy=4:  # fast respawning crystal
    moki: BreakCrystal

  quest UpperReach.SpringSeed:
    moki: Grenade=1
    gorlek: SentryBurn=1  # Use sentry to light the lantern

  pickup UpperReach.LightBurstTree: free
  pickup UpperReach.WellEX: free
  pickup UpperReach.HiddenEX:
    moki: Grenade=1
    gorlek: SentryBurn=1  # Use sentry to melt the ice
  pickup UpperReach.TreeOre:
    gorlek: Bash, Grenade=1, DoubleJump, TripleJump
    kii:
      Bash, Grenade=1, DoubleJump
      DoubleJump, TripleJump, Dash OR Glide OR Sword OR Hammer OR Sentry=2  # Climb the right wall

  conn UpperReach.TreeRoomLedge:
    moki:
      Bash, Grenade=3
      Launch
    gorlek:
      Bash, Grenade=1, DoubleJump, TripleJump
      SentryJump=1, Grenade=2
      SentryJump=2, SentryBurn=2
    kii:
      DoubleJump, TripleJump
      Bash, Grenade=2, DoubleJump  # go up to the ore
      Bash, Grenade=1, DoubleJump, Dash OR Glide OR Sword  # go up to the ore
      Bash, Grenade=1, DoubleJump, Hammer, Shuriken=1 OR Sentry=1 OR Flash=1  # go up to the ore

region UpperDepths:
  moki: Danger=40, Regenerate
  gorlek: Regenerate
  kii: Regenerate
  unsafe: free

anchor UpperDepths.Entry at 161, -4340:  # The little standable ground below the entrance
  pickup UpperDepths.EntrySpikesEX:
    moki: Glide
    gorlek: Damage=10
    unsafe: free

  conn UpperDepths.FirstFirefly:
    moki:
      Glide, Combat=2xBombSlug+2xBat+SneezeSlug
      Glide, Combat=2xBombSlug, Bash
    gorlek:
      Glide, Combat=Bat OR Bash
      Combat=2xBombSlug, Damage=30, Bash, DoubleJump OR Dash  # Lots of possibilities here but Bash is the most reliable way to avoid too much damage
  conn EastHollow.AboveDepths:
    moki: EastHollow.DepthsOpen, Glide
    gorlek, EastHollow.DepthsOpen:
      Launch, DoubleJump OR Damage=10
      SentryJump=1, Launch
    unsafe, EastHollow.DepthsOpen:
      Launch
      Bash, Grenade=1, DoubleJump, TripleJump
      Bash, Grenade=2, DoubleJump  # wall jump on the right wall, go to the safe spot in the spikes, grenade bash again from here
      SentryJump=2, DoubleJump  # same as above

# checkpoint at 147, -4392

anchor UpperDepths.FirstFirefly at 211, -4391:  # Where the Voice dialogue plays
  refill Checkpoint

  pickup UpperDepths.EntryRoofEX:
    moki:
      Bash, DoubleJump OR Dash
      Grapple, DoubleJump, Dash
      Launch
    gorlek:
      Bash, Grenade=1
      Grapple, DoubleJump, TripleJump OR Glide
      SentryJump=1, Combat=Bat, DoubleJump OR Dash
    unsafe:
      Bash
      SentryJump=1, Combat=Bat, Glide, Damage=30
  pickup UpperDepths.EntryOre:
    moki:
      Combat=Bat, Grapple, DoubleJump
      Bash, DoubleJump OR Grapple
      Launch
    gorlek:
      Grapple, DoubleJump
      Bash OR SentryJump=1
    unsafe:
      DoubleJump, TripleJump
      Hammer, DoubleJump
      Grenade=1
      DoubleJump, Shuriken, Sword, Deflector
  pickup UpperDepths.LeftEntryKS:  # paths breaking the firefly egg; others can go from the anchor below
    moki:
      BreakWall=1, Combat=Spiderling, Grapple, DoubleJump OR Dash OR Glide
      BreakWall=1, Bash, Grapple, DoubleJump OR Dash OR Glide
      BreakWall=1, Launch
      Bow=1, Combat=Spiderling OR DoubleJump OR Bash OR Launch
      Spear=1, Combat=Spiderling OR DoubleJump OR Bash OR Launch
    gorlek:
      BreakWall=1, Grapple
      BreakWall=1, DoubleJump, TripleJump OR Dash OR Glide  # Glide happens to automatically line up with the safe spot, Sword doesn't
      Bow=1 OR Spear=1  # break the firefly egg from a distance
      SwordSJump=1, DoubleJump OR Dash OR Glide  # Go as close to spikes as possible, do SentryJup and the Sword hower + the skill you have
    unsafe: Bash  # make friends with the spiderling
  # a higher difficulty can put paths directly to swimec using the firefly egg here

  conn UpperDepths.Entry:
    moki:
      Glide, Combat=2xBombSlug+2xBat+SneezeSlug
      Glide, Combat=2xBombSlug, Bash
    gorlek:
      Glide, Bash, Combat=BombSlug OR Damage=10
      Glide, Combat=BombSlug+Bat
      Glide, Combat=Bat, Damage=10
      Launch, DoubleJump, TripleJump, Dash, Bash, Damage=30
    unsafe: Glide
  conn UpperDepths.FirstKSRoom: free

anchor UpperDepths.FirstKSRoom at 223, -4420:  # Below the first firefly egg
  refill Checkpoint:  # this checkpoint is easy to walk past
    unsafe: free
  refill Energy=3:  # this crystal is in the darkness
    unsafe: BreakCrystal

  pickup UpperDepths.LeftEntryKS:
    moki: DepthsLight, Combat=Spiderling OR DoubleJump OR Bash OR Launch
    gorlek: DepthsLight
  pickup UpperDepths.SwimEC:
    moki:
      Flash=1, Water, Combat=Spiderling OR DoubleJump OR Bash OR Launch
      UpperDepths.ForestsEyes, Water, Combat=Spiderling OR DoubleJump OR Bash OR Launch
    gorlek:
      Water, UpperDepths.ForestsEyes OR Flash=1
      DepthsLight, ShurikenBreak=20, DoubleJump OR Dash OR Bash OR Glide OR Sword OR Hammer OR Damage=30

  conn UpperDepths.FirstFirefly:
    moki:
      Grapple, DoubleJump, Combat=Spiderling+WeakSlug OR Bash
      Launch, DoubleJump OR Grapple
    gorlek:
      Grapple, Combat=WeakSlug, DoubleJump OR Damage=30
      Grapple, Bash, DoubleJump OR Damage=30
      SentryJump=1, DoubleJump, Damage=30, Combat=2xSpiderling OR Bash
      Bash, Grenade=1, DoubleJump, Damage=30  # Possible without dmg if you go and jump from the left wall for additional height
      Launch
  conn UpperDepths.KeydoorLedge:
    moki:
      DoubleJump, Grapple
      Bash, Grenade=1, DoubleJump OR Dash OR Glide OR Grapple
      Launch
    gorlek:
      Grapple, Dash OR Glide OR Sword
      DoubleJump, TripleJump, Dash OR Glide OR Sword
      Bash, Grenade=1
      SwordSJump=1
      HammerSJump=1, DoubleJump OR Dash OR Glide OR Grapple
  conn UpperDepths.RightKeystonePath:
    gorlek:
      Bash, Grenade=1, DoubleJump OR Dash OR Glide
      Glide, DoubleJump OR Dash

# checkpoint at 136, -4425
# checkpoint at 297, -4376

anchor UpperDepths.KeydoorLedge at 285, -4407:  # In front of the entry keystone door
  refill Checkpoint:
    moki: UpperDepths.EntryKeystoneDoor

  state UpperDepths.LightPuzzle:  # breaking the corruption blocking the light
    moki, UpperDepths.EntryKeystoneDoor, BreakWall=16, BreakWall=16:
      DoubleJump, Bash, Grapple
      Bash, Launch
    gorlek, UpperDepths.EntryKeystoneDoor, BreakWall=16, BreakWall=16:
      DoubleJump, Grapple, Combat=Spiderling+SneezeSlug
      Bash, DoubleJump, TripleJump
      Bash, DoubleJump, Damage=30, Dash OR Glide OR Sword
      Bash, Grenade=2, Combat=Spiderling+SneezeSlug, DoubleJump OR Dash
      Launch, DoubleJump OR Dash OR Glide OR Sword
  state UpperDepths.EntryKeystoneDoor:
    moki: Keystone=2

  conn UpperDepths.FirstKSRoom:
    moki: DoubleJump OR Dash OR Grapple OR Glide OR Launch
    gorlek: Sword OR Hammer OR Damage=30
    unsafe: free
  conn UpperDepths.RightKeystonePath:
    moki:
      Grapple, DoubleJump OR Dash
      Glide OR Launch
    gorlek:
      DoubleJump, TripleJump OR Dash OR Sword OR Hammer  # With Hammer first do howering, then press DoubleJump
      Grapple, Sword
  conn UpperDepths.BelowHive:
    moki, UpperDepths.EntryKeystoneDoor, UpperDepths.LightPuzzle OR DepthsLight:
      Bash, DoubleJump, Grapple
      Bash, Grenade=1, DoubleJump OR Dash OR Glide OR Grapple
      Launch
    gorlek, UpperDepths.EntryKeystoneDoor:
      UpperDepths.LightPuzzle OR DepthsLight:
        DoubleJump, Grapple
        Bash, Grenade=1, DoubleJump OR Dash OR Glide OR Grapple
        Launch

anchor UpperDepths.RightKeystonePath at 305, -4426:  # at the ledge below the entry keydoor, going towards the keystone
  refill Checkpoint

  pickup UpperDepths.RightEntryKS:
    moki:
      Grapple, DoubleJump
      Launch
    gorlek:
      Grapple
      DoubleJump, TripleJump
      DepthsLight, DoubleJump OR Dash OR Glide OR Sword  # use the poles hanging from the ceiling
      DepthsLight, Bash, Grenade=1
      DepthsLight, SentryJump=1

  conn UpperDepths.FirstKSRoom:
    moki:
      Grapple, DoubleJump
      Launch, DoubleJump OR Dash OR Glide
    gorlek:
      Grapple, Dash OR Damage=30
      Grapple, SentryJump=1
      Launch

anchor UpperDepths.BelowHive at 422, -4402:  # Below the Hive, on top of the tunnel leading downwards
  refill Checkpoint
  refill Full:  # use the teleporter (mirror of connecting to the teleporter and then back here)
    moki:
      BreakWall=1, Grapple, Bow OR Spear
      BreakWall=1, Launch
      DepthsLight, Grapple OR Launch
      DepthsLight, Bash, Grenade=1
    gorlek:
      Grapple, BreakWall=1, Bow OR Spear OR Shuriken OR Grenade
      DoubleJump, TripleJump, BreakWall=1, Bow OR Spear OR Shuriken OR Grenade
      SentryJump=1, Grapple  # use the weapon to break the firefly egg
      SentryJump=1, DoubleJump, TripleJump  # use the weapon to break the firefly egg
      DepthsLight, Damage=30, DoubleJump OR Dash
      DepthsLight, SentryJump=1
  refill Energy=3:
    moki: BreakCrystal, DoubleJump OR Launch

  state UpperDepths.EntryKeystoneDoor:  # mirror of connections to keydoor ledge
    moki: Keystone=2, DepthsLight, DoubleJump OR Dash OR Glide OR Launch
    gorlek, Keystone=2:
      DepthsLight, Sword OR Hammer OR Damage=30
      Dash, Launch

  quest UpperDepths.LightcatcherSeed:
    gorlek: ShurikenBreak=20, DepthsLight, DoubleJump OR Dash OR Glide OR Sword

  pickup UpperDepths.HiveEX:
    moki: Bash OR Launch  # bash makes paths destroying the hive redundant in moki
    gorlek:
      Combat=Nest, Grapple, DoubleJump  # use sword or hammer from combat to hover
      Combat=Nest, SentryJump=1

  conn UpperDepths.KeydoorLedge:  # solving the light puzzle can't meaningfully softlock this since it means you can already access the other side
    moki: UpperDepths.EntryKeystoneDoor, DepthsLight, DoubleJump OR Dash OR Glide OR Launch
    gorlek, UpperDepths.EntryKeystoneDoor:
      DepthsLight, Sword OR Hammer OR Damage=30
      Dash, Launch
  conn UpperDepths.Teleporter:
    moki:
      Grapple OR Launch
      DepthsLight, Bash, Grenade=1
    gorlek:
      DoubleJump, TripleJump
      DepthsLight, Damage=30, DoubleJump OR Dash
      DepthsLight, SentryJump=1
  conn UpperDepths.Central:  # paths using the firefly have to go from the teleporter
    moki: DepthsLight, DoubleJump OR Dash OR Glide OR Launch  # a bit scary...
    gorlek: DepthsLight
  conn UpperDepths.LowerConnection:
    moki: DepthsLight  # a bit scary...
  # so far, all connections to morapath going past the seed would be redundant with going to the teleporter first

# checkpoint at 529, -4399

anchor UpperDepths.Teleporter at 513, -4361:  # The spirit well
  refill Full
  
  state NonGladesTeleporter: free

  pickup UpperDepths.TeleporterEX: free  # just a few steps away in the darkness

  conn Teleporters: free
  conn UpperDepths.BelowHive:
    moki:
      BreakWall=1, Bow OR Spear
      BreakWall=1, Launch
      DepthsLight
    gorlek:
      BreakWall=1, Shuriken OR Grenade
      SentryJump=1  # use the weapon to break the firefly egg
      Dash, Damage=30 OR Launch  # spam and land in the spikes or catch with launch
  conn UpperDepths.Central:  # paths using depthslight already solve connection through the midway anchor
    moki:
      BreakWall=1, Bow, DoubleJump OR Dash OR Glide OR Launch  # a bit scary...
      BreakWall=1, Spear, DoubleJump OR Dash OR Glide OR Launch  # a bit scary...
      BreakWall=1, Launch
    gorlek:
      BreakWall=1, Bow OR Spear OR Shuriken OR Grenade
      SentryJump=1  # use the weapon to break the firefly egg
  conn UpperDepths.OutsideMoraFight:
    gorlek: ShurikenBreak=20

anchor UpperDepths.Central at 464, -4484:  # The firefly egg to the right of the second keystone door
  refill Checkpoint
  refill Energy=3:  # in the dark above
    unsafe: BreakCrystal, Launch

  state UpperDepths.CentralKeystoneDoor:
    moki: Keystone=2

  conn UpperDepths.SecondKSRoom:
    moki:
      Combat=2xSpiderling, BreakWall=1  # combat will provide a weapon, depthslight would be redundant here
      Bash, DepthsLight OR BreakWall=1
    gorlek: free  # don't look behind oriLurk
  conn UpperDepths.LowerConnection:
    moki: UpperDepths.CentralKeystoneDoor
  conn UpperDepths.BelowHive:
    moki: DepthsLight, Launch
    gorlek:
      DepthsLight, Bash, Grenade=1, DoubleJump, TripleJump OR Damage=10
      DepthsLight, SentryJump=1, DoubleJump, TripleJump, Damage=10

anchor UpperDepths.SecondKSRoom at 542, -4467:  # The egg of the firefly circling through the keystone room
  refill Checkpoint
  refill Energy=4:
    moki: BreakCrystal
  # a great number of energy crystals on the way through the dark have not been considered (they would probably even out since more anchors would also increase the flash cost)

  pickup UpperDepths.RightHealthKS:
    moki: BreakWall=1 OR DepthsLight
    gorlek: free
  pickup UpperDepths.LeftHealthKS:
    moki:
      BreakWall=1, DoubleJump, Dash OR Glide
      DepthsLight, DoubleJump, Dash OR Glide
      DepthsLight, DoubleJump, Bash, Grenade=1
      Launch, BreakWall=1 OR DepthsLight
    gorlek:
      DoubleJump, TripleJump, BreakWall=1 OR DepthsLight
      Dash, Glide, BreakWall=1 OR DepthsLight
      Sword, DoubleJump OR Dash  # break the firefly egg and hover
      DepthsLight, Bash, Grenade=1
      DepthsLight, SentryJump=1
      Launch
  pickup UpperDepths.KeystoneHC:
    moki:
      BreakWall=1, DoubleJump, Dash, Glide
      DepthsLight, DoubleJump, Dash OR Glide
      Launch, BreakWall=1 OR DepthsLight
    gorlek:
      BreakWall=1, DoubleJump, TripleJump OR Dash OR Glide
      DepthsLight, DoubleJump, TripleJump
      Dash, Launch
    unsafe:
      DepthsLight, DoubleJump, Sword
  pickup UpperDepths.BossPathEX:  # saved for later to know redundancies with the new anchor
    moki:
      DepthsLight, DoubleJump, Dash
      DepthsLight, DoubleJump, Bash, Grenade=1
      DepthsLight, Launch
    gorlek:
      DepthsLight, SentryJump=1, DoubleJump
      Launch
    unsafe:
      DepthsLight, DoubleJump, Sword

  conn UpperDepths.Central:
    moki:
      Combat=Spiderling, DepthsLight OR BreakWall=1
      Bash, DepthsLight OR BreakWall=1
    gorlek: DepthsLight OR BreakWall=1 OR Dash OR Bash OR Glide OR Launch OR Sword OR Hammer OR Damage=10  # with DoubleJump it's still quite easy to take damage
  conn UpperDepths.MoraPath:
    moki:
      DepthsLight, DoubleJump, Grapple, Dash OR Glide
      DepthsLight, Launch
    gorlek:
      DepthsLight, DoubleJump
      DepthsLight, Dash, Damage=30
      DepthsLight, Bash, Grenade=1, Damage=30, Glide OR Sword
      DepthsLight, Bash, Grenade=2

anchor UpperDepths.MoraPath at 572, -4431:  # At the safe light during the dark path towards Mora
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  quest UpperDepths.LightcatcherSeed:
    moki:
      DepthsLight, Grapple, DoubleJump, Dash
      DepthsLight, Combat=2xSpiderling, DoubleJump, Dash, Bash, Grenade=1  # clear the floor to bashgrenade
      DepthsLight, Launch
    gorlek:
      DepthsLight, Bash, DoubleJump OR Dash OR Glide OR Sword OR Damage=30
      DepthsLight, Combat=3xSpiderling, Grapple, DoubleJump OR Dash OR Glide OR Sword OR Damage=30
      DepthsLight, SwordSJump=1  # kill the spiderlings with the weapon
      DepthsLight, HammerSJump=1, DoubleJump OR Dash OR Glide OR Damage=30  # kill the spiderlings with the weapon
      DoubleJump, Dash, Bash, Grapple
      Launch

  conn UpperDepths.OutsideMoraFight:
    moki:
      DepthsLight, Grapple, DoubleJump, Dash OR Glide
      DepthsLight, Grapple, DoubleJump, Bash, Grenade=1
      DepthsLight, Launch
    gorlek:
      DepthsLight, Grapple, Dash, Damage=30, Glide OR Sword
      DepthsLight, DoubleJump, TripleJump
      DepthsLight, Grapple, Bash, Grenade=1, Dash OR Glide OR Sword
      DepthsLight, Bash, Grenade=2, DoubleJump OR Dash OR Glide OR Sword
      DepthsLight, Bash, Grenade=3
      DepthsLight, Grapple, SwordSJump=1
      DepthsLight, Grapple, HammerSJump=1, DoubleJump OR Dash OR Glide
      DepthsLight, SwordSJump=2
      DepthsLight, HammerSJump=2, DoubleJump OR Dash OR Glide
      DepthsLight, SentryJump=3
      Launch, DoubleJump OR Dash OR Glide
  conn UpperDepths.SecondKSRoom:
    moki: DepthsLight
  conn UpperDepths.BelowHive:  # many paths would be redundant with going to the teleporter
    gorlek, BreakWall=20:
      DepthsLight, Bash, Grapple, DoubleJump OR Dash OR Glide OR Sword OR Damage=30
      DepthsLight, Bash, Grenade=1, DoubleJump OR Dash OR Glide OR Sword OR Damage=30
      DepthsLight, Bash, SwordSJump=1
      DepthsLight, Bash, HammerSJump=1, DoubleJump OR Dash OR Glide OR Damage=30
      DepthsLight, Combat=3xSpiderling, Grapple, DoubleJump OR Dash OR Glide OR Sword OR Damage=30
      DepthsLight, SentryJump=1, Grapple, Glide OR Damage=30  # kill the spiderlings with the weapon
      DepthsLight, SentryJump=2, Glide OR Damage=30  # kill the spiderlings with the weapon
  # going to the keydoor should always be easier through the bottom path (keystone room) than going past the seed

anchor UpperDepths.OutsideMoraFight at 595, -4376:  # Directly left of Mora's lair
  refill Checkpoint

  conn MoraFirstPhase: free
  conn UpperDepths.Teleporter:
    moki, BreakWall=20:
      DoubleJump OR Launch
      Bash, Grenade=1
    gorlek: BreakWall=20, Dash OR Sword OR HammerSJump=1
    unsafe: BreakWall=20, Glide
  conn UpperDepths.MoraPath:
    moki: DepthsLight, DoubleJump OR Dash OR Glide
    gorlek: free

anchor MoraFirstPhase at 674, -4385:
  nospawn
  refill Full
  
  conn MoraEscape:
    moki:
      SkipMora1  # Impossible state used to logically support skipping Mora through headers
      Boss=165, Regenerate, Damage=50, Bash, Grapple, DoubleJump OR Dash OR Launch
    kii: Boss=165, Regenerate, Damage=50, DoubleJump OR Dash OR Launch
    unsafe: Boss=165

anchor MoraEscape at 712, -4482:
  nospawn
  refill Checkpoint
  
  conn MoraSecondPhase:  # Abilities needed for the escape part
    moki: Bash, Grapple, DoubleJump OR Launch
    gorlek:
      Bash, Grapple, Dash
      Bash, Launch
      Launch, DoubleJump, TripleJump
      Launch, SentryJump=1, DoubleJump OR Grapple
    kii:
      Bash, Grapple, Glide OR Sword OR Hammer OR Shuriken=1 OR Sentry=1 OR Flash=1 OR Spear=1
      Launch, DoubleJump  # Multiple solutions: refresh your launch on the right ceiling, jump when the ground is moving up or use the right platform before the rock starts falling on it
    unsafe:
      Bash, Grapple
      Launch
  
anchor MoraSecondPhase at 690, -4386:
  nospawn
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  quest UpperDepths.ForestsEyes:
    moki:
      SkipMora2  # Impossible state used to logically support skipping Mora through headers
      Boss=165, Regenerate, Damage=60, Bash, Flash, DoubleJump OR Dash OR Launch
    kii:
      Boss=165, Regenerate, Damage=60, DepthsLight, Launch
      Boss=165, Regenerate, Damage=60, DepthsLight, Bash, DoubleJump OR Dash
    unsafe: Boss=165

anchor UpperDepths.LowerConnection at 423, -4475:  # The firefly egg to the left of the second keystone door
  refill Checkpoint
  # energy crystal on the way to the trial not considered

  state UpperDepths.CentralKeystoneDoor:
    moki: Keystone=2

  pickup LowerDepths.BelowDoorOre:
    moki: DepthsLight  # It's hidden in a dark area, not hard to reach.
    gorlek: free  # the ore is a light source, lots of time to teleport out
  pickup LowerDepths.LeftEX:
    moki:
      Glide, BreakWall=1 OR DepthsLight
      Launch, BreakWall=1 OR DepthsLight
      DoubleJump, Dash, BreakWall=1 OR DepthsLight
    gorlek:
      Sword  # break the firefly egg and hover
      Hammer, DoubleJump OR Damage=30  # break the firefly egg and hover
      Dash, BreakWall=1 OR DepthsLight
      BreakWall=1, DoubleJump OR Damage=30
      DepthsLight, DoubleJump OR Damage=30

  conn UpperDepths.BelowHive:
    moki:
      DoubleJump, Grapple, BreakWall=1 OR DepthsLight
      Launch, BreakWall=1 OR DepthsLight
      DepthsLight, Bash, Grenade=2, DoubleJump
    gorlek:
      DepthsLight, Grapple, Bash, Grenade=1, Damage=10
      DepthsLight, Bash, Grenade=2, Damage=10, Dash OR Glide
      DepthsLight, Bash, Grenade=3, Damage=10
      DepthsLight, Grapple, SentryJump=1, Damage=10
      DepthsLight, SentryJump=2, DoubleJump
      DepthsLight, SentryJump=2, Damage=10, Dash OR Glide
      DepthsLight, SentryJump=3, Damage=10
      BreakWall=1, DoubleJump, TripleJump
      BreakWall=1, SentryJump=4
      SentryJump=1, DoubleJump, DepthsLight OR BreakWall=1
  conn UpperDepths.Central:
    moki: UpperDepths.CentralKeystoneDoor
  conn LowerDepths.West:
    moki:
      BreakWall=1, Dash, DoubleJump OR Glide
      DepthsLight, DoubleJump, Dash
      DepthsLight, Glide
      Launch, BreakWall=1 OR DepthsLight
    gorlek:
      Sword  # break the firefly egg and hover
      Dash, BreakWall=1 OR DepthsLight
      DoubleJump, DepthsLight OR BreakWall=1
      Damage=30, DepthsLight OR BreakWall=1
  conn LowerDepths.Central:
    moki:  # the paths in the dark are a bit treacherous...
      BreakWall=1, DoubleJump, Dash, Bash
      BreakWall=1, Launch, DoubleJump OR Glide
      DepthsLight, DoubleJump, Dash, Bash OR Glide
      DepthsLight, Bash, Glide
      DepthsLight, Bash, Grenade=1, DoubleJump OR Dash OR Glide
      DepthsLight, Launch, DoubleJump OR Dash OR Bash OR Glide
    gorlek:
      BreakWall=1, Dash, Glide  # take the shortcut through the darkness
      BreakWall=1, DoubleJump, Dash, TripleJump OR Glide OR Sword OR Damage=30
      BreakWall=1, Launch, Dash OR Bash OR Sword OR Hammer OR Damage=30
      DepthsLight, Glide
      DepthsLight, Bash, DoubleJump OR Dash OR Sword OR Hammer
      DepthsLight, Damage=30, DoubleJump OR Dash OR Sword
      DepthsLight, DoubleJump, TripleJump, Dash OR Sword OR Hammer
      DepthsLight, DoubleJump, Dash, Hammer
      DepthsLight, Dash, Sword
      DepthsLight, Launch, Sword OR Hammer OR Damage=30

region LowerDepths:
  moki: Danger=40, Regenerate
  gorlek: Regenerate
  kii: Regenerate
  unsafe: free

anchor LowerDepths.West at 322, -4510:  # At the Moki needing a Lantern
  refill Checkpoint
  refill Health=1:  # to the left
    gorlek:
      DoubleJump, TripleJump OR Dash OR Glide OR Sword
      Dash, Glide OR Sword
      Bash OR Launch
      Water, WaterDash
    unsafe:
      Hammer, DoubleJump OR Dash
      Glide, Sword OR Hammer
  refill Energy=3:  # to the left
    gorlek, BreakCrystal:
      DoubleJump, TripleJump OR Dash OR Glide OR Sword
      Dash, Glide OR Sword
      Bash OR Launch
      Water, WaterDash
    unsafe:
      Hammer, DoubleJump OR Dash
      Glide, Sword OR Hammer
  # energy crystal on the way not considered

  quest LowerDepths.HandToHandSilk:
    moki: GladesTown.HandToHandLantern

  pickup LowerDepths.SwimEC:
    moki: Water, Bash, UpperDepths.ForestsEyes OR Flash
    gorlek: Water, Damage=10, UpperDepths.ForestsEyes OR Flash
  pickup LowerDepths.LeftEX:
    moki:
      DepthsLight, DoubleJump OR Dash OR Glide
      BreakWall=1, DoubleJump OR Dash OR Glide
    gorlek:
      DepthsLight, Sword OR Hammer
      BreakWall=1, Sword OR Hammer
    unsafe: DepthsLight OR BreakWall=1

  conn DepthsShrine:
    moki:
      Water, DoubleJump, Bash, UpperDepths.ForestsEyes OR Flash
      Water, Bash, Grenade=1, Dash, UpperDepths.ForestsEyes OR Flash
      Water, Bash, Grenade=1, Glide, UpperDepths.ForestsEyes OR Flash
      Water, Launch, UpperDepths.ForestsEyes OR Flash
    gorlek:
      ShurikenBreak=20:
        DoubleJump, TripleJump OR Dash OR Glide OR Sword
        Dash, Glide OR Sword
        Bash OR Launch
        WaterDash, Water OR Damage=20
      Water, UpperDepths.ForestsEyes OR Flash:
        DoubleJump, TripleJump
        SentryJump=2
        Bash, Dash
        Bash, Grenade=1, DoubleJump OR Glide OR Sword OR Hammer
    unsafe:
      Water, UpperDepths.ForestsEyes OR Flash:
        Bash  # the bash off the lantern is a bit precise
        DoubleJump, Dash, Sword OR Hammer  # djump + upslash + dash to the reach the wall before the shrine
      ShurikenBreak=20, Hammer, DoubleJump OR Dash
      ShurikenBreak=20, Glide, Sword OR Hammer
  conn UpperDepths.LowerConnection:
    moki: DepthsLight, Launch
    gorlek:  # Can make it easier by adding BreakWall=1 and using the firefly
      DepthsLight, DoubleJump, Damage=10, TripleJump OR Dash OR Glide OR Sword OR Hammer
      DepthsLight, DoubleJump, TripleJump, Dash OR Glide OR Sword
    unsafe:
      DepthsLight, Damage=30, DoubleJump OR Dash  # Dash needs 4 arrows, djump needs 5
  conn LowerDepths.Central:
    moki, BreakWall=1 OR DepthsLight:
      DoubleJump, Bash, Dash  # combatting the bat would need bash anyway in moki
      Launch, DoubleJump OR Glide
    gorlek:
      BreakWall=1, DoubleJump, Bash, TripleJump OR Glide OR Sword OR Hammer
      BreakWall=1, Combat=Bat, DoubleJump, Dash, Glide
      BreakWall=1, SentryJump=1, Damage=10, Bash, Dash
      DepthsLight, DoubleJump, Bash, TripleJump OR Glide OR Sword OR Hammer
      DepthsLight, Combat=Bat, DoubleJump, Glide
      DepthsLight, Combat=Bat, DoubleJump, Dash, Damage=30, Sword OR Hammer
      DepthsLight, SentryJump=1, Damage=10, Bash, Dash OR Glide
      DepthsLight, Bash, Grenade=1, Damage=10, Glide OR Dash OR Sword OR Hammer
      DepthsLight, DoubleJump, TripleJump, Dash OR Sword OR Hammer  # 4 arrows with sword, 5 arrows with hammer
    unsafe, BreakWall=1 OR DepthsLight:
      Bash, Grenade=1, Damage=10
      Bash, Grenade=1, Dash, Sword OR Hammer
      Dash, SentryJump=1
      DoubleJump, Sword

anchor DepthsShrine at 213, -4515:
  refill Full

  state LowerDepths.CombatShrineCompleted:
    moki, Regenerate, Combat=3xBat+4xEnergyRefill+2xSneezeSlug+2xTentacle+4xEnergyRefill+2xBat+2xTentacle+4xEnergyRefill+Bat+SneezeSlug:
      Damage=65
      Damage=60, DoubleJump OR Dash
      Damage=50, Launch
    unsafe: Combat=3xBat+4xEnergyRefill+2xSneezeSlug+2xTentacle+4xEnergyRefill+2xBat+2xTentacle+4xEnergyRefill+Bat+SneezeSlug

  pickup LowerDepths.CombatShrine:
    moki: LowerDepths.CombatShrineCompleted

anchor LowerDepths.Central at 482, -4536:  # Below where the trial starts
  refill Checkpoint

  pickup LowerDepths.RaceStartHC:
    moki:
      DoubleJump, Grapple, Dash OR DepthsLight
      Launch
    gorlek:
      DepthsLight, Bash, Grenade=1, DoubleJump OR Dash  # easiest from the platform right of the jump pad
      DepthsLight, SentryJump=1, DoubleJump OR Dash
      DepthsLight, DoubleJump, TripleJump  # climb the right wall. djump might be easy enough for gorlek.
    unsafe:
      DepthsLight, DoubleJump
      DepthsLight, Grapple, Sword OR Hammer OR Dash OR Glide  # grapple the light after using the jumpad to reach the platform above
  pickup LowerDepths.SpiritTrial:
    moki: LowerDepths.TrialActivation, DoubleJump, Dash, Bash, Grapple

  conn LowerDepths.East:
    moki:
      Bash, DoubleJump, Dash OR Glide
      Launch, DoubleJump OR Dash OR Bash OR Glide
    gorlek:
      Bash, DoubleJump, TripleJump OR Sword OR Hammer
      Bash, Dash, Glide OR Sword
      Launch, Damage=30
      DepthsLight, DoubleJump, Dash, Glide OR Sword
      DepthsLight, DoubleJump, TripleJump, Dash OR Sword OR Glide
    unsafe:
      DepthsLight, DoubleJump, TripleJump, Hammer
      Bash, DoubleJump OR Dash OR Glide OR Sword
      Launch
  conn UpperDepths.LowerConnection:
    moki:
      DepthsLight, Launch, Bash
      DepthsLight, Bash, DoubleJump
    gorlek:
      DepthsLight, Launch
      DepthsLight, Bash, Grenade=1, DoubleJump
      DepthsLight, Combat=WeakSlug, DoubleJump, TripleJump, Dash OR Bash OR Glide OR Sword OR Hammer OR Damage=30  # need 6 arrows
    unsafe:
      DepthsLight, Bash, Grenade=1, Dash OR Glide
      DepthsLight, Bash, Hammer OR Sword
      DepthsLight, Bash, Dash, Grapple OR Damage=30  # Dash in the spikes, you can reach the lantern from here or grapple the grappable light to reach the trial platform
      DepthsLight, Bash, Glide, Grapple OR Damage=30

# checkpoint at 478, -4517

anchor LowerDepths.East at 570, -4550:  # The lit up room on the trial path
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal
  refill Energy=3:
    moki, BreakCrystal:
      Bash, DoubleJump OR Dash OR Glide
      Launch
    gorlek, BreakCrystal:
      Bash OR SentryJump=1
      DoubleJump, TripleJump OR Dash OR Glide OR Sword
    unsafe: DoubleJump, Hammer

  state LowerDepths.TrialActivation:  # Since you have to reach this place again in a race to get an advantage, only paths possible during a trial are meaningful
    moki: DoubleJump, Bash, Grapple

  pickup LowerDepths.SpiritSurgeShard:
    moki:
      DoubleJump, Grapple, Dash OR Glide
      Launch, DoubleJump OR Dash OR Grapple OR Glide
    gorlek:
      DoubleJump, Grapple
      Launch, Sword
      DepthsLight, Grapple, Dash OR Glide OR Sword
      DepthsLight, DoubleJump, TripleJump, Dash, Glide OR Damage=30
      DepthsLight, Bash, Grenade=1, DoubleJump, TripleJump, Dash OR Glide OR Damage=30
      DepthsLight, Bash, Grenade=1, DoubleJump, Dash, Damage=30
    unsafe:
      DoubleJump, TripleJump, Dash
      Launch
  pickup LowerDepths.LupoMap:
    moki, SpiritLight=150:
      Grapple, DoubleJump OR Dash OR Glide
      Launch, DoubleJump, Dash
      Launch, Glide
      DepthsLight, Glide
      DepthsLight, Launch, DoubleJump OR Dash
    gorlek, SpiritLight=150:
      Grapple, Sword
      Launch
      DepthsLight, DoubleJump, TripleJump, Dash OR Sword OR Hammer
      DepthsLight, DoubleJump, Dash, Sword OR Hammer
      DepthsLight, Damage=30, DoubleJump OR Dash OR Grapple OR Sword OR Hammer
    unsafe, SpiritLight=150:
      DoubleJump, TripleJump  # wjump on the left wall near the 1st grappable light above the spikes
      DoubleJump, Hammer, Dash  # djump+upslash+dash to reach the left wall near the 1st grappable light above the spikes

  conn UpperDepths.SecondKSRoom:
    moki, BreakWall=20:
      DepthsLight, DoubleJump, Bash, Grapple
      DepthsLight, Launch
    gorlek, BreakWall=20:
      DepthsLight, Bash, Grapple, Dash OR Sword
      DepthsLight, Bash, Grapple, Glide, Damage=30
      DepthsLight, Bash, SwordSJump=1
      DepthsLight, Bash, HammerSJump=1, DoubleJump OR Dash
      DepthsLight, Bash, SentryJump=1, Glide, Damage=30
      DepthsLight, Bash, Grenade=1, DoubleJump OR Dash OR Sword
      DepthsLight, Bash, Grenade=1, Glide, Damage=30
      DepthsLight, Bash, DoubleJump, TripleJump
      DepthsLight, DoubleJump, TripleJump, SwordSJump=1  # sjump before the lanterns, tjump+weapon stall to reach the breakable wall. Climb the right wall with tjump to reach the jumpad
      DepthsLight, DoubleJump, TripleJump, HammerSJump=1, Dash OR Glide  # sjump before the lanterns, tjump+weapon stall to reach the breakable wall. Climb the right wall with tjump to reach the jumpad
    unsafe, BreakWall=20:
      DepthsLight, Bash, Grapple, Hammer
      DepthsLight, DoubleJump, TripleJump
      DepthsLight, Bash, SentryJump=1 OR Grenade=1
  conn LowerDepths.TreeArea:
    moki:
      BreakWall=1, DoubleJump, Bash, Grapple, Dash OR Glide
      BreakWall=1, Launch, Bash, DoubleJump, Dash
      BreakWall=1, Launch, Bash, Glide
      BreakWall=1, Launch, Grapple, DoubleJump OR Dash OR Bash OR Glide
      DepthsLight, Bash, Grapple, DoubleJump OR Dash OR Glide
      DepthsLight, Launch, Bash OR Grapple
    gorlek:
      BreakWall=1 OR DepthsLight:  # These paths go the top route, so they can use the firefly egg
        Bash, DoubleJump, TripleJump, Damage=30, Hammer
        Launch, Grapple
        Launch, DoubleJump, TripleJump OR Dash OR Glide OR Bash OR Sword OR Hammer OR Damage=30
        Launch, Dash, Glide OR Bash OR Sword OR Hammer OR Damage=30
        Launch, Glide, Bash OR Damage=30
        Launch, Damage=30, Bash OR Sword
      BreakWall=1:  # These paths also go the top route, but would be redundant with other depthslight paths
        Bash, Grapple, DoubleJump
        Bash, Grapple, Dash, Glide OR Sword
        Bash, DoubleJump, TripleJump, Dash, Glide OR Sword
        Bash, DoubleJump, TripleJump, Damage=30, Dash OR Glide OR Sword
      DepthsLight:  # These paths only work on the bottom route, so they can't use the firefly
        Bash, Grapple, Sword
        Bash, DoubleJump, TripleJump, Dash OR Glide OR Sword
        Launch, Bash
    unsafe:
      BreakWall=1, Bash, Grapple, Sword OR Hammer
      Launch, DepthsLight OR BreakWall=1
      DepthsLight, DoubleJump, TripleJump, Grapple, Sword

  conn LowerDepths.Central:
    moki:
      Bash, DoubleJump OR Launch
      DepthsLight, Launch, DoubleJump, Dash OR Glide
    gorlek:
      Bash, Dash
      Launch
      DepthsLight, DoubleJump, TripleJump, Dash, Glide, Damage=30
    unsafe:
      DepthsLight, DoubleJump, TripleJump
      Bash  # make the last lantern swing to the left

# checkpoint at 621, -4579
# checkpoint at 693, -4515

anchor LowerDepths.TreeArea at 776, -4542:  # The flash tree
  refill Checkpoint
  refill Energy=4:
    moki: BreakCrystal

  # there could be a path to activate the trial here, but these aren't used currently...

  pickup LowerDepths.FlashTree: free
  pickup LowerDepths.RightEX:
    moki: DepthsLight OR Launch
    gorlek: Bash, Grenade=1
    unsafe: SentryJump=1

  conn LowerDepths.East:
    moki:
      DepthsLight, Glide OR Launch
      DepthsLight, DoubleJump, Bash OR Grapple
      DepthsLight, Dash, Bash OR Grapple
    gorlek:
      DepthsLight, DoubleJump, TripleJump, Dash OR Sword OR Hammer OR Damage=30
      DepthsLight, DoubleJump, Dash, Sword OR Hammer OR Damage=30
      DepthsLight, DoubleJump, Damage=30, Sword OR Hammer
    unsafe:
      DepthsLight, Sword, Bash OR Grapple
      DepthsLight, Hammer, Bash OR Grapple

region PoolsApproach:
  moki: Danger=25
  gorlek: free
  kii: free
  unsafe: free

anchor PoolsApproach.MillPathCheckpoint at -826, -4130:  # The checkpoint halfway between Mill Approach and Mill Path (added mostly because the paths through here reached ridiculous complexity otherwise)
  refill Checkpoint

  conn WestGlades.MillApproach:
    moki:
      Water, Grapple, DoubleJump, Dash OR Glide
      Water, Grapple, Bash, Grenade=1, Dash, Glide
      Water, Launch, DoubleJump OR Dash OR Grapple OR Glide  # go up the left wall
    gorlek:
      Water, Grapple, DoubleJump, TripleJump OR Sword OR Damage=15
      Water, Grapple, Dash, Glide OR Sword OR Hammer OR Damage=15
      Water, Grapple, Glide, Sword OR Damage=15
      Water, Grapple, Sword, Damage=15
      Water, Bash, Grenade=1, Launch
      Water, Launch, Sword OR Damage=15
    unsafe:
      Water, Grapple, Dash OR Glide OR Sword OR DoubleJump  # grapple the plant then let you fall under it and regrapple it from bellow to have more height
      Water, Grapple, Hammer, Damage=15
      Water, Launch
      Water, DoubleJump, TripleJump, Sword  # Sword hover. Possible without an upslash too.
      Water, DoubleJump, Sword, Damage=15  # Sword jumps
      Water, DoubleJump, Hammer  # Hammer jumps
  conn PoolsApproach.MillPath:
    moki, Damage=20:  # severe enemy spam
      Bash, Grapple OR Launch  # this is probably actually closest to how you'd traverse this naturally
      Combat=Crab+2xSmallSkeeto, Grapple, DoubleJump OR Dash  # go through the gap from above, you can use Grapple to reset if you fall
      Bash, Grapple, DoubleJump OR Dash  # go through the gap from above, you can use Grapple to reset if you fall
      Launch, DoubleJump OR Grapple
    gorlek:
      Combat=Crab+2xSmallSkeeto, Grapple, Glide OR Sword OR Hammer
      Bash, Grapple, Glide OR Sword OR Hammer OR Grenade=1
      Combat=Crab+2xSmallSkeeto, SentryJump=1, DoubleJump, TripleJump
      Bash, Grenade=1, DoubleJump
    unsafe:
      Bash  # Bash the ennemies but they don't really like being on the right position for you to bash them
      DoubleJump, Hammer, Dash OR TripleJump  # Hammer jumps
      DoubleJump, TripleJump, Sword  # Reset your jumps by hitting/pogoing the ennemies

anchor PoolsApproach.MillPath at -873, -4146:  # above the water where the three paths merge
  refill Checkpoint

  pickup PoolsApproach.MillPathEX:
    moki:
      Bash, DoubleJump OR Dash
      Combat=SpinCrab+CorruptSlug, DoubleJump, Dash
      Combat=SpinCrab+CorruptSlug, DoubleJump, Grapple, Glide  # solvable either through the right grapple point or using the wrap-around taught at glades shrine
      Launch
    gorlek:
      Bash, Water OR Glide  # there's a variety of solutions for this with the enemies around
      DoubleJump, TripleJump  # gives some room to maneuver around the corrupted slug
      Combat=SpinCrab+CorruptSlug, DoubleJump, Grapple OR Glide OR Sword OR Hammer
    unsafe:
      Bash
      SwordSJump=1
      Combat=SpinCrab+CorruptSlug, DoubleJump
      Combat=SpinCrab+CorruptSlug, Glide, Dash  # Glide jump
      Dash, Sword OR Hammer OR Grapple  # Dash upslash / grapple the right plant, and spam dash to reach the wall where the slime is
  pickup PoolsApproach.MillPathEC:
    moki: Water  # again not really a reason to even use Bash

  conn PoolsApproach.MillPathCheckpoint:
    moki, Damage=20:  # severe enemy spam
      Bash, DoubleJump  # bash errything
      Combat=Crab+2xSmallSkeeto, Bash, Grenade=3, Dash OR Glide  # clear the space to bashnade
      Combat=Crab+2xSmallSkeeto, Bash, Grenade=2, Grapple, Dash OR Glide  # clear the space to bashnade
      Combat=Crab+2xSmallSkeeto, DoubleJump, Grapple, Dash OR Glide
      Launch, DoubleJump OR Dash OR Bash OR Glide
    gorlek:
      Bash, DoubleJump OR Dash OR Grapple OR Glide OR Sword OR Hammer
      Grapple, DoubleJump OR SentryJump=1
      DoubleJump, TripleJump, Combat=CorruptSlug OR SentryJump=1  # climb the wall bellow the checkpoint
      Launch
    unsafe:
      Dash, Grapple, Combat=Crab
      DoubleJump, Hammer OR Sword
      DoubleJump, Glide, Combat=CorruptSlug  # kill the first CorruptSlug then wall jump to the left wall. Climbing that wall is a bit precise. Can make it easier with a glide jump, which means killing the second CorruptSlug
      Grenade=1, Grapple, Combat=Crab, Sword OR Hammer OR Glide OR Damage=20  # Grenade jump from
  conn PoolsApproach.RightOfWheel:
    moki: Water, Combat=SpinCrab OR DoubleJump OR Bash OR Launch  # bashing to break the wall on the way is much harder than just swimming at it and letting it happen, so didn't make Bash a requirement.
    gorlek: Water

anchor PoolsApproach.RightOfWheel at -948, -4184:  # The rightmost platform of the static wheel
  refill Checkpoint:
    moki: Water  # right below in the water

  pickup PoolsApproach.AboveWheelEX:  # grenadebashes here don't work as well when the wheel spins
    moki:
      PoolsApproach.WheelFreed, DoubleJump
      Launch
    gorlek:
      DoubleJump, Hammer, Dash  # djump + upswing then dash to the wall
      DoubleJump, TripleJump
      SentryJump=1, DoubleJump
    unsafe:
      Bash, Grenade=1, DoubleJump OR SentryJump=1
      Bash, Grenade=1, Hammer, Dash
      Glide, Hammer OR DoubleJump  # Glide jumps
      DoubleJump, Sword  #  Sword jumps
      Grenade=3  #  2 gjump then cancel the second on and start a grenade float (which you al need to cancel so you can wjump)
  pickup PoolsApproach.MillPathHC:
    moki:
      Water, DoubleJump, Dash, WaterDash, Grapple
      Water, DoubleJump, Grapple, Launch
    gorlek:
      Water, WaterDash, Grapple, Damage=20, DoubleJump OR Dash  # Analog swimming can avoid the damage boost but its hard to do with keyboard swimming
      Water, Bash, DoubleJump, TripleJump, Damage=20 OR Grapple
      Water, Bash, DoubleJump, TripleJump, Dash, Glide OR Sword
      Water, Bash, DoubleJump, TripleJump, Glide, Sword
      Water, Launch, DoubleJump OR Grapple OR Glide
      Water, Launch, Dash, Sword OR Hammer OR Damage=20
      Water, Launch, Damage=20, WaterDash OR Bash
    unsafe:
      Water, DoubleJump, Bash, Grapple, Sword OR Hammer  # the air stalling to skip grapple is quite hard + need an upslash and a precise shot to get to the HC but you can't refill your upsash anywhere
      Water, DoubleJump, Bash, Damage=20, Sword OR Hammer  # the air stalling to skip grapple is quite hard + need an upslash and a precise shot to get to the HC but you can't refill your upsash anywhere
      Water, WaterDash, DoubleJump, Grapple  # the waterdash to get to the hc is really hard with keyboard swimming
      Water, DoubleJump, Hammer, Damage=20, Dash OR TripleJump  # Hammer jumps
      Water, DoubleJump, Hammer, Grapple OR Glide  # Hammer jumps
  pickup PoolsApproach.MillPathEC:
    moki: Water, Bash, Damage=10
    gorlek: Water, Bash

  conn MarshPastOpher.PoolsPathWest:
    moki, BreakWall=20:
      Water, WaterDash, DoubleJump, Grapple  # maybe not obvious?
      Water, Grapple, Launch
    gorlek, BreakWall=20:
      Water, WaterDash, Grapple, Damage=20, Dash OR Glide  # damage not mandatory
      Water, WaterDash, DoubleJump, Damage=20, TripleJump OR Dash OR Glide OR Sword
      Water, Bash, Grapple, Damage=20, Dash, Sword
      Water, Bash, Grapple, Damage=20, Glide
      Water, Bash, Grapple, DoubleJump, TripleJump OR Dash OR Sword
      Water, Bash, Grapple, DoubleJump, Hammer, Damage=20
      Water, Bash, DoubleJump, Damage=20, TripleJump, Dash OR Glide OR Sword
      Water, Bash, DoubleJump, Damage=20, Dash, Glide OR Sword
      Water, Launch, DoubleJump OR Grapple OR Glide
      Water, Launch, Dash, Sword OR Hammer OR Damage=20
      Water, Launch, Damage=20, WaterDash OR Bash
    unsafe, BreakWall=20:
      Water, WaterDash, DoubleJump, Damage=20, Glide OR Sword
      Water, Bash, DoubleJump, Damage=20, Glide OR Sword
      Water, Grapple, WaterDash, Sword OR Hammer  # Need an upslash but you can't refill it anywhere near
      Water, Grapple, Bash, Sword OR Hammer  # Need an upslash but you can't refill it anywhere near
      Water, Launch  # Launch boost on the ceiling
      Water, DoubleJump, Hammer, Damage=20, Dash OR TripleJump  # Hammer jumps
      Water, DoubleJump, Hammer, Grapple OR Glide  # Hammer jumps
  conn PoolsApproach.LeftOfWheel:
    moki:
      PoolsApproach.WheelFreed OR DoubleJump OR Grapple OR Launch
      Bash, Grenade=1
    gorlek: free
  conn EastPools.LeverRoom:
    moki:
      Glide, Launch
      Bash, Grenade=1, Launch, DoubleJump OR Dash
      DoubleJump, Dash, Launch, Damage=20
      PoolsApproach.WheelFreed, DoubleJump, Glide
    gorlek:
      Glide, DoubleJump, Hammer, Dash  # djump + upswing then dash to the wall
      Glide, DoubleJump, TripleJump
      Glide, SentryJump=1, DoubleJump OR Dash OR Damage=20
      Launch, DoubleJump, Dash OR Sword  # refresh your double jump with launch, equivalently for all paths below
      Launch, Hammer, Damage=20, DoubleJump OR Dash
      Launch, Dash, Sword
      PoolsApproach.WheelFreed, Glide, Dash
      PoolsApproach.WheelFreed, Glide, Damage=20, Sword OR Hammer  # weapon not necessary, but you can use an upswing to make the jump off the wheel easier
    unsafe:
      Launch, DoubleJump OR Dash OR Sword OR Hammer  # Use the ceiling to refresh your launch
      Launch, Bash, Grenade=1  # Bash glide
      PoolsApproach.WheelFreed, Bash, Grenade=1, Dash, Sword, Damage=20
      PoolsApproach.WheelFreed, Bash, Grenade=1, Dash, DoubleJump, TripleJump OR Sword OR Hammer
      DoubleJump, Sword  # please don't put this in a supported difficulty thank you
  conn PoolsApproach.MillPath:
    moki:
      Water, Bash, Damage=10, Grapple, DoubleJump, Dash OR Glide
      Water, Bash, WaterDash
      Water, Bash, Damage=10, Launch
    gorlek: Water, Bash  # Bash the projectile and use it to bash the crab thing to reach the connection

anchor PoolsApproach.LeftOfWheel at -995, -4184:  # The leftmost platform of the static wheel
  state PoolsApproach.WheelFreed:
    moki: Water, Bash
    unsafe: Spear=1

  pickup PoolsApproach.CurrentEX:
    moki: Water, WaterDash

  conn PoolsApproach.RightOfWheel:  # grenadebash doesn't work when the wheel spins
    moki:
      PoolsApproach.WheelFreed, Water
      DoubleJump OR Launch
    gorlek: Dash, Hammer  # the first for the moving wheel, the latter for the still one
  conn EastPools.LeverRoom:
    moki: Water, Launch
    gorlek:
      Water, WaterDash, DoubleJump, TripleJump OR Damage=20
      WaterDash, Damage=20, DoubleJump, TripleJump, Dash OR Sword OR Hammer  # touch the dirty water
      Launch, SentryJump=1, DoubleJump OR Dash  # use the weapons to float over the spikes at the end
      Launch, Damage=20, DoubleJump OR Dash OR Sword OR Hammer OR WaterDash  # touch the dirty water
    unsafe:
      Water, WaterDash, DoubleJump, Dash, Hammer  # water dash straight up, double jump, upslash, dash
      WaterDash, Water OR Damage=20  # :3
      Water, DoubleJump, TripleJump, Hammer  # Hammer jumps
  conn MarshSpawn.Main:
    moki: Water, WaterDash  # <3

region EastPools:
  moki: Danger=40, Regenerate
  gorlek: Regenerate
  kii: Regenerate
  unsafe: free

anchor EastPools.LeverRoom at -1160, -4152:  # At the amulet Moki
  refill Checkpoint
  refill Health=1

  state EastPools.EntryLever:
    moki:
      Bash, DoubleJump, Dash OR Glide
      Bash, Dash, Glide
      Launch
    gorlek:
      Combat=CorruptSlug, DoubleJump, TripleJump OR Sword OR Hammer OR Damage=20  # wait for another bubble when on the right upper wall
      Bash, DoubleJump, TripleJump OR Sword OR Hammer OR Damage=20
      DoubleJump, Damage=10, Sword OR Hammer  # tank the explosion damage from the slug
      Dash, Damage=20, Combat=CorruptSlug OR Bash
    unsafe:
      Bash  # Bash the skeeto, bash the slime twice
      SentryJump=1, DoubleJump  # wait for another bubble when on the right upper wall. Use weapon stall
  state EastPools.BelowTokkBubbleFree:
    moki: EastPools.EntryLever, Water, Bash
    gorlek: EastPools.EntryLever, Water, WaterDash
    unsafe, EastPools.EntryLever: EastPools.BelowTokkPurpleWall, Bow=1 OR Grenade=1
  state EastPools.BelowTokkPurpleWall:
    moki: Water, Bash
    unsafe: Water OR Bash  # bash the corrupted slime to blow the wall

  quest EastPools.KwolokAmuletQI: free

  pickup EastPools.TwoCrushersEX:
    moki: Water, WaterDash
    unsafe:
      Water
      WaterDash, Damage=60  # 80 is more likely
  pickup EastPools.RightOre:
    moki:
      DoubleJump, Grapple, Flap, Combat=CorruptSlug, Dash OR Glide  # Need to flap from the green spot so the bubble don't go too far to the right
      Launch, Grapple
    gorlek:
      DoubleJump, Grapple, Flap, Combat=CorruptSlug, TripleJump OR Sword OR Hammer OR Damage=20  # Need to flap from the green spot so the bubble don't go too far to the right
      Launch, Flap  # Flap makes the bubbles spawn
      Launch, Bash, Grenade=1
    unsafe:
      Bash, Grenade=1, DoubleJump, TripleJump, Damage=20
      Flap, Bash, Grenade=1, DoubleJump, Combat=CorruptSlug, TripleJump OR Sword OR Hammer  # Flap makes the bubble spawn. Use it to reach your grenade
      Dash, Grapple, Flap  # Need to flap from the green spot so the bubble don't go too far to the right
      Launch  # Turnaround Launch
  pickup EastPools.CurrentEX:
    moki: Water, WaterDash
  pickup EastPools.BelowLeverEX:
    moki:  # kinda dangerous with the spikes? but damage seemed mostly avoidable
      DoubleJump, Bash, Grenade=1
      Hammer, DoubleJump OR Dash OR Glide
      Spear=1, DoubleJump OR Dash OR Glide
      Launch
    gorlek:
      Spear=1 OR Hammer
      Bash, DoubleJump, TripleJump
    unsafe:
      DoubleJump, TripleJump, Combat=CorruptSlug  # kill the slug on the left wall, tjump from this wall into the spikes under the pickup
      SentryJump=1, DoubleJump OR Damage=20  # The tree is swinging a bit. sjump from the left (Ori should almost fall) when the tree is swinging to the left
      Bash  # Bait the skeeto, bash it when it's under the hole
  pickup EastPools.AboveDoorOre:  # some paths that aren't redundant with the paths coming from Tokk
    moki, EastPools.EntryLever:
      Bash, Grenade=2
      Bash, Grenade=1, DoubleJump OR Grapple
    gorlek, EastPools.EntryLever:
      SentryJump=2, Damage=20  # damage if you sjump into the spikes
      Bash, Grenade=1, SentryJump=1
      SentryJump=1, DoubleJump OR Grapple
    unsafe, EastPools.EntryLever:
      Hammer, Bash              # using upswing to get below slug, hit it off the ceiling and then bash it

  conn EastPools.TPArea:
    moki, EastPools.EntryLever:
      EastPools.BelowTokkBubbleFree, EastPools.BelowTokkPurpleWall, Combat=Crab, Grapple, Flap, DoubleJump OR Dash OR Glide
      EastPools.BelowTokkBubbleFree, EastPools.BelowTokkPurpleWall, Bash, Grapple, Flap, DoubleJump OR Dash OR Glide
      DoubleJump, Bash, Grenade=1  # bashgrenade above
      Grapple, Bash, Grenade=1, Dash OR Glide  # bashgrenade above
      Bash, Grenade=2, Dash OR Glide  # bashgrenade above
      Bash, Grenade=2, EastPools.BelowTokkBubbleFree, EastPools.BelowTokkPurpleWall  # bashgrenade below
      Bash, Grenade=2, Water # bashgrenade below
      Launch
    gorlek, EastPools.EntryLever:
      EastPools.BelowTokkBubbleFree, EastPools.BelowTokkPurpleWall, Flap, Combat=Crab, Grapple, Sword OR Hammer OR Damage=20
      EastPools.BelowTokkBubbleFree, EastPools.BelowTokkPurpleWall, Flap, Bash, Grapple, Sword OR Hammer OR Damage=20
      SentryJump=2, Damage=20  # weapon stall under the slug, damage is if you sjump into the spikes
      SentryJump=1, DoubleJump OR Grapple
      Grapple, Bash, Grenade=1, Sword OR Hammer OR Damage=20  # bashgrenade above
      Bash, Grenade=2, Sword OR Hammer OR Damage=20
      Bash, Grenade=3
      Bash, DoubleJump, TripleJump, Dash OR Sword OR Glide  # Possible with just bash/tjump but there is a small colider at the left that make it hard when the slug is right next to it
    unsafe, EastPools.EntryLever:
      EastPools.BelowTokkBubbleFree, EastPools.BelowTokkPurpleWall, Grapple, DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Damage=20
      Bash, DoubleJump  # Bash the slug at the left of the spike, bash it to reach tokk
      DoubleJump, TripleJump, Damage=20  # tjump in the spikes under Tokk to reset your tjump. Make sure to use your tjump before eating the spikes
      Bash, Grenade=2
  conn PoolsApproach.LeftOfWheel:  # should be fair to assume that if the wheel is spinning, the player has Water
    moki:
      Water
      Bash, Grenade=1, Glide
      Glide, Launch
      DoubleJump, Dash, Launch
      Bash, Grenade=1, Launch, DoubleJump OR Dash
    gorlek:  # Try with the spinning wheel if there is a damage boost that seems unnecessary
      DoubleJump, Damage=20, TripleJump OR Dash OR Sword
      DoubleJump, TripleJump, Dash, Sword
      Bash, Grenade=1, Launch
      Bash, Grenade=1, Damage=20, Dash OR DoubleJump
      Bash, Grenade=1, Dash, DoubleJump
      Glide, DoubleJump OR Dash OR SentryJump=1 OR Damage=20
      WaterDash, Damage=20, DoubleJump OR Dash OR Glide
      Launch, DoubleJump OR Dash OR Damage=20
      SentryJump=1, Damage=20, Dash, DoubleJump
      SentryJump=1, Launch  # Use weapon to stall before and after the launch
    unsafe:
      Launch, Hammer, Sword  # climb the left wall

# checkpoint at -1278, -4158

anchor EastPools.TPArea at -1297, -4143:  # Where Tokk stands
  refill Checkpoint
  refill Full:  # use the teleporter
    moki: EastPools.LowerWaterDrained

  state EastPools.BelowTokkBubbleFree:
    moki: Water, Bash
    gorlek: Water, WaterDash
    unsafe: EastPools.BelowTokkPurpleWall, Bow=1 OR Grenade=1
  state EastPools.BelowTokkPurpleWall:
    moki: Water, Bash
    unsafe: Water OR Bash  # bash the corrupted slime to blow the wall
  state EastPools.LowerWaterDrained:
    moki: Water, WaterBreath
    gorlek: Water
    unsafe:
      DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Damage=20  # puzzle skip. Need the different skills because even if you have to die and can survive the 20 damage at the start since you spawn with 30 health, thiese spieks deals 40 damage in hard
      Bash, Grenade=1  # puzzle skip.
  
  pickup EastPools.AboveDoorOre:
    moki:
      EastPools.BelowTokkBubbleFree, EastPools.BelowTokkPurpleWall, Grapple, Flap, DoubleJump OR Dash
      Bash, Grenade=1, DoubleJump OR Dash OR Glide OR Grapple
      Bash, Grenade=2
      Launch
    gorlek:
      EastPools.BelowTokkBubbleFree, EastPools.BelowTokkPurpleWall, Grapple, Flap
      Bash, Grenade=1, Sword OR Hammer OR Damage=20
      SentryJump=1  # Weapon stall above the spikes
    unsafe:
      DoubleJump, Bash  # Bash the slug when its at the right of the ceiling
      Sword, Bash       # Hit slug with sword to hit it off the ceiling and then bash it
  pickup EastPools.LupoOre:
    moki: Water
  pickup EastPools.LupoEX:
    gorlek: Water, ShurikenBreak=20
  pickup EastPools.LupoMap:
    gorlek: SpiritLight=150, Water, ShurikenBreak=20

  # this Tokk disappears after Kwolok's death
  conn EastPools.Teleporter:
    moki: EastPools.LowerWaterDrained
  conn EastPools.FishingPool:
    moki:
      Grapple, DoubleJump OR Dash
      DoubleJump, Bash, Grenade=1
      Launch
    gorlek:
      Grapple, Glide OR Sword OR Hammer
      SentryJump=1, DoubleJump
      Bash, Grenade=1, Dash OR Sword OR Hammer
      DoubleJump, TripleJump, Dash  # climb the left wall, dash then tjump to reach the wall above the grapple plant
    unsafe:
      Bash, Grenade=1
      Grapple, Damage=40
  conn EastPools.WaterdashArena:
    moki, EastPools.ArenaWall:
      Water
      EastPools.LowerWaterDrained, DoubleJump OR Dash OR Glide OR Launch
    gorlek, EastPools.ArenaWall:
      EastPools.LowerWaterDrained, Sword OR Damage=20
    unsafe, EastPools.ArenaWall: EastPools.LowerWaterDrained  # jump on the bubble to avoid a dboost in dirty water
  conn EastPools.LeverRoom:
    moki, EastPools.EntryLever:
      Combat=Crab, DoubleJump OR Dash OR Glide  # go above
      Bash, DoubleJump OR Dash OR Glide  # go above
      Bash, Grenade=1  # go above
      Launch  # go above
      Hammer, Glide  # this doesn't solve through combat, but you can break the bubble free to get over the crab
      Spear=1, DoubleJump OR Dash OR Glide  # break the bubble free to get over the crab
      Grapple, Combat=Crab OR Bash  # go below
    gorlek, EastPools.EntryLever:
      SwordSJump=1
      Sword, Combat=Crab OR Bash OR Spear=1  # with spear you can break the bubble free to get over the crab
      Hammer  # float over the spikes, break the bubble free to get over the crab
      Damage=10, DoubleJump OR Dash OR Glide OR Sword  # get hit by the crab
      Damage=20, Combat=Crab OR Bash OR Spear=1
      Grapple, Damage=10  # go below, get hit by the crab

anchor EastPools.Teleporter at -1316, -4153:  # At the teleporter after draining the water
  refill Full

  state EastPools.LowerWaterDrained: free  # the randomizer drains the water if you aquire the teleporter, and for non-teleporter connections this anchor is strictly locked behind already having the state
  state NonGladesTeleporter: free
  state EastPools.ArenaWall:
    moki: EastPools.LowerWaterDrained, Water, Bash
    unsafe: EastPools.LowerWaterDrained, Water, Launch OR Dash OR Damage=20
  state EastPools.LupoPurpleFloor:
    unsafe, EastPools.LowerWaterDrained: Water, Bash, Dash, ShurikenBreak=20
  
  pickup EastPools.UltraBashShard:
    moki, EastPools.LowerWaterDrained: Water, WaterBreath, Bash
    gorlek, EastPools.LowerWaterDrained: Water, Bash
    unsafe, EastPools.LowerWaterDrained: Water  # move a bit on the side when the torpedo is getting close to the wall
  
  conn Teleporters: free
  conn EastPools.TPArea: free

anchor EastPools.FishingPool at -1278, -4124:  # At the fisher moki
  quest EastPools.HandToHandSpyglass:
    moki: LowerDepths.HandToHandSilk

  conn EastPools.AboveFishingPool:
    moki:
      Water, WaterDash, DoubleJump, Dash, Combat=CorruptSlug OR Bash
      Water, WaterDash, DoubleJump, Glide, Combat=CorruptSlug OR Bash
      Bash, Grenade=1, DoubleJump
      Launch
    gorlek:
      WaterDash, DoubleJump, Water OR Damage=20
      WaterDash, Dash, Sword, Water OR Damage=20  # upslash makes it easier to reach the wall above the water
      Bash, Grenade=1, Dash
      SentryJump=1, DoubleJump OR Dash
    unsafe:
      DoubleJump, TripleJump  # ceiling jump on the wall above the fishing pond
  conn EastPools.TPArea: free

anchor EastPools.AboveFishingPool at -1300, -4102:  # Above the fishing Moki
  pickup EastPools.AboveTpEX:  # this needs water to not softlock when the player drains the upper water
    moki: Water
  pickup EastPools.PurpleWallHC:  # paths using the slime to break the purple wall
    unsafe:
      Bash, Launch OR SentryJump=1 OR Grenade=1
      Bash, DoubleJump, TripleJump, Damage=20, Sword OR Hammer  # dboost to climb the left wall

  conn EastPools.FishingPool: free
  conn UpperPools.DrainPuzzleExit:
    moki, UpperPools.UpperWaterDrained:
      Launch
      Bash, Grenade=1, DoubleJump
    gorlek, UpperPools.UpperWaterDrained:
      Bash, Grenade=2
      SentryJump=1, DoubleJump
    unsafe, UpperPools.UpperWaterDrained:
      WaterDash, DoubleJump, TripleJump, Water, Dash OR Sword OR Hammer
      DoubleJump, TripleJump, Damage=20  # climb the left wall
      Bash, DoubleJump  # Bash the slime
      Bash, Grenade=1, WaterDash, Water OR Damage=20

anchor EastPools.WaterdashArena at -1348, -4139:  # Checkpoint at the right of the pools arena
  refill Checkpoint
  
  # There are two Arenas here: you get one if you enter without WaterDash and another if you enter with it.
  # This path is assuming the worse case of getting the strictly harder WaterDash arena, but doesn't list WaterDash explicitly because you don't need it unless you have it.
  # And any other way would lock basically all of Pools behind WaterDash. So it makes sense, right?
  state EastPools.FightArenas:
    moki: Regenerate, Damage=20, Water, WaterBreath, Combat=4xCrab+Tentacle+2xSkeeto, Bash
    gorlek: Regenerate, Damage=20, Water, Combat=4xCrab+Tentacle+2xSkeeto, Bash
    unsafe: Water, Combat=4xCrab+Tentacle+2xSkeeto, Launch OR Dash OR Damage=20  # Land on the left then jump under the purple wall to correct the torpedo angle. launch in order to avoid the blast damage
  
  pickup EastPools.FightRoomHC:  # The HC only gets unlocked if you finish the alternate WaterDash arena; FightArenas doesn't have WaterDash as requirement included for reasons explained above, so it's needed here
    moki, EastPools.FightArenas, WaterDash:
      DoubleJump, Dash OR Grapple
      Bash, Grenade=1
      Launch
    gorlek, EastPools.FightArenas, WaterDash: Water OR Damage=20  # WaterDash on the bubble
  
  conn EastPools.TPArea:
    moki, EastPools.ArenaWall:
      Water
      EastPools.LowerWaterDrained, DoubleJump OR Dash OR Launch OR Glide
    gorlek, EastPools.ArenaWall: EastPools.LowerWaterDrained, Sword OR Hammer OR Damage=20
  conn EastPools.MissilePuzzle:
    moki, EastPools.FightArenas: Water OR DoubleJump OR Dash OR Glide OR Launch 
    gorlek, EastPools.FightArenas: Sword OR Hammer OR Damage=20
    unsafe: EastPools.FightArenas OR Water  # Water to avoid the fighting room altogether. Can QTM if the door is here.

anchor EastPools.MissilePuzzle at -1425, -4144:  # Below where the trial starts
  refill Checkpoint

  state EastPools.CentralRoomPurpleWall:
    moki: Water, WaterBreath, Bash
    gorlek: Water, Bash
    unsafe: Water
  state EastPools.LupoPurpleFloor:
    moki: Water, WaterBreath, Bash
    gorlek: Water, Bash
    unsafe: Water

  pickup EastPools.EnergyHarvestShard:
    moki:
      Water, WaterDash, DoubleJump
      Bash, Grenade=1
      Launch
    gorlek:
      Damage=20, WaterDash, DoubleJump
      Water, Bash, DoubleJump OR WaterDash  # Use the torpedo
      SentryJump=1
    unsafe:
      DoubleJump, TripleJump, Sword OR Hammer  # tjump + upslash from the left wall
      Water, Bash  # Bash the torpedo out of the water (near the floor so you don't get too much speed), go out of the water and bash it again
  pickup EastPools.LupoEX:
    moki: EastPools.LupoPurpleFloor, Water
  pickup EastPools.LupoMap:
    moki: SpiritLight=150, EastPools.LupoPurpleFloor, Water
    gorlek: SpiritLight=150, EastPools.LupoPurpleFloor, Water
  pickup EastPools.BehindCrusherEX:
    moki: Water, WaterBreath
    gorlek: Water
  pickup EastPools.SpiritTrial:
    moki: UpperPools.TrialActivation, EastPools.CentralRoomPurpleWall, Water, DoubleJump, Dash, Glide, Grapple, WaterDash

  conn EastPools.CentralRoom:
    moki: EastPools.CentralRoomPurpleWall, Water
  conn EastPools.WaterdashArena:
    moki: EastPools.FightArenas, Water OR DoubleJump OR Dash OR Glide OR Launch
    gorlek: EastPools.FightArenas
  conn EastPools.TPArea:
    moki: EastPools.LupoPurpleFloor, Water, BreakWall=20

anchor EastPools.CentralRoom at -1485, -4148:  # The room where you meet Kwolok when he's still fine
  refill Checkpoint

  state EastPools.CentralRoomPurpleWall:
    unsafe: Water

  quest EastPools.GrassSeed:
    moki:
      Water, WaterDash
      Water, Bash, DoubleJump OR Dash OR Glide
      Bash, Grenade=1, DoubleJump OR Dash OR Glide
      Launch
    gorlek:
      WaterDash, Damage=20
      Water, Bash  # Use the tentacle's projectile
      Bash, Grenade=1, Sword OR Hammer
      Bash, DoubleJump, Glide OR Sword
      Bash, Dash, Glide OR Sword
      DoubleJump, TripleJump, Glide
    unsafe:
      Bash, DoubleJump, TripleJump OR Hammer

  conn UpperPools.KeystoneRoomEntrance:
    moki:
      Water, Bash, DoubleJump, Dash OR Glide
      Water, Bash, Launch
    gorlek:
      DoubleJump, TripleJump, Dash, Glide, WaterDash  # wdash to free the bubbles
      Water, DoubleJump, TripleJump, Bash OR WaterDash
      Water, Bash, Grenade=1, DoubleJump
      Water, WaterDash, Launch  # activate the bubbles with waterdash. Launch on a bubble to reach the top
      Water, WaterDash, SentryJump=1, DoubleJump, TripleJump OR Dash OR Glide  # sjump from EastPools.GrassSeed
      Launch, DoubleJump OR Dash OR Glide
    # unsafe note: you can use sword deflector to free the bubble without bash or wdash
  conn WestPools:
    moki: Water, WaterBreath, WaterDash, DoubleJump OR Dash OR Glide OR Launch
    gorlek: Water, WaterDash, DoubleJump OR Dash OR Glide OR Launch OR Sword OR Hammer OR Damage=20
    unsafe:
      Water, WaterBreath, Launch
      Water, WaterBreath, DoubleJump, Grenade OR Hammer  # greande/hammer jumps. With grenade jumps, start a grenade jump while in the water then use your doublejump
      Water, WaterBreath, DoubleJump, TripleJump, Damage=20
      Water, WaterBreath, DoubleJump, Sword, Damage=20  # sword jump in the left munchers, walljump then sword jump+ uplash on the right wall
  conn EastPools.MissilePuzzle:
    moki: EastPools.CentralRoomPurpleWall, Water

region UpperPools:
  moki: Danger=40, Regenerate
  gorlek: Regenerate
  kii: Regenerate
  unsafe: free

# checkpoint at -1425, -4144

anchor UpperPools.KeystoneRoomEntrance at -1535, -4115:  # At the bottom entrance to the keystone room
  refill Checkpoint

  quest EastPools.GrassSeed:
    moki:
      Combat=SpinCrab OR Bash OR Launch
      DoubleJump, Dash
    gorlek: Dash OR Glide OR Damage=10
    unsafe: free

  pickup UpperPools.LowerKS:
    moki:
      Water, DoubleJump, Bash
      Water, WaterDash OR Launch
    gorlek: Water, Bash, Hammer
    unsafe: Water, Bash  # just need proper timing

  conn EastPools.CentralRoom:
    moki:
      Combat=SpinCrab OR Bash OR Launch
      DoubleJump, Dash
    gorlek: Dash OR Glide OR Damage=10
    unsafe: free
  conn UpperPools.KeystoneRoomBubbleSpawner:
    moki:
      Water OR Launch
      DoubleJump, Glide
    gorlek:
      Damage=20
      DoubleJump, TripleJump OR Dash OR Sword
      Dash, Glide OR Sword
      Bash, DoubleJump OR Dash OR Glide  # bashes interfere with weapons weirdly; it can easily happen in this scenario

anchor UpperPools.KeystoneRoomBubbleSpawner at -1566, -4115:  # Between the bubble spawner and the bounce pad
  refill Checkpoint

  state UpperPools.KeystoneRoomBubbleFree:
    moki: Water, WaterDash OR Bash
    unsafe: Grenade=1 OR Spear=1 OR Shuriken=1 OR Bow=1

  pickup UpperPools.UpperLeftKS:  # connections using the bubble have to start from here, others use the higher anchor
    moki: UpperPools.KeystoneRoomBubbleFree, Flap, DoubleJump
    gorlek: UpperPools.KeystoneRoomBubbleFree, Flap, Dash OR Glide
    unsafe: UpperPools.KeystoneRoomBubbleFree, Damage=20  # pretty cute

  conn UpperPools.KeystoneRoom:
    moki:
      DoubleJump OR Launch
      Bash, Grenade=1, Dash
    gorlek:
      Dash OR Glide
      Water, WaterDash, Bash  # use the missile
    unsafe:
      Water, Bash
      UpperPools.KeystoneRoomBubbleFree, WaterDash, Flap, Water OR Damage=20
  conn UpperPools.BubbleSpamRoom:  # connections using the bubble have to start from here, others use the higher anchor
    moki: UpperPools.KeystoneRoomBubbleFree, Flap, DoubleJump, Dash, Grapple  # seems to be the intended strat
    gorlek, UpperPools.KeystoneRoomBubbleFree:
      Flap, Grapple, DoubleJump OR Dash
      Flap, SentryJump=2  # guide the bubble to the anchor then sjump on it
      Flap, DoubleJump, TripleJump, Dash OR Glide OR Sword  # guide the bubble to the anchor then tjump on it. wjump from the left wall to reach to right wall
    unsafe: UpperPools.KeystoneRoomBubbleFree, Dash  # I'm so sorry
  conn UpperPools.KeystoneRoomEntrance:
    moki:  # with at least Double Jump it's easier to go over the top
      Water
      Dash, Glide
    gorlek:  # almost always easier to go over the top
      Damage=20, Bash OR Sword OR Hammer  # the enemy likes to get in the way

anchor UpperPools.KeystoneRoom at -1540, -4095:  # Autosave below the two upper left keystones
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  pickup UpperPools.UpperLeftKS:
    moki:
      Bash, Grenade=1
      Launch
    gorlek:
      SentryJump=1
      DoubleJump, TripleJump, Hammer  # Can either reach the left or right wall; for the right wall you can even do it starting from a grounded upswing
      WaterDash, DoubleJump, TripleJump, Water OR Damage=20
  pickup UpperPools.UpperMidKS:  # the majority of paths will go through connections around the top
    gorlek:
      DoubleJump, WaterDash, Water OR Damage=20  # wdash to reach the right wall
      Bash, Grenade=1, DoubleJump
      Bash, Grenade=1, Dash, Damage=20
    unsafe:
      Water, WaterDash, Hammer, Damage=20  # wdash+upslash to reach the left wall, wjump in the spikes and upslash to get the key
  pickup UpperPools.UpperRightKS:
    moki:
      Bash, Grenade=1, Water OR DoubleJump OR Dash OR Glide
      Grapple, DoubleJump OR Dash OR Glide
      Water, WaterDash, DoubleJump
      Launch
    gorlek:
      SentryJump=1
      Bash, Grenade=1, Sword OR Damage=20  # sword/damage boost to reach the platform below he pickup
      WaterDash, Water OR Damage=20
      Grapple, Sword
      Grapple, Hammer, Water OR Damage=20
      DoubleJump, TripleJump OR Sword OR Hammer OR Bash  # Bash the crab enemy
    unsafe:
      Grapple, Water OR Damage=20  # grapple the plant to make it swing. When the plant is swinging at the left, grapple it with a good angle to grab the keystone

  conn UpperPools.KeystoneRoomEntrance: free
  conn UpperPools.KeystoneRoomBubbleSpawner: free
  conn UpperPools.BeforeKeystoneDoor:
    moki:
      Grapple, DoubleJump OR Dash OR Glide
      Water, Grapple, Bash, Grenade=1
      Bash, Grenade=1, Water, WaterDash
      Bash, Grenade=2, Water OR DoubleJump OR Dash OR Glide
      Bash, Grenade=3
      Launch
    gorlek:
      Grapple, Damage=20 OR Sword OR Water
      Grapple, Bash, Grenade=1
      DoubleJump, TripleJump, Dash  # wjump from UpperRightKS
      Bash, DoubleJump  # bash the crab enemy
      Bash, Grenade=1, WaterDash, Damage=20
      Bash, Grenade=2, Sword OR Damage=20
      SentryJump=1, Combat=Crab+SpinCrab, WaterDash, Water OR Damage=20
      SentryJump=1, Bash, WaterDash, Water OR Damage=20
      SwordSJump=2, Bash OR Damage=10
      HammerSJump=2, Bash, Water OR Dash OR Glide OR Damage=20

anchor UpperPools.BeforeKeystoneDoor at -1506, -4068:  # In front of the door blocking waterdash tree
  refill Checkpoint
  refill Health=1:
    moki: DoubleJump OR Dash OR Glide OR Grapple OR Launch
    gorlek: free

  state UpperPools.KeystoneDoor:
    moki: Keystone=4
  state UpperPools.TrialActivation:  # Since you have to reach this place again in a race to get an advantage, only paths possible during a trial are meaningful
    moki: Grapple
    gorlek: DoubleJump

  pickup UpperPools.UpperMidKS:
    moki: DoubleJump OR Dash OR Glide
    gorlek: Sword OR Hammer OR Damage=20
    unsafe: free
  pickup UpperPools.UpperLeftKS:
    gorlek: DoubleJump, TripleJump

  conn UpperPools.TreeRoomEntrance:
    moki: UpperPools.KeystoneDoor
  conn UpperPools.KeystoneRoom: free
  conn UpperPools.BubbleSpamRoom:
    moki:
      DoubleJump, Bash, Grenade=1
      Launch
    gorlek:
      SwordSJump=1
      HammerSJump=1, DoubleJump OR Dash OR Glide OR Bash OR Damage=20
      Bash, Grenade=1, Dash OR Glide OR Sword
      Bash, Grenade=1, Hammer, Damage=20
      DoubleJump, TripleJump, Dash OR Damage=20  # you can come from the trial start and complete this path with just triple jump, the extra abilities allow alternatives to make it more likely that the player finds this path
    unsafe:
      DoubleJump, TripleJump  # come from the trial start
      Bash, Grenade=1  # Bash grenade to reach the slime, bash glide from it

anchor UpperPools.TreeRoomEntrance at -1467, -4075:  # The ledge to the left of Waterdash tree
  refill Checkpoint

  state UpperPools.KeystoneDoor:
    moki: Keystone=4
  state UpperPools.TreeRoomLeftBubbleFree:
    unsafe: Bow=1 OR Grenade=1 OR Spear=1

  conn UpperPools.BeforeKeystoneDoor:
    moki: UpperPools.KeystoneDoor
  conn UpperPools.TreeRoom:
    moki: Water OR DoubleJump OR Dash OR Glide
    gorlek: free

anchor UpperPools.TreeRoom at -1429, -4081:  # At Waterdash tree
  state UpperPools.TreeRoomLeftBubbleFree:
    moki: Water, WaterDash
    unsafe: Bow=1 OR Grenade=1 OR Spear=1
  state UpperPools.ButtonDoorAboveTree:
    moki: Water, WaterDash

  pickup UpperPools.SwimDashTree: free
  pickup UpperPools.CurrentEX:
    moki: Water, WaterDash
  pickup UpperPools.RoofEX:  # only for paths using the bubble all the way
    unsafe: UpperPools.TreeRoomLeftBubbleFree, Dash

  conn UpperPools.AboveTree:
    moki, UpperPools.TreeRoomLeftBubbleFree:
      Flap, DoubleJump
      Launch
    gorlek:
      UpperPools.TreeRoomLeftBubbleFree:
        Flap, Dash
        Flap, Glide, Damage=20
        DoubleJump, TripleJump, Dash, Damage=20  # free the bubble, jump on it and tjump to the wall above the tree
      Bash, Grenade=1, DoubleJump, TripleJump, Dash, Damage=20  # bash grenade to reach the wall above the tree
      SentryJump=1, DoubleJump, TripleJump, Dash, Damage=20  # same path as above, replace bash grenade by sentry jump
      Launch  # use the small bubbles for a launch reset or use the wall above the trees
    unsafe: UpperPools.TreeRoomLeftBubbleFree, Dash, DoubleJump OR Damage=20  # Dash on the bubble
  conn UpperPools.TreeRoomEntrance:
    moki:
      Launch
      Water, WaterDash
      Bash, Grenade=1, DoubleJump OR Dash OR Glide
    gorlek:
      SwordSJump=1  # Weapon hover as well
      HammerSJump=1, DoubleJump OR Dash OR Glide
      Bash, Grenade=1
      UpperPools.TreeRoomLeftBubbleFree
  conn UpperPools.DrainPuzzleEntrance:
    moki, UpperPools.ButtonDoorAboveTree:
      Water, WaterDash, DoubleJump
      Launch
    gorlek: UpperPools.ButtonDoorAboveTree, Water, WaterDash, Sword OR Hammer
    unsafe, UpperPools.ButtonDoorAboveTree:
      Bow=1 OR Grenade=1 OR Spear=1  # free the bubbles, let one bubble go out of the water, jump on the next one and use it to land on the first bubble
      HammerSJump=1

anchor UpperPools.AboveTree at -1450, -4053:  # Paths to simplify the xp pickup above swimdash tree
  pickup UpperPools.RoofEX:
    moki:
      Water, WaterDash
      Bash, Grenade=1
    gorlek:
      Damage=20, WaterDash
      SentryJump=1

  conn UpperPools.TreeRoom: free
  conn UpperPools.TreeRoomEntrance:
    moki: DoubleJump OR Dash OR Glide
    gorlek: Sword OR Hammer

anchor UpperPools.DrainPuzzleEntrance at -1313, -4083:  # At the right of the door opened by the water dash button in the tree room
  refill Checkpoint

  # Be careful because solving that puzzle room is a huuuge negative that has to be taken into account
  state UpperPools.UpperWaterDrained:
    moki:
      Water, WaterDash, Grapple, DoubleJump OR Dash
      Water, WaterDash, Launch, DoubleJump, Dash OR Glide
      Water, Launch, Grapple
    gorlek:
      Water, WaterDash, Grapple, Glide OR Sword OR Hammer
      Water, Grapple, DoubleJump, TripleJump
      Water, Launch, Damage=20, DoubleJump OR Dash OR Glide
      Water, Launch, Bash OR Damage=14  # Break the purple wall, do the right side then the left side
      Water, WaterDash, Launch, DoubleJump OR Dash OR Sword OR Damage=20
    unsafe:
      Water, DoubleJump, Sword, Damage=20
      Water, DoubleJump, Dash, Grapple
      Water, Launch  # Break the purple wall, do the right side then the left side

  pickup UpperPools.WaterfallEC:  # have to solve with and without the water drained so it doesn't softlock
    moki:
      DoubleJump, Dash, Grapple
      Bash, Grenade=1, Grapple, Glide
      Launch
    gorlek:
      DoubleJump, Grapple, TripleJump OR Glide OR Sword OR Hammer
      Bash, Grenade=1, DoubleJump
      Bash, Grenade=1, Grapple, Dash OR Sword
      SentryJump=1, Grapple, Dash OR Glide
      SwordSJump=1, Grapple
    unsafe:
      SentryJump=1, Grapple

  conn UpperPools.TreeRoom:
    moki: UpperPools.ButtonDoorAboveTree
  conn UpperPools.DrainPuzzleExit:
    moki, UpperPools.UpperWaterDrained:
      DoubleJump, Dash, Grapple
      Bash, Grenade=1, Grapple, DoubleJump OR Dash OR Glide
      Launch, DoubleJump OR Dash OR Glide OR Grapple
      UpperPools.DrainRoomPurpleWall:
        DoubleJump, Dash OR Glide
        Dash, Glide
        Water, Bash, Grenade=1  # Fall at the puddle at the end of the waterfall
        Launch
    gorlek, UpperPools.UpperWaterDrained:
      DoubleJump, Grapple, TripleJump OR Glide OR Sword OR Hammer
      Bash, Grenade=1, Grapple, Water OR Sword OR Hammer OR Damage=20
      Bash, Grenade=1, DoubleJump, Damage=20, TripleJump OR Dash OR Glide OR Sword OR Hammer
      SentryJump=1, Grapple
      SentryJump=1, DoubleJump, TripleJump, Dash, Glide, Damage=20
      Launch
      UpperPools.DrainRoomPurpleWall, DoubleJump OR Dash OR Glide OR Sword OR HammerSJump=1
    unsafe, UpperPools.UpperWaterDrained:
      UpperPools.DrainRoomPurpleWall, Hammer

anchor UpperPools.DrainPuzzleExit at -1318, -4081:  # After solving the Drain Puzzle, on the ledge before dropping down
  refill Checkpoint

  # This is inside a rock, but you can just kinda walk out of it so it's not a problem
  # Keep in mind that for all paths involving the puzzle room you have to consider both states of the water being drained or not

  state UpperPools.DrainRoomPurpleWall:
    moki: Bash, Water, WaterDash OR Launch
    gorlek:
      Water, Bash
      UpperPools.UpperWaterDrained, Bash, Launch, Damage=20

  pickup EastPools.PurpleWallHC:
    moki, UpperPools.UpperWaterDrained:
      Water, Bash, Glide OR Launch
      Water, Bash, DoubleJump, Dash
    gorlek, UpperPools.UpperWaterDrained:
      Water, Bash, Dash OR Sword OR Grenade=1
      Water, Bash, DoubleJump, Hammer
    unsafe, UpperPools.UpperWaterDrained:  # You can manipulate the torpedo enemy in a way that it hits the purple wall without needing any skills
      Water, DoubleJump OR Dash OR Glide OR Bash OR Launch OR Sword OR Hammer OR Shuriken=2
      Damage=20, DoubleJump OR Dash OR Glide OR Launch OR Sword OR Hammer OR Shuriken=2
      Damage=40, Bash

  conn EastPools.AboveFishingPool: free
  conn UpperPools.DrainPuzzleEntrance:
    moki:
      UpperPools.UpperWaterDrained OR Water:  # These paths have to cross Water unless you drained it already
        Launch, DoubleJump, Dash OR Glide
        Launch, Dash, Glide
      Water, Launch, Grapple
      UpperPools.DrainRoomPurpleWall:
        Water, Launch
        Water, WaterDash, DoubleJump, Dash
    gorlek:
      UpperPools.UpperWaterDrained OR Water:  # These paths have to cross Water unless you drained it already
        Launch, Glide OR Damage=20
        Launch, DoubleJump, Sword OR Hammer
        Launch, Dash, Sword OR Hammer
        UpperPools.DrainRoomPurpleWall:
          Bash, Grenade=1, DoubleJump, TripleJump OR Dash OR Glide OR Sword OR Damage=20
          Bash, Grenade=1, Dash, Glide OR Sword OR Damage=20
          Bash, Grenade=1, Hammer, Damage=20, DoubleJump OR Dash
          Launch
      UpperPools.UpperWaterDrained:  # For these paths the Water variants would be redundant
        Launch, Grapple
        Bash, Grenade=1, DoubleJump, Glide OR Damage=20
        Bash, Grenade=1, DoubleJump, Dash, Sword OR Hammer
      UpperPools.DrainRoomPurpleWall:
        Water, Bash, DoubleJump, Dash OR TripleJump OR Glide OR Sword
        Water, Bash, DoubleJump, Hammer, Damage=20

anchor UpperPools.BubbleSpamRoom at -1586, -4053:  # To the right of where all the bubbles rise
  refill Checkpoint

  pickup UpperPools.FishPoolEX:
    moki: Water, Bash OR WaterDash OR Damage=10  # just in case someone's troubled by the fish
    gorlek: Water
  pickup UpperPools.FishPoolOre:
    moki:
      DoubleJump, Bash, Dash OR Glide
      Bash, Grenade=1
      Launch
    gorlek:
      SentryJump=1
      DoubleJump, Bash, TripleJump OR Sword
    unsafe:
      Bash  # Juggle the exploding enemyq
  pickup UpperPools.LeftBubblesEX:  # beautiful autosave placement right there
    moki: Water
  pickup UpperPools.RightBubblesEX:
    moki:
      Water, WaterBreath, Bash, DoubleJump OR Launch
      Water, WaterDash
    gorlek:
      Water, Bash, Grenade=1 OR DoubleJump OR Launch
    unsafe:  # The torpedo won't hit you if you are touching the breakable wall
      Water, Grenade=1
      Water, DoubleJump, TripleJump, Sword OR Hammer
      Water, SwordSJump=1  # sword combo before hitting the spikes
      Water, Launch, Damage=20
  pickup UpperPools.BubblesEC:
    moki:
      Combat=Bee+Skeeto, DoubleJump, Dash OR Glide
      Bash, DoubleJump, Dash OR Glide
      Launch, DoubleJump OR Dash OR Glide
    gorlek:
      Combat=Bee+Skeeto, DoubleJump, TripleJump OR Sword OR Hammer OR Damage=20
      Bash, DoubleJump, TripleJump OR Sword OR Hammer OR Damage=20
      Bash, Dash OR Glide OR Sword  # Bash the mosquitos
      Bash, Hammer, Damage=20
      Launch

  conn UpperPools.BeforeKeystoneDoor: free

# checkpoint at -1386, -4062

region WestPools:
  moki: Danger=40, Regenerate
  gorlek: Regenerate
  kii: Regenerate
  unsafe: free

anchor WestPools at -1656, -4171:  # the west Pools TP
  refill Full
  
  state NonGladesTeleporter: free

  pickup WestPools.TpEX:
    moki:
      Water, WaterDash, DoubleJump, Dash  # hard on keyboard, but I guess this is intended, and no other ability would even help
      Launch
    gorlek:
      Water, WaterDash, DoubleJump, TripleJump
      Damage=20, WaterDash, DoubleJump, Dash OR TripleJump
    unsafe:
      Bash, Grenade=1  # Stand on the left of the TP, launch the grenade with a curve so it won't touch the ceiling and bash it when it falls down
      WaterDash, Dash, Hammer, Water OR Damage=20  # Already hard with analog swimming but it's a nightmare on keyboard
      DoubleJump, TripleJump OR Dash OR Sword OR Hammer  # wall jump from the right wall. With weapons, climb the right wall then djump+ upslash. TripleJump might be Gorlek
  pickup WestPools.BurrowEX:
    moki: Water, Burrow
  pickup WestPools.BurrowOre:  # intended path omitted in moki
    gorlek: WestPools.ForestsStrength, Water, WaterDash, Burrow
    unsafe: WestPools.ForestsStrength, Water, Burrow
  pickup WestPools.EscapeRevisitEX:
    moki, WestPools.ForestsStrength:
      Water, WaterBreath, DoubleJump, Bash
      Water, WaterBreath, WaterDash, Combat=Crab+SpinCrab OR Bash
      Water, WaterBreath, Launch, Bash OR WaterDash
    gorlek, WestPools.ForestsStrength:
      Water, WaterDash, Combat=Crab+SpinCrab OR DoubleJump OR Damage=10
      Water, Bash OR Launch

  conn Teleporters: free
  conn KwolokEscape:
    moki: Water, WaterBreath, DoubleJump OR Dash OR Launch
    gorlek: Water
  conn EastPools.CentralRoom:
    moki: Water, WaterBreath, WaterDash
    gorlek: Water, WaterDash
    unsafe: Water, WaterBreath
  conn UpperPools.KeystoneRoomEntrance:
    moki: WestPools.ForestsStrength, Water, WaterBreath, WaterDash
    gorlek: WestPools.ForestsStrength, Water, WaterDash

anchor KwolokEscape at -1650, -4125:
  nospawn
  refill Full

  conn KwolokFight:  # Abilities needed for the escape part
    moki:
      Water, WaterDash, Bash, DoubleJump, Dash OR Launch
      Water, WaterDash, Dash, Launch
    gorlek:
      Water, WaterDash, Dash, Bash
      Water, WaterDash, Launch
      Water, Launch, Dash, Bash
    kii:
      Launch, Water
      Launch, Bash, Damage=180  # Bash the fish at the end of the escape. You don't need to abuse bash iframes
      Launch, WaterDash, Damage=100
      Dash, WaterDash, Water OR Damage=120  # water dash to reach the wall at the start
    unsafe:
      Launch, Damage=160
      Dash, DoubleJump, TripleJump, Water OR Damage=160
      WaterDash, Bash, DoubleJump, Grenade=1, Water OR Damage=100
    
anchor KwolokFight at -1978, -4135:
  nospawn
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  quest WestPools.ForestsStrength:
    moki:
      SkipKwolok  # Impossible state used to logically support skipping Kwolok's fight through headers
      Boss=250, Regenerate, Damage=85, Water, WaterDash, Bash, DoubleJump, Launch OR Dash
    gorlek: Boss=250, Regenerate, Damage=85, Water, WaterDash, Bash, DoubleJump OR Launch OR Dash
    kii: Boss=250, Regenerate, Damage=85, Water, WaterDash, DoubleJump OR Launch OR Dash
    unsafe: Boss=250

region LowerWastes:
  moki: Danger=50, Regenerate
  gorlek: Regenerate
  kii: Regenerate
  unsafe: free

anchor LowerWastes.WestTP at 1456, -3997:  # At the Western Wastes TP
  refill Full
  
  state NonGladesTeleporter: free

  pickup LowerWastes.WestTPOre:
    moki: Burrow
  pickup WoodsMain.FeedingGroundsEX:
    moki: Burrow, DoubleJump OR Dash OR Glide OR Launch
    gorlek: Burrow

  conn Teleporters: free
  conn LowerWastes.SunsetView:
    moki:
      DoubleJump, Grapple
      Bash, Grenade=1, DoubleJump OR Dash
      DoubleJump, Burrow
      Launch
    gorlek:
      Bash, Grenade=1, Damage=30
      DoubleJump, TripleJump
      Grapple, Dash  # done by jumping off the muncher
      Grapple, Sword, Damage=30
      SentryJump=1, Damage=30 OR DoubleJump OR Dash
      SwordSJump=2
      HammerSJump=2, Glide
    kii:
      DoubleJump, Hammer OR Sword  # djump+upslash to climb the wall
      Burrow, Dash OR Hammer OR Shuriken=2
      Burrow, Damage=30, Sword OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Burrow, Glide, Sword OR Flash=2 OR Sentry=2
      Burrow, Sword, Spear=1 OR Blaze=1 OR Flash=1 OR Sentry=1  # upslash then energy weapon to pass over the spikes
      Grapple, Hammer
      Grapple, Sentry=2, Shuriken=1 OR Damage=30
      Grapple, Glide, Sword OR Shuriken=2 OR Flash=2 OR Sentry=2
      Grapple, Glide, Damage=30, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Grapple, Sword, Spear=1 OR Blaze=1 OR Flash=1 OR Sentry=1  # upslash then energy weapon to pass over the spikes
    unsafe:
      DoubleJump  # precise....? This is another rough path. Can turn it to triple jump to make it freeTM, or can add weapons
      Burrow, Damage=30  # This is a pretty rough path. Might be too tricky. Sticky makes it a bit easier though?
      Burrow, Sword OR Sentry=3
      Grapple, Glide, Spear=2 OR Blaze=2
      Grapple, Shuriken=3 OR Sentry=4
  conn WoodsMain.FeedingGrounds:
    moki: WindtornRuins.Seir, Burrow  # Seir to make it a safe path
    gorlek: Burrow
  conn WeepingRidge.Bottom:  # These paths need to be solvable after cat and mouse, since there is less platforms at that point and you can't pass above the teleporter
    moki, Burrow, WindtornRuins.Seir:  # Seir to make it a safe path
      DoubleJump, Glide, Grapple
      DoubleJump, Bash, Grenade=1, Grapple
      Launch
    gorlek, Burrow, WindtornRuins.Seir:  # these are paths that rely on the wind, which you don't have if you remove the killplane
      Grapple, Glide
      DoubleJump, TripleJump, Glide
      Bash, Grenade=1, Dash, Glide
    gorlek, Burrow, RemoveKillPlane OR WindtornRuins.Seir:  # these paths work no matter whether you actually have Seir or just removed the killplane
      SentryJump=1, Grapple
      SentryJump=1, DoubleJump, TripleJump
      Bash, Grenade=1, Grapple
      Bash, Grenade=1, DoubleJump, TripleJump
      Bash, Grenade=2, Dash
    kii, Burrow, WindtornRuins.Seir:  # these are paths that rely on the wind, which you don't have if you remove the killplane
      Glide, Dash, DoubleJump, Sword OR Hammer
      Glide, DoubleJump, Hammer, Shuriken=1 OR Flash=1 OR Sentry=1
      Glide, Bash, Grenade=1, DoubleJump
    kii, Burrow, RemoveKillPlane OR WindtornRuins.Seir:  # these paths work no matter whether you actually have Seir or just removed the killplane
      Launch  # @validator this should probably be gorlek
      Bash, Grenade=1, Dash, DoubleJump, Sword OR Hammer
      Bash, Grenade=1, DoubleJump, Hammer, Shuriken=1 OR Flash=1 OR Sentry=1
      Bash, Grenade=2, DoubleJump
    unsafe, WindtornRuins.Seir:
      Burrow, DoubleJump, TripleJump  # deemed too precise
      Burrow, HammerSJump=1, DoubleJump, Dash, Hammer  # Pretty tight
      Burrow, SentryJump=2, DoubleJump, TripleJump OR Dash OR Glide  # moving SentryJump
      Burrow, SentryJump=2, Dash OR Glide  # moving SentryJump

# checkpoint at 1509, -3987

anchor LowerWastes.SunsetView at 1552, -3984:  # At the Sunset View checkpoint
  refill Checkpoint

  pickup LowerWastes.SunsetViewEX: free
  pickup LowerWastes.PurpleWallEX:
    moki: Burrow, Bash
    unsafe: Burrow  # didn't want to be mean
  pickup LowerWastes.SpiritTrial:
    moki: LowerWastes.TrialActivation, Burrow, DoubleJump, Dash, Grapple
    gorlek: LowerWastes.TrialActivation, Burrow, Dash, Grapple

  conn LowerWastes.WestTP:
    moki: DoubleJump OR Dash OR Glide OR Launch
    gorlek: Damage=30 OR Sword OR Hammer  # Multiple side slashes, not difficult
    kii:
      Spear=1 OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
    unsafe:
      Bash, Grenade=1  # deemed too obscure
      Blaze=1  # This is a little tight
  conn LowerWastes.Shovel:
    moki:  # I think this is fine without Combat?
      Grapple, DoubleJump OR Dash OR Glide
      Bash, Grenade=1, DoubleJump, Dash
      Launch  # Pretty free. Only difficulty is wall jumping pre-Launch to go over the grapples.
    gorlek:
      Grapple  # Hope that the camera likes you
      Bash, Grenade=1, DoubleJump
      SwordSJump=1, DoubleJump, Dash OR Glide OR Damage=30
      HammerSJump=1, DoubleJump
    kii:
      Bash, Grenade=1  # can either bash off the gorlek, then the grenade - or climb the wall to get additional height out of the bashgrenade
      Bash, DoubleJump  # Bash the gorlek's projectile
    unsafe:
      SentryJump=1, DoubleJump OR Dash
      Bash  # bash the gorlek then its projectile

anchor LowerWastes.Shovel at 1634, -3981:  # On the ground to the left of the Sand Bridge
  refill Energy=3:
    moki, BreakCrystal:
      DoubleJump OR Launch
      Bash, Grenade=1
    kii: BreakCrystal

  quest LowerWastes.EerieGemQI:
    moki: Burrow

  pickup LowerWastes.SandBridgeOre: free

  conn LowerWastes.SunsetView:
    moki: Combat=MaceMiner OR Bash OR Grapple OR Launch
    gorlek: Glide
    kii: DoubleJump OR Dash
    unsafe: free
  conn LowerWastes.TreeArea:
    moki: Burrow
  conn LowerWastes.MuncherTunnel: free

anchor LowerWastes.MuncherTunnel at 1681, -4002:  # Above the sand/muncher tunnel
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  pickup LowerWastes.MuncherTunnelEC:
    moki: Burrow

  conn LowerWastes.Shovel:
    moki:
      DoubleJump OR Launch
      Bash, Grenade=1
    gorlek:
      Damage=30 OR Dash OR SentryJump=1
      Bash, Glide OR Sword OR Hammer  # lure the mantis
    kii: Bash OR Hammer OR Sword  # with sword, bait the mantis and pogo
  conn LowerWastes.SandPot:
    moki:
      Combat=Mantis+ShieldSlug
      Combat=Mantis, DoubleJump OR Burrow OR Hammer
      Bash, DoubleJump OR Burrow OR Grenade=1
      Launch
    gorlek: DoubleJump OR Dash OR Burrow OR Sword  # slash the enemy off the wall
    kii:
      Combat=ShieldSlug OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Bash  # use the mantis
    unsafe: Blaze=1

anchor LowerWastes.SandPot at 1726, -3990:  # To the left of the sand pot
  refill Checkpoint

  pickup LowerWastes.SandPotHC:
    moki:
      Burrow, DoubleJump
      Launch
    gorlek:
      Burrow  # mostly just hold left
      SentryJump=1
      DoubleJump, TripleJump OR Sword OR Hammer  # just something to help
    kii:
      DoubleJump
      Bash, Hammer OR Spear=1 OR Grenade=1  # Break the slime's shell in order to bash it
  pickup LowerWastes.SandPotEX:
    moki, Burrow:
      Dash, Grapple, DoubleJump OR Glide
      Bash, Grenade=1
      Launch
    gorlek, Burrow:
      DoubleJump, TripleJump  # either evade the coal damage or burrow on top of the sand pot
      Dash, DoubleJump OR Grapple
      Damage=30, DoubleJump
      Damage=30, Grapple, Glide OR Sword
      SentryJump=1
    kii, Burrow:
      DoubleJump OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Grapple, Glide OR Blaze=3
    unsafe: Burrow

  conn LowerWastes.MuncherTunnel:
    moki: Combat=Mantis OR Bash OR Launch
    gorlek: free
  conn LowerWastes.WoodenBridge:
    moki:
      Dash, DoubleJump OR Grapple
      Dash, Bash, Grenade=1
      Bash, Grenade=2, DoubleJump OR Glide
      Bash, Grenade=1, Grapple, DoubleJump OR Glide
      Bash, Grenade=1, DoubleJump, Glide
      Launch
    gorlek:
      Burrow, DoubleJump, TripleJump  # either evade the coal damage or burrow on top of the sand pot
      DoubleJump, Damage=30, TripleJump OR Glide OR Sword OR Hammer  # take damage in the coals
      Grapple, Damage=30, DoubleJump OR Glide OR Sword OR Hammer
      Damage=30, Bash, Grenade=1, DoubleJump OR Sword OR Hammer
      SentryJump=1, Glide             # glide from the sand pot
      SwordSJump=1, Damage=30  # hover from the sand pot
      SentryJump=1, Grapple           # grapple from the sand pot, use the weapon to hover
      Bash, Grenade=1, Glide
      Bash, Grenade=1, Sword, Damage=30
      Bash, Grenade=1, Grapple, Sword OR Hammer OR Damage=30
      Bash, Grenade=2, Sword OR Hammer OR Damage=30
    kii:
      Sword
      Hammer, Glide OR Dash OR DoubleJump OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1 OR Damage=30
      DoubleJump, TripleJump OR Grapple OR Damage=30
      Grapple, DoubleJump OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1 OR Damage=30
      Bash, Grenade=1
      Bash, Hammer OR Spear=2  # break the slime's shell and bash it
      Dash, Spear=2 OR Shuriken=2 OR Flash=2 OR Sentry=2
      Dash, Glide, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Dash, Damage=30, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      Hammer, Spear=1
      Bash, Spear=1  # break the slime's shell and bash it
      Dash, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1 OR Damage=30
      Dash, Burrow  # burrow in the sand pot so you can dash into the ceiling to reset your dash
      Glide  # climb on the sand pot from the right then hover

anchor LowerWastes.WoodenBridge at 1796, -3977:  # Directly above MuncherPitEX
  refill Checkpoint

  pickup LowerWastes.SandPotEX:  # Make sure it's not redundant with paths doing WoodenBridge->SandPot->SandPotEX. Kii and above make going from one side of the pot to the other free so it doesn't need any paths
    moki, Burrow:
      Grapple, DoubleJump OR Glide
      Grapple, Bash, Grenade=1
      Bash, Grenade=1, DoubleJump, Dash OR Glide
    gorlek, Burrow:  # @validator this need validation as well
      DoubleJump, Glide OR Sword OR Hammer OR Damage=30
      Grapple, Sword OR Hammer
  pickup LowerWastes.MuncherPitEX:
    moki:
      DoubleJump OR Launch  # Slightly precise to land on the sand sphere.
      Burrow, Glide
    gorlek: Burrow OR Hammer
    kii:
      Spear=1
      Glide, Sword OR Shuriken=1 OR Flash=1 OR Sentry=1  # Could add Grapple so you can retry more easily or Damage=30 so the gliding section is less precise
    unsafe:
      Sword OR Flash=1 OR Sentry=1  # Make the sphere swing by wall jumping on it
      Dash  # Dash when falling

  conn LowerWastes.SandPot:
    moki:
      Grapple, DoubleJump OR Glide OR Dash
      Dash, DoubleJump
      Bash, Grenade=1, Grapple
      Bash, Grenade=1, DoubleJump, Glide
      Launch
    gorlek:
      Grapple, Glide OR Sword OR Hammer
      DoubleJump, TripleJump OR Glide
      Damage=30, DoubleJump OR Dash OR Glide  # extra abilities just for convenience
    kii:
      Damage=60
      Damage=30, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      DoubleJump, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
    unsafe:
      Damage=30
      # SentryJump=1, Damage=30  # Maybe too dumb. Gotta do a sentry jump in the spikes, and even then it can be close
  conn LowerWastes.LeverArea:
    moki: DoubleJump OR Burrow OR Launch
    gorlek:
      Dash OR SentryJump=1
      Bash, Grenade=1  # either find a place where you can throw a grenade or do the bash-only path
    kii:
      Sword OR Hammer  # With sword, pogo the gorlek
      Spear=2 OR Shuriken=2 OR Blaze=2 OR Flash=2 OR Sentry=2  # Possible with only one of each but the last jump into the bridge feels really weird
      Bash, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe:
      Glide  # Glide jump
      Bash  # Sorta janky but seems to work most of the time. Doesn't _look_ like it should work though
      Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
  conn LowerWastes.BeforeMinesEntrance:
    gorlek: ShurikenBreak=20, Combat=MaceMiner OR DoubleJump OR Bash OR Launch
    kii: ShurikenBreak=20

anchor LowerWastes.BeforeMinesEntrance at 1846, -3986:  # To the right of the breakable wall leading to the Wooden Bridge
  pickup LowerWastes.BottomRightHC: free

  conn LowerWastes.MinesEntrance:
    moki:
      Combat=MaceMiner+Mantis, DoubleJump OR Dash OR Glide OR Grapple
      Bash, DoubleJump OR Dash OR Glide OR Grapple
      Launch
    gorlek:
      Damage=30, Combat=MaceMiner+Mantis OR Bash
      DoubleJump
    kii: Bash, Grenade=1
  conn LowerWastes.WoodenBridge:
    moki, BreakWall=20: Combat=MaceMiner OR Bash OR Launch
    gorlek, BreakWall=20: DoubleJump
    kii: BreakWall=20
  conn LowerWastes.LeverArea:  # make sure it's not redundant with BeforeMinesEntrance->WoodenBridge->LeverArea
    gorlek:
      DoubleJump, TripleJump
      Launch
    kii:
      DoubleJump
      Bash, Grenade=1
    unsafe: free

anchor LowerWastes.MinesEntrance at 1921, -4001:  # To the left of the ruins breakable wall
  pickup LowerWastes.BottomRightEX:
    moki:
      Combat=MaceMiner+Mantis, Grapple
      Bash, Grenade=1, DoubleJump OR Dash  # Very much not a mandatory grenade... This is only important if the Ruins Wall is broken, and then only if you don't use the enemies
      Launch
    gorlek:
      DoubleJump, TripleJump, Hammer
      SentryJump=1  # can either jump good or use the right wall and weapon float
      Bash, Grenade=1 OR DoubleJump OR Glide
      Bash, Dash OR Sword OR Hammer  # @Validator seems like thay are missing. Climb the right wall above the breakable wall
    kii:
      Grapple  # @validator Can probably be gorlek
      Bash  # Bash the gorlek to reach the mntis when it jumps
      Sword, DoubleJump  # pogo
      Combat=MaceMiner+Mantis, DoubleJump, TripleJump, Spear=1
    unsafe:
      DoubleJump, TripleJump, Sentry=1 OR Flash=1
  pickup LowerWastes.BottomRightHC:  # Make sure it's not redundant with conn LowerWastes.BeforeMinesEntrance
    moki:
      Combat=MaceMiner+Mantis, Grapple  # Use both Grapple points
      Bash, Grenade=1, DoubleJump OR Dash OR Glide
      Launch
    gorlek:
      Damage=30, Combat=MaceMiner+Mantis OR Bash
      DoubleJump, TripleJump OR Dash OR Glide
      Bash, DoubleJump OR Dash OR Glide
    kii:
      Grapple  # @validator could be gorlek
      Damage=40  # dboost in the spikes and the gorlek
      DoubleJump, Sword OR Hammer OR Shuriken=1 OR Blaze=3 OR Sentry=2
      Bash, Sword OR Hammer OR Shuriken=1 OR Blaze=3 OR Sentry=2
    unsafe: Combat=MaceMiner, Bash  # bash glide from the mantis

  conn LowerWastes.BeforeMinesEntrance:  # Make sure it solves with and without the Ruins wall
    moki:
      Combat=MaceMiner+Mantis, DoubleJump, Grapple
      Bash, DoubleJump, Grapple
      Launch, DoubleJump OR Dash OR Grapple
    gorlek:
      SentryJump=1, DoubleJump, TripleJump, Dash OR Glide
      Bash, DoubleJump, TripleJump, Dash
      Grapple, Dash, Combat=MaceMiner+Mantis OR Bash  # Pretty straightforward. Rest of these paths you're able to avoid enemies so Combat isnt included.
      Launch
    kii:
      Grapple, Dash OR DoubleJump OR Sword OR Hammer
      Grapple, Glide, Shuriken=1 OR Flash=1 OR Sentry=1
      Bash, DoubleJump, TripleJump OR Dash  # Bash glide from the gorlek's projectile
    unsafe:
      Grapple, Glide, Spear=1
  conn WindtornRuins.LowerRuins:
    gorlek: ShurikenBreak=20, Burrow

anchor LowerWastes.LeverArea at 1833, -3959:  # At the arrow sign below the lever
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  state LowerWastes.SandPlatformLever:
    moki:
      DoubleJump OR Burrow OR Launch  # Requires a vertical burrow through a vertical sand platform
      Bash, Grenade=2
      Bash, Grenade=1, Dash
    gorlek:
      Dash
      SentryJump=2
      SentryJump=1, Glide
      Bash, Grenade=1, Glide
    kii: Bash, Grenade=1
    unsafe: free  # wall jump on the right wall so you can jump on top of the first crumbling sand wall
      # Sword  # Pogo the energy crystal
      # Sentry=3

  conn LowerWastes.WoodenBridge: free
  conn LowerWastes.BeforeMinesEntrance: free
  conn LowerWastes.EastTP:
    moki: Burrow
  conn LowerWastes.MuncherClimb:
    moki:
      Bash, Grenade=1
      Launch
      LowerWastes.SandPlatformLever, DoubleJump, Dash OR Glide OR Burrow  # If the double jump is too tight this makes it free
      LowerWastes.SandPlatformLever, Dash, Burrow
    gorlek:
      SentryJump=1
      LowerWastes.SandPlatformLever, DoubleJump
      LowerWastes.SandPlatformLever, Burrow, Glide OR Sword
    unsafe:
      LowerWastes.SandPlatformLever, Dash
  conn LowerWastes.LastStandArea:  # Every solutions which needs to land on th left edge should originate from MuncherClimb
    moki: Bash, Grenade=1, DoubleJump
    gorlek:  # some amount of puzzle knowledge is assumed
      SentryJump=1, DoubleJump
      LowerWastes.SandPlatformLever:
        Burrow, Glide OR Sword
        Bash, Grenade=1, Glide OR Burrow OR Hammer
    kii:
      Bash, Grenade=1, LowerWastes.SandPlatformLever OR Hammer OR Spear=1
      LowerWastes.SandPlatformLever, Burrow, Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe:
      Bash, Grenade=1  # Aggro the mantis with a bashnade then bash it when it jumps. Path isn't from MuncherClimb because the mantis doesn't spawn if you respawn at that checkpoint.
      SentryJump=1  # might have been gorlek
      LowerWastes.SandPlatformLever, Burrow  # burrow through the sand below to get a boost

anchor LowerWastes.MuncherClimb at 1791, -3953:  # Checkpoint before the munchers on the way to the tree
  refill Checkpoint

  pickup LowerWastes.MuncherClimbEX:
    moki: Grapple, Launch OR DoubleJump
    gorlek:
      Grapple, Dash
      Launch, DoubleJump, TripleJump
      Launch, Damage=30
    kii:
      Launch
      Grapple, Hammer OR Sentry=2  # With sentry, easier from a wall jump instead of jumping from the muncher
      Grapple, Sword, Shuriken=1 OR Flash=1 OR Sentry=1
      Grapple, Glide, Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      Grapple, Sword  # Upslash->Downslash to get the pickup
      Grapple, Glide, Spear=1
      DoubleJump, TripleJump, Damage=30  # really precise wall jump toa void getting one more dboost

  conn LowerWastes.LeverArea: free
  conn LowerWastes.LastStandArea:  # Make sure it's not redundant with paths from LeverArea
    moki:
      Launch
      LowerWastes.SandPlatformLever, DoubleJump
    gorlek:
      DoubleJump, TripleJump
      LowerWastes.SandPlatformLever, Dash
    kii:
      DoubleJump
      LowerWastes.SandPlatformLever, Sword OR Hammer OR Spear=2 OR Shuriken=2 OR Sentry=2
    unsafe:
      Hammer OR Spear=1
      LowerWastes.SandPlatformLever, Burrow  # Way harder on keyboard
  conn LowerWastes.TreeArea:
    moki:
      Grapple, DoubleJump OR Launch
      Grapple, Dash, Glide  # This path is fun. Glide is just to make it moki-safe
    gorlek:
      Grapple, Dash OR Glide
      Launch, DoubleJump, TripleJump  # Can do it with just double jump but the timing is tight
    kii:
      Grapple, Sword OR Sentry=3 OR Damage=90  # With sword, you have to delay a bit your sword hover after the last muncher or you'll target the sand platform
      Grapple, Damage=30, Hammer OR Spear=2 OR Shuriken=2 OR Blaze=3 OR Flash=2 OR Sentry=2
      Grapple, Hammer, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1  # energy between the 3rd and 4th muncher
      Launch, DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Damage=30
    unsafe:
      Launch
      Grapple, Hammer OR Shuriken=2 OR Sentry=2 OR Damage=30  # There's friendly spikes on the ground between the 3rd and 4th muncher. Grab the 4th muncher from there.
      Grapple, Damage=30, Spear=1 OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
      DoubleJump, TripleJump, Damage=30  # really precise wall jump toa void getting one more dboost

anchor LowerWastes.LastStandArea at 1794, -3938:  # next to the projectile spawner above the wooden bridge
  pickup LowerWastes.LastStandShard:
    moki: DoubleJump OR Dash OR Burrow  # for the puzzle, it is considered solvable in moki with one of doublejump, dash or burrow.
    gorlek: Launch OR Glide  # some amount of puzzle knowledge is assumed
    kii: free  # just wall jump on the purple wall until the shot arrives
  pickup LowerWastes.LastStandEX:
    moki: Burrow, Launch OR DoubleJump
    gorlek:
      Burrow, Glide
      Burrow, Damage=30, Dash OR Sword
    kii: Burrow, Dash OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Damage=30
    unsafe: Burrow  # friendly spikes

  conn LowerWastes.LeverArea: free
  conn LowerWastes.MuncherClimb:  # Make sure it's not redundant with paths fromLeverArea
    moki: Glide OR DoubleJump OR Dash OR LowerWastes.SandPlatformLever
    gorlek: Sword OR Hammer
    kii: free

anchor LowerWastes.TreeArea at 1715, -3936:  # The ledge right of SkeetoHive
  refill Checkpoint

  pickup LowerWastes.SkeetoHiveEX:
    moki: Burrow, DoubleJump OR Dash OR Glide OR Launch
    gorlek: Burrow

  conn LowerWastes.ThirstyGorlek:
    moki:
      DoubleJump OR Burrow OR Launch
      Bash, Grenade=2  # literally never going to get used but you can do it
    gorlek:
      SentryJump=2
      SentryJump=1, Bash OR Grapple
      Bash, Grapple OR Grenade=1
    kii:
      Bash
      Sword, Grapple  # Pogo a skeeto
    unsafe:
      Sword, Damage=30  # Pogo a skeeto, wait for another one to reach the sand bag level and pogo it as well
      Hammer, Damage=30  # wall jumping of the sand restore your upslash for some reason
  conn LowerWastes.Shovel:
    moki: Burrow
  conn LowerWastes.UpperPath:
    moki, Burrow:
      DoubleJump OR Launch
      Bash, Grenade=1  # literally never going to get used but you can do it
    gorlek, Burrow:
      Bash
      Grapple, Dash
      SentryJump=1
    kii, Burrow:
      Hammer OR Spear=1
      Sword  # pogo a skeeto. Skeeto can be kinda hard to manipulate, adding dash makes it easier if necessary
      Grapple, Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe: Burrow  # "daulphin jump" from the ground to reach the floating sand platform
      # Burrow, Glide OR Dash OR Grapple
  conn LowerWastes.LeverArea:
    moki:
      Grapple, Launch
      Grapple, DoubleJump, Dash  # still sort of tight
    gorlek:
      Grapple, DoubleJump OR Dash
      Launch, DoubleJump OR Dash OR Glide OR Sword OR Damage=30
    kii:
      Launch
      Bash, Damage=60, DoubleJump OR Dash  # bash glide a skeeto
      DoubleJump, Damage=30, Dash OR TripleJump OR Sword
      DoubleJump, Glide, Damage=30, Hammer OR Shuriken=1
      Bash, DoubleJump, TripleJump, Glide OR Dash OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
    unsafe:
      Grapple, Sword OR Hammer  # Land on the friendly spikes between the 1st and 2nd muncher. Upslash + grapple from there
      Grapple, Damage=30, Shuriken=2 OR Sentry=3
      Grapple, Damage=60, Shuriken=1 OR Sentry=2
      DoubleJump, Glide, Damage=30  # glide jump

anchor LowerWastes.ThirstyGorlek at 1681, -3923:  # next to the Gorlek on the way to the tree
  refill Checkpoint

  state LowerWastes.TrialActivation:  # Since you have to reach this place again in a race to get an advantage, only paths possible during a trial are meaningful
    moki: Burrow, DoubleJump OR Dash OR Glide

  quest LowerWastes.HandToHandMapstone:
    moki: GladesTown.HandToHandCanteen

  pickup LowerWastes.BurrowTree: free
  pickup LowerWastes.BurrowTreeEX:
    moki: Burrow
  pickup LowerWastes.LupoMap:
    moki, SpiritLight=150:
      Burrow OR Launch
      Bash, Grenade=2  # literally never going to get used but you can do it
    gorlek, SpiritLight=150:
      SentryJump=2
      DoubleJump, TripleJump, Hammer
    kii, SpiritLight=150:
      DoubleJump, TripleJump, Sword, Bash, Grenade=1
      DoubleJump, TripleJump, Spear=2
    unsafe, SpiritLight=150:
      DoubleJump, TripleJump, Sword OR Spear=1 OR Flash=1 OR Sentry=1  # land on the wood structure on the left of the sand bag. Make the sand bag swing to reach the wood structure with just tjump.

anchor LowerWastes.UpperPath at 1761, -3898:  # on the left side of the path connecting tree and east teleporter
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  pickup LowerWastes.UpperPathEC:
    moki: Burrow
  pickup LowerWastes.UpperPathEX:
    moki: Burrow, DoubleJump OR Dash OR Glide OR Launch
    gorlek: Burrow, Sword OR Hammer OR Damage=30
    kii: Burrow  # you can reenter the sand right after taking the pickup or just tp out
  pickup LowerWastes.UpperPathHiddenEX:
    moki: Burrow, DoubleJump OR Dash OR Glide OR Launch
    kii: Burrow, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Shuriken=1  # extra ability so you don't have to do the wall jump on th hidden wall
    unsafe: Burrow  # precise maneuver

  conn LowerWastes.TreeArea:
    moki: Burrow
  conn LowerWastes.EastTP:
    moki: Burrow

# checkpoint at no actually just bad refill situation below. Could be solved easily.

anchor LowerWastes.EastTP at 1992, -3902:  # Location of the east teleporter
  refill Full

  state NonGladesTeleporter: free

  pickup LowerWastes.EastTPOre:
    moki, BreakWall=20:
      Burrow OR Launch
      DoubleJump, Bash, Grenade=1
      Bash, Grenade=3  # it had to be done
    gorlek, BreakWall=20:
      DoubleJump OR SentryJump=1
      Bash, Grenade=1, Sword OR Hammer
    unsafe, BreakWall=20:
      Dash, Damage=60, Spear=1 OR Flash=1 OR Sentry=1
      Dash, Damage=30, Sword OR Hammer OR Spear=2
  pickup LowerWastes.UpperPathHC:
    moki: Burrow

  conn Teleporters: free
  conn Tokk:
    moki:
      DoubleJump OR Burrow OR Launch
      Bash, Grenade=1
    gorlek: Sword OR Hammer
    kii: Spear=1 OR Flash=1 OR Sentry=1
  conn LowerWastes.LeverArea:
    moki: Burrow
  conn LowerWastes.UpperPath:
    moki: Burrow, DoubleJump OR Dash OR Launch
    gorlek: Burrow, Glide OR Sword OR Hammer
    kii: Burrow
  conn UpperWastes.KeystoneRoom:
    moki: Burrow, DoubleJump OR Dash OR Launch
    gorlek: Burrow, Glide OR Sword OR Damage=30
    kii: Burrow

region UpperWastes:
  moki: Danger=50, Regenerate
  gorlek: Regenerate
  kii: Regenerate
  unsafe: free

anchor UpperWastes.KeystoneRoom at 1900, -3831:  # Autosave underneath keystone door
  refill Checkpoint

  state UpperWastes.KeystoneDoor:
    moki, Keystone=2:
      Burrow, Bash, DoubleJump OR Dash OR Glide
      Burrow, Combat=ShieldSlug, DoubleJump OR Dash OR Glide
      Launch
    gorlek, Keystone=2:
      Burrow, DoubleJump OR Dash OR Glide OR Sword OR Hammer  # can either avoid or deal with the shield slug
      SentryJump=2
    kii, Keystone=2:
      Burrow, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Bash, Grenade=1, Burrow  # @validator probably gorlek, could be moki with some Combat requirementz
      Bash, DoubleJump, TripleJump, Sword OR Hammer OR Spear=1  # Bash the gorlek's projectile to reach the sand bag. tjump + upslash/spear from here
    unsafe, Keystone=2:
      Burrow
      # Burrow, Bash  # Break the slug shell with gorlek's projectile
      DoubleJump, TripleJump, Sword OR Hammer OR Damage=30  # tjump+upslash from right wall, tjump+dboost from left wall
      Bash, DoubleJump, TripleJump  # bash the gorlek projectile then stupid wall jump you won't see how to do without debug renderer
      Bash, SentryJump=1  # Remove the shell of the ShieldSlug and bash it twice to reach the pickup
      Bash, DoubleJump, SentryJump=1  # Bash the gorlek's projectile
      DoubleJump, TripleJump, Damage=30  # you can refresh your tjump on the ^ mark in the ceiling above the sandbag

  pickup UpperWastes.LowerKS:
    moki:
      Burrow, DoubleJump OR Dash OR Glide
      Launch, DoubleJump OR Dash OR Glide
    gorlek:
      Burrow OR Launch
      DoubleJump, TripleJump
    kii: Damage=30
    unsafe: free  # TP out after getting the pickup
  pickup UpperWastes.UpperKS:
    moki: Burrow, DoubleJump OR Dash OR Glide OR Launch
    gorlek: Burrow  # land on the right platform, burrow the sandbag from there
  pickup UpperWastes.TurmoilShard:
    moki, Burrow: Bash, Launch  # intended path omitted in moki
    gorlek, Burrow:
      Bash, DoubleJump, Dash OR TripleJump
      Launch, DoubleJump
      Launch, Damage=30, Dash OR Glide OR Sword OR Hammer
    kii, Burrow:
      Launch, Damage=30  # refresh launch on ceiling at the first turret
      DoubleJump, TripleJump, Damage=120
    unsafe, Burrow:
      Launch
      Bash, Dash OR DoubleJump
      DoubleJump, TripleJump, Damage=36  # dboost between 1st and 2nd turrets then precise wall jump and take a dboost on the projectile to reach the sand platform
      DoubleJump, Bash, SentryJump=1, Damage=30  # sjump in the spikes below the 3rd projectile
      DoubleJump, TripleJump, Dash, Damage=6, Hammer OR Sword  # tjump + upslash, immediatly dash and start air combo. Precise tjump to get a walljump, dboost on the projectile in order to walk in the spikes above.
  pickup UpperWastes.KSDoorEX:
    moki:
      Burrow, DoubleJump OR Dash OR Glide
      DoubleJump, Bash, Grenade=1
      Launch
    gorlek:
      Burrow, Sword OR Hammer
      Combat=ShieldSlug, Bash, Grenade=1
      SentryJump=1
    kii:
      Burrow, Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Bash, Grenade=1 OR Sword OR Hammer OR Spear=1  # either bash grenade or break the slug's shell in order to bash it
      Bash, DoubleJump, TripleJump  # Bash the gorlek's projectile
      DoubleJump, TripleJump, Damage=30
    unsafe:
      Bash  # Break slug's shell with a gorlek's projectile
      Burrow
      DoubleJump, TripleJump, Dash, Sword  # tjump+upslash+dash to climb the right wall (can also just sword jump + upslash to remove the requirement of dash)

  conn LowerWastes.EastTP:
    moki: Burrow, DoubleJump OR Dash OR Glide OR Launch
    gorlek: Burrow, Sword OR Hammer OR Damage=30
    kii: Burrow
  conn UpperWastes.MissilePuzzleLeft:
    moki, UpperWastes.KeystoneDoor, Burrow:
      Bash, DoubleJump OR Dash OR Glide
      Combat=ShieldSlug, DoubleJump OR Dash OR Glide
      Launch
    gorlek, UpperWastes.KeystoneDoor, Burrow: DoubleJump OR Dash OR Glide OR Sword OR Hammer
    kii, UpperWastes.KeystoneDoor, Burrow:
      Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Bash, Grenade=1  # @validator probably gorlek, could be moki with some Combat requirementz
    unsafe, UpperWastes.KeystoneDoor: Burrow

anchor UpperWastes.MissilePuzzleLeft at 1937, -3794:  # Immediately to the right of the sand after the keystone door
  refill Checkpoint

  state UpperWastes.KeystoneDoor:
    moki, Keystone=2: Burrow

  pickup UpperWastes.LedgeEC:
    moki:
      Burrow, Bash, DoubleJump OR Dash
      Launch
    gorlek:
      Burrow, Bash, Glide
      Bash, Grenade=1, DoubleJump
      Combat=MaceMiner, SentryJump=1, DoubleJump
    kii:
      Bash, Grenade=1  # use the miner as well
      DoubleJump, TripleJump, Sword  # tjump->pogo->tjump->upslash
      Burrow, Bash
      Burrow, DoubleJump, TripleJump, Hammer OR Spear=1
      Burrow, DoubleJump, Sword  # pogo the torpedo
    unsafe:
      SentryJump=1
      Bash, DoubleJump, TripleJump  # Lure the miner on higher ground to the left
  pickup UpperWastes.MissileSpawnEX:
    moki: Burrow
  pickup UpperWastes.KSDoorEX:
    moki: UpperWastes.KeystoneDoor, Burrow

  conn UpperWastes.KeystoneRoom:
    moki: UpperWastes.KeystoneDoor, Burrow
  conn UpperWastes.MissilePuzzleMiddle:
    moki: Burrow

anchor UpperWastes.MissilePuzzleMiddle at 2005, -3802:  # On top of the sand beneath the lever
  refill Checkpoint:
    gorlek: Burrow, Bash OR Damage=14
    unsafe: Burrow, Dash OR Launch

  state UpperWastes.LeverDoor:
    moki: Burrow, Bash
    gorlek: Burrow, Damage=14  # take the hit
    unsafe: Burrow, Dash OR Launch  # Dash/Launch to avoid the explosion.

  pickup UpperWastes.PurpleWallEX:
    moki: Combat=MaceMiner, Burrow
    unsafe: Burrow  # hug the right wall before impact

  conn UpperWastes.MissilePuzzleLeft:  # for better random spawn
    gorlek: Burrow, Bash
    kii: Burrow
  conn UpperWastes.MissilePuzzleRight:
    moki: UpperWastes.LeverDoor, Burrow

anchor UpperWastes.MissilePuzzleRight at 2058, -3813:  # On top of sand to the right of lever gate, underneath a laser.
  pickup UpperWastes.PurpleWallHC:
    moki: Burrow

  conn UpperWastes.RuinsApproach:  # this covers all connections to the pickups in the spinning lasers.
    moki, Burrow:
      Bash, DoubleJump, Dash OR Glide  # dash or glide to make the lasers better
      DoubleJump, Dash  # you can retry the burrow with DoubleJump, so I think this is fine
      Launch
    gorlek, Burrow:
      Dash, Bash OR SentryJump=1 OR Damage=30  # Dash gets the player past the lasers pretty well; for sentryjump the tools to kill the slime are there
      Glide, DoubleJump OR Bash OR SentryJump=1 OR Damage=30  # same as above
      DoubleJump, TripleJump OR Dash OR Glide
    kii, Burrow:
      Dash OR DoubleJump OR Hammer OR Shuriken=2 OR Flash=2 OR Sentry=2 OR Damage=60
      Damage=30, Bash OR Glide OR Sword OR Shuriken=1 OR Flash=1 OR Sentry=1 OR Blaze=1
    unsafe: Burrow
  conn UpperWastes.MissilePuzzleMiddle:  # for better random spawn
    moki: UpperWastes.LeverDoor, Burrow

# checkpoint at 2037, -3751

anchor UpperWastes.RuinsApproach at 2002, -3698:  # checkpoint after the laser spinner
  refill Checkpoint

  pickup UpperWastes.SpinLasersRightEX:
    moki: Burrow
  pickup UpperWastes.SpinLasersMiddleEX:
    moki: Burrow
  pickup UpperWastes.SpinLasersLowerEX:
    moki: Burrow
  pickup UpperWastes.RoofEX:
    moki:
      Burrow, DoubleJump, Bash, Grenade=1
      Burrow, DoubleJump, Dash OR Glide
      Burrow, Launch
    gorlek:
      Burrow, DoubleJump, TripleJump OR Sword
      Burrow, Bash, DoubleJump OR Dash  # Bash the Mantis
      Burrow, Bash, Damage=30, Glide OR Sword OR Hammer  # Bash the Mantis
      Burrow, SentryJump=1, DoubleJump OR Dash OR Damage=30  # Kill the Mantis
    kii:
      Burrow, Dash
      Burrow, Bash, Glide OR Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Burrow, DoubleJump, Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Burrow, Glide, Hammer OR Shuriken=1
      Burrow, Sword, Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      Burrow, Bash  # Bash the Mantis to reach the wall under the pickup, then get a weird boost on the wall after abashing the mantis a second time
      Burrow, Sword OR Shuriken=3

  conn UpperWastes.NorthTP:
    moki: Burrow
  conn UpperWastes.MissilePuzzleRight:
    moki: Burrow, DoubleJump OR Launch
    gorlek:
      Burrow, SwordSJump=1
      Burrow, HammerSJump=1, Dash OR Glide
      Burrow, Dash, Damage=30
    kii:
      Burrow, Bash OR Glide OR Dash OR Hammer
      Burrow, Sword, Shuriken=1
    unsafe: Burrow  # friendly spikes between the lasers
      # Burrow, Sword  # pogo the mantis
      # Burrow, Damage=10  # Damage boost of the Mantis shockwave rather than the spikes

anchor UpperWastes.NorthTP at 2044, -3679:  # Left of the teleporter, on top of the sand
  refill Full

  state NonGladesTeleporter: free

  quest UpperWastes.FlowersSeed:  # most paths here would be redundant with the connection upwards
    gorlek:
      Burrow, Bash, DoubleJump OR Dash
      Burrow, Bash, Dash, Grenade=1 OR SentryJump=1 OR Damage=30  # Dash wasn't considered gorlek to climb the last part up to ruins
      Burrow, DoubleJump, TripleJump, Damage=30, Dash OR SentryJump=1
      Burrow, SentryJump=1, DoubleJump, TripleJump, Dash
      Burrow, SentryJump=2, DoubleJump, TripleJump
      Launch, SentryJump=1  # weapon + launch allows you to kill the enemies
    kii:
      Bash, Grenade=1, DoubleJump, Glide OR Sword OR Sentry=2 OR Damage=30
      Bash, Grenade=2, DoubleJump
    unsafe:
      SentryJump=1, Damage=30, DoubleJump  # dboost in the spikes and sjump to the seed (use djump+upslash as well), sjump again to reach the lantern, djump on the sand ball, djump on the wall above and djump + use weapon to air stall to the pickup
      Bash, Grenade=1, DoubleJump, Shuriken=1

  pickup UpperWastes.WallOre:  # Most paths here would be redundant with the connection upwards. Paths to WallOre which can't reach the ruins not considered for moki/gorlek
    kii:
      # Use a bashnade to reach the sand bag above the sand pot. All the following paths are combination of different variations in order to optimize energy and health. Key parts are:
      # 1.a Take a dboost in the spikes on the way to the sand pot
      # 1.b Avoid the spikes on the way to the sand pot
      # 2.a Reach the bashable lantern, take a dboost in the spikes under the 2nd sand bag in order to reach it
      # 2.b Use a bashnade in order to land on the ledge above the sand bag and simply djump to the 2nd sand bag
      # Then Bashnade + djump to reach the ore
      Bash, Grenade=2, DoubleJump, Damage=30, Damage=30, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # 1.a + 2.a
      Bash, Grenade=2, DoubleJump, Glide, Damage=30, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # 1.b (with glide) + 2.a
      Bash, Grenade=2, DoubleJump, Sentry=3, Damage=30  # 1.b (2 sentries) + 2.a
      Bash, Grenade=3, DoubleJump, Damage=30  # 1.a + 2.b
      Bash, Grenade=3, DoubleJump, Glide OR Sentry=2  # 1.b + 2.b
      Bash, Grenade=4, DoubleJump  # 1.b (bashnade near the spikes) + 2.b

  conn UpperWastes.OutsideRuins:
    moki:
      Bash, Launch
      Burrow, Bash, DoubleJump, Dash OR Glide
      Burrow, Bash, Dash, Glide  # Slightly tight getting across to the sand pit but pretty easily doable. Semi precise angle on the burrow but with glide its easy to reattempt
      Burrow, Launch, DoubleJump OR Glide  # djump or glide lets you reattempt
    gorlek:
      Burrow, Bash, DoubleJump, TripleJump, Dash OR Sword
      Burrow, Bash, DoubleJump, Dash, Sword
      Burrow, Bash, DoubleJump, Grenade=1 OR SentryJump=1 OR Damage=30
      Burrow, Bash, Glide
      Bash, Grenade=1, DoubleJump, TripleJump, Dash OR Glide OR Sword OR Damage=30
      Bash, Grenade=2, DoubleJump, TripleJump
      Launch, DoubleJump, Combat=MaceMiner
      Launch, DoubleJump, TripleJump OR Dash  # go from the ledge above the teleporter
      Launch, Bash OR Burrow
    kii:
      Launch  # climb the left wall
      Burrow, DoubleJump, TripleJump, Damage=30
      Burrow, DoubleJump, TripleJump, Hammer, Glide OR Dash OR Sword OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
      Burrow, Bash, DoubleJump, TripleJump OR Dash OR Glide OR Sword OR Hammer OR Sentry=2 OR Damage=30
      Burrow, Bash, Dash, Glide OR Sword OR Hammer OR Damage=30
      # Use a bashnade to reach the sand bag above the sand pot. All the following paths are combination of different variations in order to optimize energy and health. Key parts are:
      # 1.a Take a dboost in the spikes on the way to the sand pot
      # 1.b Avoid the spikes on the way to the sand pot
      # 2.a Reach the bashable lantern, take a dboost in the spikes under the 2nd sand bag in order to reach it
      # 2.b Use a bashnade in order to land on the ledge above the sand bag and simply djump to the 2nd sand bag
      # 3.a Reach the second lantern and reach OutsideRuins from there
      # 3.b Use a bashnade to land in the spikes above the sand bag and djump from there to OutsideRuins
      Bash, Grenade=1, DoubleJump, Burrow OR TripleJump OR Dash OR Hammer  # 1.b + 2.a (but you can avoid the dboost) + 3.a
      Bash, Grenade=1, DoubleJump, Damage=30, Damage=30, Spear=2 OR Shuriken=2 OR Flash=2 OR Sentry=2  # 1.a + 2.a + 3.a
      Bash, Grenade=1, DoubleJump, Glide, Damage=30, Spear=2 OR Shuriken=2 OR Flash=2 OR Sentry=2  # 1.b (with glide) + 2.a + 3.a
      Bash, Grenade=1, DoubleJump, Sword, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # 1.b (with sword) + 2.a (energy to reach the lantern, avoid the dboost with an upslash) + 3.a (upslash to reach the lantern)
      Bash, Grenade=1, DoubleJump, Sentry=4, Damage=30  # 1.b (2 sentries) + 2.a + 3.a
      Bash, Grenade=2, DoubleJump, Damage=30, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # 1.a + 2.b + 3.a
      Bash, Grenade=2, DoubleJump, Sword  # 1.b + 2.b + 3.a
      Bash, Grenade=2, DoubleJump, Glide, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # 1.b + 2.b + 3.a
      Bash, Grenade=2, DoubleJump, Sentry=3  # 1.b (2 sentries) + 2.b + 3.a
      Bash, Grenade=3, DoubleJump, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # 1.b (bashnade near the spikes) + 2.b + 3.a
      Bash, Grenade=3, DoubleJump, Damage=30, Damage=30  # 1.a + 2.b + 3.b
      Bash, Grenade=3, DoubleJump, Glide  # 1.b + 2.b + 3.b (but you can avoid the dboost with glide)
      Bash, Grenade=3, DoubleJump, Sentry=2, Damage=30  # 1.b (2 sentries) + 2.b + 3.b
      Bash, Grenade=4, DoubleJump, Damage=30  # 1.b (bashnade near the spikes) + 2.b + 3.b
    unsafe:
      Bash, Grenade=1, DoubleJump, Glide OR Sword OR Shuriken=1 OR Sentry=2 OR Damage=30
      Bash, Grenade=2, DoubleJump, Spear=2 OR Shuriken=2 OR Flash=2 OR Sentry=2
      Bash, SentryJump=2, Damage=30, DoubleJump  # dboost in the spikes and sjump to the seed (use djump+upslash as well), sjump again to reach the lantern, djump on the sand ball, djump on the wall above and djump + use weapon to air stall to the pickup
      Bash, DoubleJump, TripleJump  # bash the mantis when it does its third jump
      Burrow, Bash, Sword OR Hammer  # Bash the gorlek when the Mantis is jumping above it. Bash it as well, air stall using weapons
      Burrow, Dash, Damage=30
      Burrow, DoubleJump, Dash, Damage=30
      Burrow, Bash, DoubleJump  # bash the lantern then a gorlek's projectile
      Burrow, DoubleJump, TripleJump, Hammer
  conn UpperWastes.RuinsApproach:
    moki: Burrow

anchor UpperWastes.OutsideRuins at 2014, -3609:  # Just outside the door
  refill Checkpoint

  quest UpperWastes.FlowersSeed: free

  pickup UpperWastes.WallOre:
    moki:
      Burrow, DoubleJump, Dash OR Glide
      Burrow, Dash, Glide
      Launch, DoubleJump OR Glide OR Burrow
    gorlek:
      Burrow, DoubleJump, Sword OR Hammer
      Burrow, Glide
      DoubleJump, TripleJump  # triple jump can spam climb the left wall
      DoubleJump, Glide
      Damage=30, Dash OR Glide OR Sword  # a suboptimal double jump gets stuck in the spikes
      Bash, Grenade=1, DoubleJump OR Dash OR Glide  # can either Bashglide or use the sand ball as ground
      SentryJump=1, Glide
      Launch
    kii:
      Bash, Grenade=1, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Blaze=1 OR Flash=1 OR Sentry=1
      Bash, Grenade=2
      Burrow, DoubleJump OR Sentry=3
      Damage=30, DoubleJump

  # Connection to NorthTP is useless since this anchor have the same conn/pickup but they need more skills than from OutsideRuins
  conn WindtornRuins.UpperRuinsDoor:
    moki: EastHollow.ForestsVoice, LowerReach.ForestsMemory, UpperDepths.ForestsEyes, WestPools.ForestsStrength
  conn UpperWastes.RuinsApproach:
    moki: Burrow

anchor WindtornRuins.UpperRuinsDoor at 2163, -3835:  # Just inside the door.
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  state WindtornRuins.RuinsLever:
    moki: Burrow, BreakWall=6, BreakWall=6
    unsafe: Burrow, Sentry=2 OR Grenade=1 OR Blaze=1
  state WindtornRuins.HeartBarrier:  # These are paths to go to the teleporter and break the corruption heart. But they can't originate from the teleporter anchor because after you broke the heart, you can't go to the teleporter again, which makes these paths not viable as connections to the teleporter. These paths are just about breaking the heart, so it doesn't matter if the paths can lock you out of the teleporter if you already have broken the heart, because then you have already broken the heart.
    moki, WindtornRuins.RuinsLever, BreakWall=16:
      Burrow, DoubleJump OR Dash OR Glide OR Launch
      Burrow, Bash, Grenade=1
    gorlek:
      # I'm making the following bold assumptions
      # 1. You're playing gorlek, so you know things.
      # 2. You're playing gorlek, so you can climb walls (REGARDLESS of FPS)
      # 3. You're playing gorlek, so you can hold right and burrow into the TP area
      WindtornRuins.RuinsLever, Burrow, BreakWall=16

  conn UpperWastes.OutsideRuins: free
  conn WindtornRuins.RuinsTP:  # connection FROM entrance TO tp at ANY TIME
    # this accounts for both situations of having broken the heart or not
    moki, WindtornRuins.RuinsLever:
      Burrow, Dash, DoubleJump
      Burrow, DoubleJump, Glide
      Burrow, Bash, Grenade=1, Glide
      Burrow, Launch
    gorlek, WindtornRuins.RuinsLever:
      Burrow, SentryJump=1
      Burrow, DoubleJump OR Dash OR Glide OR Sword  # Just hold right. Or if you drop down, some can recover jumping from the right wall and burrowing through the sand platform
      Burrow, Bash, Grenade=1  # Burrow through the sand platform to get up
  conn WindtornRuins.Escape:  # connection FROM entrance TO escape to support future paths of breaking the heart without reaching the teleporter
    moki: WindtornRuins.RuinsLever, WindtornRuins.HeartBarrier, Burrow
  conn WindtornRuins.LowerRuins:  # connection FROM entrance TO lower AFTER escape
    # if you completed the escape, there's a gap in the floor that you have to cross, but Burrow alone is enough to do so
    # Since Burrow solves this connection, it accounts for all paths to the escape revisit pickup
    moki: WindtornRuins.RuinsLever, WindtornRuins.HeartBarrier, WindtornRuins.Seir, Burrow

anchor WindtornRuins.RuinsTP at 2130, -3984:  # Windtorn Ruins teleporter.
  refill Full

  state WindtornRuins.HeartBarrier:  # Barrier next to the teleporter that stops you from getting the Heart.
    moki: BreakWall=16
  state NonGladesTeleporter: free

  conn Teleporters: free
  conn WindtornRuins.Escape:  # connection FROM tp TO escape
    # the gap after completing the escape locks you out of these paths, but it doesn't matter because they're only relevant for completing the uncompleted escape
    moki: WindtornRuins.HeartBarrier
  conn WindtornRuins.LowerRuins:  # connection FROM tp TO lower ruins AFTER escape
    # if you completed the escape, there's a gap in the floor that you have to cross
    # Since Burrow solves this connection, it accounts for all paths to the escape revisit pickup
    moki, WindtornRuins.HeartBarrier, WindtornRuins.Seir:
      DoubleJump OR Dash OR Glide OR Burrow OR Launch
      Bash, Grenade=1  # yes, this needs a bashgrenade path
    gorlek: WindtornRuins.HeartBarrier, WindtornRuins.Seir, Sword OR Hammer
  conn WindtornRuins.UpperRuinsDoor:
    moki, WindtornRuins.RuinsLever:
      # these account for both situations of having broken the heart or not
      Burrow, Bash, Grenade=1, DoubleJump OR Dash
      Burrow, Glide, DoubleJump OR Dash
      Burrow, Launch
      # these make you able to break the Heart and then use the resulting terrain
      WindtornRuins.HeartBarrier, Burrow, Bash, Grenade=1
      WindtornRuins.HeartBarrier, Burrow, Glide
    gorlek, WindtornRuins.RuinsLever:
      # these account for both situations of having broken the heart or not
      Burrow, Glide
      Burrow, Sword, DoubleJump OR Dash
      Burrow, DoubleJump, Dash, Hammer
      Burrow, SentryJump=1
      Burrow, Bash, Grenade=1

anchor WindtornRuins.Escape at 2021, -4026:
  refill Full

  # After you complete the escape, there's a gap in the floor to its right, making the location unreachable with skillsets
  # that would have reached it before completing the escape. That's why this has no outside connections; the paths to here
  # can softlock after achieving the EscapeComplete state, so this anchor is only safe as long as it does nothing else than handling that state.
  quest WindtornRuins.Seir:
    moki, WindtornRuins.HeartBarrier:
      Burrow, Dash, Grapple, DoubleJump OR Glide
      Burrow, DoubleJump, Glide, Grapple  # I think this is fine?
      Burrow, DoubleJump, Launch, Dash OR Glide
      Burrow, Grapple, Launch, Glide
    gorlek, WindtornRuins.HeartBarrier:
      Burrow, Grapple, DoubleJump, Damage=40, Sword OR Hammer
      Burrow, Grapple, Dash, Damage=40, Sword OR Hammer
      Burrow, Launch, DoubleJump OR Dash OR Glide OR Sword OR Hammer OR Damage=40

anchor WindtornRuins.LowerRuins at 1969, -4024:  # At the ancient map pedestal
  # requires escape to be done
  quest WindtornRuins.HandToHandComplete:
    moki: LowerWastes.HandToHandMapstone

  pickup WindtornRuins.EscapeRevisitEC:
    moki: WindtornRuins.Seir, Burrow

  conn WindtornRuins.Escape: free  # walk over the invisible sandworm
  conn WindtornRuins.RuinsTP:
    moki, WindtornRuins.HeartBarrier, WindtornRuins.Seir:
      Burrow, Dash, DoubleJump
      Burrow, DoubleJump, Glide
      Burrow, Bash, Glide, Grenade=2
      Launch
    gorlek, WindtornRuins.HeartBarrier, WindtornRuins.Seir:
      Burrow, Dash, Glide
      Burrow, DoubleJump, TripleJump
      Burrow, Bash, Grenade=1, DoubleJump OR Dash
      Burrow, Bash, Grenade=2
      Burrow, SentryJump=1, DoubleJump OR Dash
      Burrow, SentryJump=2
      DoubleJump, TripleJump, Dash
      DoubleJump, Bash, Grenade=2
  # connection to upper should be redundant with the conn to tp?
  conn LowerWastes.MinesEntrance:
    moki: Burrow, BreakWall=20

region WeepingRidge:
  moki: Danger=60, Regenerate
  gorlek: Regenerate
  kii: Regenerate
  unsafe: free

anchor WeepingRidge.Bottom at 1210, -3830:  # After crossing the portal to weeping ridge
  refill Checkpoint
  refill Health=1
  refill Energy=3:
    moki: BreakCrystal

  state WeepingRidge.ElevatorFightCompleted:
    moki, Combat=2xCrystalMiner+2xShieldCrystalMiner:
      DoubleJump, Dash OR Glide
      Bash, Grenade=1
      Launch
    gorlek: Combat=2xCrystalMiner+2xShieldCrystalMiner, DoubleJump OR SentryJump=1
    kii:
      Combat=2xCrystalMiner+2xShieldCrystalMiner, Dash OR Hammer
      Combat=2xCrystalMiner+2xShieldCrystalMiner, Sword, Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:
      Combat=2xCrystalMiner+2xShieldCrystalMiner, Sword  # upslash+downslash
      Combat=2xCrystalMiner+2xShieldCrystalMiner, Glide, Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1

  conn WeepingRidge.LaunchArea:
    moki, WeepingRidge.ElevatorFightCompleted:
      DoubleJump, Dash OR Glide
      Bash, Grenade=1
      Launch
    gorlek, WeepingRidge.ElevatorFightCompleted: DoubleJump OR SentryJump=1
    kii, WeepingRidge.ElevatorFightCompleted:
      Dash OR Hammer
      Sword, Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe: WeepingRidge.ElevatorFightCompleted, Glide OR Sword
  conn LowerWastes.WestTP:  # covers connections into woods
    moki: WindtornRuins.Seir, Burrow  # Seir to make it a safe path
    gorlek: Burrow  # won't softlock if you did the cat and mouse because you'll have unlocked the teleporter

anchor WeepingRidge.LaunchArea at 1189, -3716:  # After the portal at the top of the elevator
  refill Checkpoint
  refill Health=1

  pickup WeepingRidge.Ore:
    moki: Launch, Bash, DoubleJump OR Dash OR Glide
    gorlek:
      Launch, DoubleJump OR Dash OR Bash OR Glide
      Launch, Sword, Damage=20
    kii:  # launch path is redundant with AboveTree->Ore
      Bash, Dash
      Bash, DoubleJump, Damage=20, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # Damage is for weird laser patterns
      DoubleJump, TripleJump, Sword
    unsafe:
      SentryJump=2, DoubleJump, Bow=1, Damage=40
      SentryJump=2, DoubleJump, TripleJump OR Dash OR Glide  # Use weapon stall to reach the edge below the portal
      Bash, Glide  # wait on the left wall until the elemental gives you a shot to bash
      DoubleJump, TripleJump
      DoubleJump, Sword, Damage=40, Bow=1  # Reset your jump by slashing the elemental, pogo him to reach the wall above the portal, djump + upslash from under the Mine to reach the spikes

  conn WeepingRidge.AboveTree:
    moki:
      Glide
      Launch, Bash OR DoubleJump OR Dash
    gorlek:
      Launch, Bow=1
      Bash, Dash, Bow=1
      DoubleJump, Bow=1, Damage=40
      Bash, DoubleJump, TripleJump
      Bash, DoubleJump, Bow=1, Sword OR Hammer
      DoubleJump, TripleJump, Sword OR Hammer OR Dash
    kii:
      Launch
      Damage=40, DoubleJump OR Dash
      Bash, Dash
      Bash, DoubleJump, Sword OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1
      Sword, DoubleJump OR Dash  # Use sword on elemental to reset your djump/dash (don't use portal with dash)
      DoubleJump, Dash, Hammer OR Shuriken=1 OR Blaze=2 OR Flash=1 OR Sentry=1
    unsafe:
      Damage=40, Sword OR Hammer
      Dash, Hammer OR DoubleJump  # Dash against the ceiling to refresh your dash
  conn WillowsEnd.Entry:
    moki, WeepingRidge.ElevatorFightCompleted: Launch, DoubleJump, Dash OR Glide
    gorlek, WeepingRidge.ElevatorFightCompleted: Launch, DoubleJump OR Dash
    kii, WeepingRidge.ElevatorFightCompleted:
      Launch, Glide OR Sword OR Hammer OR Shuriken=2 OR Sentry=3
      Launch, Bash, Grenade=1
      Bash, Grenade=3, DoubleJump, TripleJump
    unsafe, WeepingRidge.ElevatorFightCompleted:
      Launch
      SentryJump=3, DoubleJump, TripleJump, Dash
      Bash, Grenade=3, DoubleJump
  conn WeepingRidge.Bottom:
    moki, WeepingRidge.ElevatorFightCompleted:
      Launch
      Bash, Grenade=1, DoubleJump
      DoubleJump, Dash, Glide
    gorlek, WeepingRidge.ElevatorFightCompleted:
      SwordSJump=1
      DoubleJump, TripleJump OR Dash OR Glide
    kii, WeepingRidge.ElevatorFightCompleted:
      Glide OR Dash OR DoubleJump
      Sword OR Hammer
      Sentry=5
      Bash, Grenade=2
    unsafe, WeepingRidge.ElevatorFightCompleted:
      Shuriken=3 OR Sentry=3

anchor WeepingRidge.AboveTree at 1344, -3791:  # The ledge above Launch tree
  refill Checkpoint

  pickup WeepingRidge.LaunchTree: free
  pickup WeepingRidge.PortalEX:
    moki: Launch
    unsafe:
      Bash, Grenade=1, DoubleJump, TripleJump, Damage=40  # take a dboost in the left spikes
      SwordSJump=2, Damage=40
      DoubleJump, TripleJump, Damage=40, Damage=80
  pickup WeepingRidge.SpikeClimbEX:
    moki: Launch, DoubleJump, Bow=2
    gorlek:
      Launch, Bow=1 OR Spear=1 OR Grenade=1 OR Damage=20
      Bash, Grenade=2, DoubleJump, TripleJump, Damage=40
      SentryJump=2, DoubleJump, TripleJump, Damage=40
    kii:
      Launch
      Bash, Grenade=2, DoubleJump, TripleJump
      Bash, Grenade=2, DoubleJump, Dash, Sword OR Hammer OR Shuriken=1 OR Flash=1 OR Sentry=1
    unsafe:  # may be inaccurate after moving paths to this anchor
      Bash, Grenade=3, DoubleJump
      SentryJump=3, DoubleJump, Bash OR Sword OR Damage=40
      SentryJump=2, DoubleJump, TripleJump, Dash  # Dash from the wall above the tree + tjump + weapon combo to reach the right platform
      DoubleJump, TripleJump, Sword, Dash OR Hammer OR Spear=1 OR Shuriken=1 OR Flash=1 OR Sentry=1  # pogo the mine near the tree | wasn't consistent enough for kii
  pickup WeepingRidge.Ore:
    moki: Launch, DoubleJump OR Dash OR Bash OR Glide
    gorlek: Launch
    kii:
      Bash, Grenade=2, Damage=20, DoubleJump OR Dash  # Damage for wonky lasers
      Bash, Grenade=1, DoubleJump, TripleJump, Damage=60  # 20 of the damage for wonky lasers
    unsafe:
      DoubleJump, TripleJump, Sword  # pogo the mines
      DoubleJump, TripleJump, Hammer, Damage=40

  conn WeepingRidge.LaunchArea:
    moki: Launch, Bash, Glide  # Glide is the only ability that really helps you outwait the laser attack
    gorlek:
      Launch, Bash
      Launch, DoubleJump, Dash  # this gives you good mobility to avoid the enemies
    kii:
      Launch, DoubleJump OR Dash OR Damage=20  # dboost on the mine inbetween the two elementals
    unsafe:
      Launch
      DoubleJump, TripleJump, Sword, Damage=40
      Bash, Grenade=2, DoubleJump, TripleJump
      Bash, Grenade=1, DoubleJump, TripleJump, Damage=40

region WillowsEnd:
  moki: Danger=60, Regenerate  # need more than 6 health and Regen to do ANYTHING in willow
  gorlek: Regenerate
  kii: Regenerate
  unsafe: free

anchor WillowsEnd.Entry at 495, -3951:  # At the lower door
  refill Checkpoint
  refill Energy=4:
    moki:
      BreakCrystal, Launch
      Bow=1
  # a lot of energy crystals not considered, mostly because they are on the way to hearts which aren't currently tracked

  # the paths are kind of inaccurate because the platform above the door has no anchor of its own

  state WillowsEnd.GrappleWheelsHeart:
    unsafe: ShurikenBreak=30, Launch

  pickup WillowsEnd.EntryEX:
    moki:
      DoubleJump, Bash, Grenade=2
      Launch
    gorlek:
      Bash, Grenade=2, Dash OR Sword OR Hammer
      Bash, Grenade=1, DoubleJump, TripleJump
      SentryJump=2, Damage=20  # Get hit by the offscreen mine
      SentryJump=1, DoubleJump, TripleJump
    unsafe:
      DoubleJump, TripleJump, Grapple, Dash
      Bash, Grenade=2

  conn WillowsEnd.InnerTP:
    moki: Launch, Bash, DoubleJump OR Dash OR Glide  # mine in the way, but I think it's managable
    gorlek:
      Launch, Bash, Sword OR Hammer OR Damage=40
      Bash, Grenade=2, DoubleJump, TripleJump, Damage=40  # Bash the elemental, tjump, bash its projectiles
      Bash, Grenade=3, DoubleJump, TripleJump
    unsafe:
      Launch, Sword  # Pogo the elemental
  conn WillowsEnd.GrappleHeart:
    moki:
      Grapple, Launch, DoubleJump, Dash
      Grapple, Launch, Glide
      WillowsEnd.GrappleWheelsHeart:
        Bash, Grenade=2, DoubleJump, Glide
        Launch
    gorlek:
      Launch, Dash OR Glide
      Launch, DoubleJump, Sword OR Damage=40
      Launch, Sword, Damage=40
      WillowsEnd.GrappleWheelsHeart:
        SwordSJump=2, DoubleJump  # weapon air stall (Hammer too hard for gorlek)
        Bash, Grenade=2, Sword, DoubleJump OR Dash
        Bash, Grenade=2, DoubleJump, Dash
        Bash, Grenade=3, DoubleJump OR Dash
    unsafe:
      Launch, Hammer OR Damage=40  # dboost in the spikes before the double lasers
      Bash, Grenade=1, Glide, DoubleJump, TripleJump, Grapple, Damage=20  # land on the floating platform, glide, climb the wall after the first wheel to pass the laser without taking damage. At the wheel next to the chakpoint, wjump on the wall next to the laser. Take a damage boost in the double laser.
      SentryJump=1, Glide, DoubleJump, TripleJump, Grapple, Damage=20  # Same as above
      WillowsEnd.GrappleWheelsHeart:
        Bash, Grenade=3  # bash glide
        SwordSJump=2, Dash  # weapon air stall
        SentryJump=2, DoubleJump  # weapon air stall (compatible with hammer)
        SwordSJump=1, DoubleJump  # djump, pogo the mine, djump+upslash to reach the floating platform
        Sword, DoubleJump, Bash, Grenade=1  # djump, pogo the mine, djump+upslash to reach the floating platform
        SentryJump=1, DoubleJump, Damage=20  # use the iframes from the mine to use the lava thingy as a platform then djump+weapon combo to the left floating platform
        Bash, Grenade=1, DoubleJump, Damage=20  # use the iframes from the mine to use the lava thingy as a platform then djump+weapon combo to the left floating platform
  conn WillowsEnd.BoulderHeartPath:
    moki:
      Launch
      Bash, Grenade=1, DoubleJump
    gorlek:
      DoubleJump, TripleJump, Glide
      Bash, Grenade=1, Dash
      Bash, Grenade=1, Damage=40, Glide OR Sword
      SentryJump=1, DoubleJump  # float with the weapon
      SentryJump=1, Damage=40, Dash OR Glide  # float with the weapon if needed

# checkpoint at 335, -3887, also with refill, also another refill on the way...

anchor WillowsEnd.GrappleHeart at 399, -3928:  # right next to the grapple wheels heart
  refill Checkpoint
  refill Energy=3:
    moki:
      BreakCrystal, Launch
      Bow=1
  refill Health=1

  state WillowsEnd.GrappleWheelsHeart:
    moki: BreakWall=30

  pickup WillowsEnd.PoisonfallHC:
    moki:
      Launch
      WillowsEnd.GrappleWheelsHeart, DoubleJump, Dash
    gorlek:
      DoubleJump, TripleJump
      DoubleJump, Dash, Damage=4
      WillowsEnd.GrappleWheelsHeart, DoubleJump OR Dash
      WillowsEnd.GrappleWheelsHeart, Bash, Grenade=1

  conn WillowsEnd.Entry:  # going backwards without breaking the heart has many weird spots, saving it for later difficulties
    moki, WillowsEnd.GrappleWheelsHeart:
      Glide, DoubleJump OR Dash
      Launch, DoubleJump OR Dash OR Glide
    gorlek, WillowsEnd.GrappleWheelsHeart:
      DoubleJump, TripleJump, Dash OR Sword OR Hammer
      Bash, Grenade=1, DoubleJump OR Dash OR Glide
      Launch, Sword OR Hammer

anchor WillowsEnd.BoulderHeartPath at 555, -3939:  # below the shortcut back from boulder heart
  refill Checkpoint
  refill Energy=3:
    moki: BreakCrystal

  # state WillowsEnd.BoulderHeart:
  #   moki: BreakWall=30, Launch, DoubleJump, Dash

  pickup WillowsEnd.SpikesOre:
    moki: Launch, Dash OR Glide
    gorlek:
      Launch, DoubleJump OR Sword OR Hammer OR Damage=40
      Grapple, DoubleJump, TripleJump, Dash OR Glide
      SentryJump=1, Damage=40, DoubleJump, TripleJump, Dash OR Glide  # damage because the maneuver is a bit tricky
      Bash, Grenade=1, Damage=40, DoubleJump, TripleJump, Dash OR Glide  # damage because the maneuver is a bit tricky
    unsafe:  # paths may not make sense after moving them from entry
      Bash, Grenade=2, DoubleJump, TripleJump, Dash
      SentryJump=1, Grapple, DoubleJump, TripleJump OR Dash  # land on the small floor after the portal then tjump+upslash
      SwordSJump=1, Grapple, DoubleJump, Glide  # land on the small floor after the portal then tjump+upslash
      SentryJump=2, DoubleJump, TripleJump OR Dash  # land on the small floor after the portal then tjump+upslash
      SwordSJump=2, DoubleJump, Glide  # land on the small floor after the portal then tjump+upslash
      HammerSJump=3, DoubleJump, Glide  # land on the small floor after the portal then tjump+upslash
  pickup WillowsEnd.EntryEX:
    gorlek:
      DoubleJump, TripleJump, Grapple, Glide  # use the right wheels then glide to the floating platform
      DoubleJump, TripleJump, Grapple, Dash, Sword OR Hammer  # use the right wheels then glide to the floating platform

  conn WillowsEnd.Entry:
    moki: DoubleJump OR Dash OR Launch
    gorlek:
      Glide OR Sword OR Hammer
      Bash, Grenade=2

anchor WillowsEnd.InnerTP at 422, -3864:  # The teleporter inside
  refill Full

  state NonGladesTeleporter: free

  pickup WillowsEnd.LupoMap:
    moki: SpiritLight=50, DoubleJump OR Dash OR Launch OR Bow=1
    gorlek: SpiritLight=50  # jump to trigger the mine, back off to avoid taking damages

  conn Teleporters: free
  conn WillowsEnd.Entry:
    moki:
      BreakWall=20, DoubleJump OR Dash OR Launch OR Bow=1  # open the portal shortcut
      DoubleJump, Dash
      Glide OR Launch
    gorlek:
      BreakWall=20  # jump to trigger the mine, back off to avoid taking damages
      Bash, Damage=40, DoubleJump OR Dash
      DoubleJump, TripleJump, Damage=40
  conn WillowsEnd.AboveInnerTP:
    moki:
      DoubleJump, Bash, Grenade=1, Dash OR Glide
      Launch, DoubleJump OR Dash
    gorlek:
      Launch, Glide OR Sword OR Hammer OR Damage=40
      Bash, Grenade=1, DoubleJump
      Bash, Grenade=1, BreakWall=20, Dash OR Glide OR Sword OR Hammer OR Damage=40
      Bash, Grenade=1, Dash, Damage=40
      SentryJump=1, Combat=CrystalMiner, DoubleJump, Dash OR Glide  # you can break the wall with the weapon
      SentryJump=1, Combat=CrystalMiner, Damage=40, DoubleJump OR Dash  # you can break the wall with the weapon
    unsafe:
      Launch  # wjump on the shortcut's breakable wall or launch from the other side
      Bash, Grenade=1, BreakWall=20
      DoubleJump, TripleJump, Dash, Damage=40, Combat=CrystalMiner  # if the shortcut is open, tjump + dash in the spikes

anchor WillowsEnd.AboveInnerTP at 530, -3844:  # at the lava pit before bash puzzle
  refill Checkpoint
  refill Energy=4:
    moki:
      BreakCrystal, Launch
      Bow=1, Combat=CrystalMiner OR Bash

  conn WillowsEnd.InnerTP:
    moki: Combat=CrystalMiner OR Bash OR Launch
    unsafe: free  # reload to despawn the gorlek
  conn WillowsEnd.East:
    moki:
      DoubleJump, Bash, Grenade=1, Dash OR Glide
      Launch, DoubleJump OR Dash
    gorlek:
      Launch, Glide OR Sword OR Hammer
      Bash, Grenade=1, DoubleJump OR Dash OR Glide
      Bash, DoubleJump, TripleJump, Dash OR Glide OR Sword OR Hammer
      Bash, DoubleJump, Dash, Glide OR Sword OR Hammer
      Bash, DoubleJump, Glide, Damage=20, Sword OR Hammer  # weapon stall leaves you vulnerable to the projectiles
      Bash, SwordSJump=1, DoubleJump OR Dash
      Bash, HammerSJump=1, DoubleJump, Dash
      Bash, SentryJump=1, Glide
    unsafe:
      Bash, DoubleJump OR Dash OR Glide  # Bash CrystalMiner to reach the wall before the elemental
      DoubleJump, TripleJump, Sword  # slash the element to reset your jumps, pogo it then sword jump + up slash to reach the left wall
      Launch

anchor WillowsEnd.East at 547, -3805:  # To the left of the redirect puzzle
  refill Checkpoint:  # at the redirect heart room
    moki: Launch
  refill Health=1:
    moki:
      Bash, DoubleJump OR Dash OR Glide
      Launch
    gorlek:
      Bash
      DoubleJump, TripleJump
    unsafe: Damage=20, Glide OR Dash OR Sword OR Hammer  # dboost through the laser
  refill Energy=4:
    moki:
      BreakCrystal, Bash, DoubleJump OR Glide
      Bow=1, Bash, Dash
      BreakCrystal, Launch
    gorlek:
      BreakCrystal, Bash
      BreakCrystal, DoubleJump, TripleJump
    unsafe:
      Damage=20, Sword OR Hammer
      Damage=20, Glide, Bow=1 OR Spear=1 OR Sentry=1 OR Shuriken=1 OR Grenade=1  # dboost through the laser
      Damage=20, Dash, Bow=1 OR Spear=1 OR Sentry=1 OR Shuriken=1 OR Grenade=1  # dboost through the laser

  # state WillowsEnd.RedirectHeart:
  #   moki: BreakWall=10, BreakWall=30, DoubleJump, Bash, Launch

  pickup WillowsEnd.RedirectEX:
    moki:
      BreakWall=10, Bash, Launch, DoubleJump OR Dash OR Glide
      Bash, Grenade=1, Launch
    gorlek:
      Launch, DoubleJump OR Dash OR Glide OR Sword OR Hammer
      Glide, DoubleJump, TripleJump, Bash, Damage=20, Sword OR Hammer  # redirect the projectile so it pass under the pickup, dboost in the double lasser at the left so you can re-entre the top portal. Glide under the pickup then bash. Upslash can help if needed
    unsafe: Launch

  conn WillowsEnd.AboveInnerTP:
    moki:
      Glide
      Bash, DoubleJump, Dash
      Launch, DoubleJump OR Dash OR Bash
    gorlek:
      Launch
      Bash, DoubleJump
      DoubleJump, Dash
      DoubleJump, TripleJump, Sword OR Hammer  # Sword/Hammer/Djump so don't need to add combat requirement
    unsafe:
      DoubleJump, Sword
      Dash, Bash OR Sword
  conn WillowsEnd.Upper:
    moki: Bash, Launch  # some other paths would be possible, but with how far back the last checkpoint is...
    gorlek:
      Launch
      Bash, DoubleJump
    unsafe:
      SwordSJump=1, DoubleJump, TripleJump, Damage=20  # sjump+ tjump to rech the right wall. dboost in the laser. tjump+ sword combo to reach the right wall. Pogo the elemental+tjump

# checkpoint at 614, -3836

anchor WillowsEnd.Upper at 499, -3748:  # At the upper door
  refill Checkpoint
  refill Energy=4:  # on the way to burrow heart
    gorlek, BreakCrystal:
      Bash OR Launch
      Combat=CrystalMiner, SentryJump=1
      Combat=CrystalMiner, DoubleJump, TripleJump

  # state WillowsEnd.BurrowHeart:
  #   moki, BreakWall=30:
  #     Burrow, DoubleJump, Dash, Bash, Grapple, Glide
  #     Burrow, Bash, Grapple, Launch, DoubleJump OR Glide

  # conn MiniBossFight:
  #   moki:
  #     Launch, DoubleJump
  #     Launch, Dash, Glide
  conn WillowsEnd.East:
    moki:
      Combat=CrystalMiner, DoubleJump OR Dash OR Glide
      Bash OR Launch
    gorlek: Damage=10, DoubleJump OR Dash OR Glide
    unsafe: Sword OR Hammer  # use weapon to combat the crystal miner
  conn WillowsEnd.West:
    moki: Launch
    gorlek:
      Bash, Grenade=1, DoubleJump, TripleJump, Damage=20  # damage because the lasers are hard
      Bash, Grenade=2, DoubleJump, Damage=20
      SentryJump=1, DoubleJump, TripleJump, Damage=20
    unsafe:
      Damage=90
      Bash, Grenade=1, DoubleJump, Dash
  conn WillowsEnd.UpperHeartPath:
    moki:
      Bash, Grenade=1, DoubleJump, Bow=1
      Bash, Grenade=2, DoubleJump
      Launch
    gorlek:
      SentryJump=1, DoubleJump
      Bash, Grenade=1, DoubleJump
    unsafe:
      SentryJump=1
      DoubleJump, TripleJump, Dash OR Hammer OR Sword  # tjump+dash/upslash on the left wall to start climbing it

anchor WillowsEnd.West at 437, -3840:  # To the left of the one-way above Lupo
  refill Checkpoint
  refill Energy=4:
    moki: BreakCrystal

  # state WillowsEnd.SpinLasersHeart:
  #   moki: BreakWall=30, Launch, DoubleJump OR Dash OR Glide

  conn WillowsEnd.InnerTP:
    moki: BreakWall=20, Combat=MaceMiner OR Bash
    moki: BreakWall=20, Launch
  conn WillowsEnd.Upper:  # this works because the portal wheel drops if you step below
    moki, BreakWall=10:
      Bash, Grenade=1, DoubleJump OR Dash OR Glide
      Launch
    gorlek, BreakWall=10:
      Bash, DoubleJump, TripleJump
      Bash, Grenade=1, DoubleJump  # the portal here is glitchy in patch 3
      Bash, Grenade=2
      Bash, SentryJump=1, DoubleJump
      Bash, SentryJump=2
      SentryJump=1, DoubleJump, TripleJump
    unsafe:
      BreakWall=10:
        Combat=MaceMiner, DoubleJump, TripleJump OR Damage=40  # get a wjump on the energy crystal
        Bash, DoubleJump, Hammer OR Sword OR Damage=40  # djump+upslash to avoid dboost on the boulder portal
        Bash, Hammer, Damage=40
      SentryJump=2
      Launch
  conn WillowsEnd.GlideRooms:
    moki: Launch
    gorlek:
      DoubleJump, Dash, Glide
      Damage=20
    unsafe: free

anchor WillowsEnd.GlideHeartPath at 374, -3824:  # one room before the first wind
  refill Checkpoint
  refill Health=1

  conn WillowsEnd.GlideRooms:
    moki: DoubleJump, Launch
    gorlek:
      Launch
      DoubleJump, TripleJump
      Combat=Mantis, SentryJump=1, DoubleJump OR Damage=20
  conn WillowsEnd.West: free  # :D

anchor WillowsEnd.GlideRooms at 360, -3861:  # At the first wind
  refill Checkpoint
  refill Energy=4:
    moki:
      BreakCrystal, Launch
      Bow=1

  # state WillowsEnd.GlideHeart:
  #   moki: BreakWall=30, DoubleJump, Glide, Launch

  pickup WillowsEnd.WindSpinOre:
    moki: Glide
    unsafe: Launch, DoubleJump, TripleJump

  conn WillowsEnd.GlideHeartPath: free  # :D

# checkpoint at 315, -3862
# checkpoint at 487, -3780

# anchor LaserRockFight:
#   refill Full
#   state WillowsEnd.ElementalDefeated:
#     moki: Combat=smth

anchor WillowsEnd.UpperHeartPath at 506, -3711:  # Right above the exit blocked by vines
  refill Checkpoint
  refill Energy=4:
    moki:
      BreakCrystal, Launch
      Bow=1

  state WillowsEnd.SpinPortalsHeart:
    moki, BreakWall=30:
      Bash, Grapple, Launch, DoubleJump, Dash
      Bash, Grapple, Launch, Glide
    gorlek, BreakWall=30:
      Launch, Grapple, Bash
      Launch, DoubleJump, TripleJump, Damage=40, Grapple OR Bash OR Glide
    unsafe, BreakWall=30:
      Launch, Damage=40, Bash OR Grapple
      Launch, DoubleJump
      DoubleJump, TripleJump, Grapple, Bash  # using the last portal without taking damage is hard

  pickup WillowsEnd.UpperLeftEX:
    moki: Grapple, Launch, DoubleJump OR Dash OR Glide
    gorlek:
      Launch, Grapple
      Launch, DoubleJump, TripleJump
      WillowsEnd.SpinPortalsHeart, Launch, DoubleJump, Glide, Bash
    unsafe:
      Launch, Bash, Damage=40
      Launch, DoubleJump
      DoubleJump, TripleJump, Grapple, Bash  # using the last portal without taking damage is hard, bash glide from the elemental after that
  pickup WillowsEnd.UpperRightEX:
    moki:
      Bash, Grapple, Launch, DoubleJump, Dash
      Bash, Grapple, Launch, Glide
    gorlek:
      Launch, Grapple, Bash
      Launch, DoubleJump, TripleJump, Damage=40, Grapple OR Bash OR Glide
      WillowsEnd.SpinPortalsHeart, Launch, Bash
      WillowsEnd.SpinPortalsHeart, Launch, DoubleJump, TripleJump
    unsafe:
      Launch, Grapple, Damage=40
      Launch, DoubleJump
      DoubleJump, TripleJump, Grapple, Bash  # using the last portal without taking damage is hard

  conn WillowsEnd.Upper: free

anchor Tokk:  # Tokk's talks
  quest GladesTown.HandToHandPouch:
    moki: EastHollow.HandToHandMap

anchor TwillenShop:
  quest GladesTown.TwillenGemQuest:
    moki: LowerWastes.EerieGemQI

  pickup TwillenShop.Overcharge:
    moki: SpiritLight=1200
  pickup TwillenShop.Wingclip:
    moki: SpiritLight=1200
  pickup TwillenShop.Swap:
    moki: SpiritLight=1200
  pickup TwillenShop.Vitality:
    moki: SpiritLight=1200
  pickup TwillenShop.Energy:
    moki: SpiritLight=1200
  pickup TwillenShop.Finesse:
    moki: SpiritLight=1200
  pickup TwillenShop.TripleJump:
    moki: SpiritLight=1200
  pickup TwillenShop.LightHarvest:
    moki: SpiritLight=1200

anchor OpherShop:  # Opher's offers
  pickup OpherShop.Spike:
    moki: SpiritLight=1200
  pickup OpherShop.SpiritSmash:
    moki: SpiritLight=1200
  pickup OpherShop.SpiritStar:
    moki: SpiritLight=1200
  pickup OpherShop.Blaze:
    moki: SpiritLight=1200
  pickup OpherShop.Sentry:  # used for keystones if necessary; filtered by gen
    moki: SpiritLight=1200
  pickup OpherShop.Teleport:
    moki: SpiritLight=1200
  pickup OpherShop.ShockSmash:
    moki: SpiritLight=1200
  pickup OpherShop.StaticStar:
    moki: SpiritLight=1200
  pickup OpherShop.ExplodingSpike:
    moki: SpiritLight=1200
  pickup OpherShop.RapidSentry:
    moki: SpiritLight=1200
  pickup OpherShop.ChargeBlaze:
    moki: SpiritLight=1200
  pickup OpherShop.WaterBreath:
    moki: InnerWellspring.WaterEscape, SpiritLight=1200

anchor TuleyShop at -173, -4139:
  quest GladesTown.RegrowTheGlades:
    moki: TuleyShop.SelaFlowers, TuleyShop.StickyGrass, TuleyShop.Lightcatchers, TuleyShop.BlueMoon, TuleyShop.SpringPlants, TuleyShop.LastTree

  state TuleyShop.LastTreeBranchRejected:  # written out the steps in case they give pickups
    moki: WoodsEntry.LastTreeBranch
  state TuleyShop.SelaFlowers:
    moki: UpperWastes.FlowersSeed
  state TuleyShop.StickyGrass:
    moki: EastPools.GrassSeed
  state TuleyShop.Lightcatchers:
    moki: UpperDepths.LightcatcherSeed
  state TuleyShop.BlueMoon:
    moki: InnerWellspring.BlueMoonSeed
  state TuleyShop.SpringPlants:
    moki: UpperReach.SpringSeed
  state TuleyShop.LastTree:
    moki: WoodsEntry.TreeSeed