function dashUp()
  celeste.SaveData.Instance.Assists.DashAssist = false
  celeste.Input.Rumble(celeste.RumbleStrength.Strong, celeste.RumbleLength.Medium)
  monocle.MInput.Disabled = true
  player.OverrideDashDirection = vector2(0, -1)
  player.StateMachine.Locked = false
  player.StateMachine.State = player:StartDash()
  player.Dashes = 0
  wait(0.1)
  while (player.Speed.Y < 0) do -- Waits till maddy stops moving up
    player.Dashes = 0
    celeste.Input.MoveY.Value = -1
    celeste.Input.MoveX.Value = 0
    wait()
  end
  player.OverrideDashDirection = nil
  player.StateMachine.State = 11
  player.StateMachine.Locked = true
  monocle.MInput.Disabled = false
  waitUntilOnGround()
end

function onBegin()
  makeUnskippable()
  disableRetry()
  disableMovement()

  say("dashless_ending1")
  wait(0.5)
  dashUp()
  wait(0.5)
  say("dashless_ending2")
  wait(0.2)
  walk(24,false,1,false)
  wait(0.25)
  jump(0.25)
  walk(8,false,1,true)
  wait(0.5)
  jump(1)
  walk(36,false,1,true)
  player.StateMachine.Locked = false
  wait(10)
end