Skip to content

Noita mod for teleporting to any boss, orb, and place of interest

Notifications You must be signed in to change notification settings

Kaedenn/noita-teleport

Repository files navigation

Waypoints & Teleport

This mod provides numerous teleport destinations and the ability to add your own.

BEWARE SPOILERS. You have been warned. This mod makes no attempt whatsoever to protect you from things you don't know.

Comes pre-built with numerous predefined destinations, including the primary orbs, all bosses, and the holy mountains.

Known Locations

  • All ten (eleven in New Game+) orbs in the main world.
  • All Holy Mountains in the main world.
  • All bosses.
  • Static item or perk locations (experimental wand, evil eye, essences, essence eaters, and more).
  • Noteworthy places of interest (sky temples, portal rooms and their destinations, and more).
  • The secret eye glyphs, assuming you have Disable Mod Restrictions.

Dependencies

This mod requires Noita-Dear-ImGui, which must be above this mod in the load order. Download and extract the archive into your Noita/mods folder.

This mod leverages (but does not require) Disable Mod Restrictions. Download and extract the archive into your Noita/mods folder. Note that Disable Mod Restrictions needs to be updated every time a new version of Noita is released.

Installation

If you don't have Noita-Dear-ImGui, download it and extract the archive into your Noita/mods folder. https:/dextercd/Noita-Dear-ImGui/releases

Next, download this repository and extract the archive into your Noita/mods folder. https:/Kaedenn/noita-teleport/archive/refs/heads/main.zip

Because Noita-Dear-ImGui is a mod with compiled code, it requires enabling the unsafe mods option. This is also why it's not available via the Steam workshop. Also, Noita-Dear-ImGui needs to be placed above this mod in the mod list so that it gets loaded before this mod.

Custom Locations

Mods can add their own custom teleport locations by leveraging the public API. Here's an example:

function OnWorldInitialized()
    dofile_once("mods/kae_waypoint/data/kae/poi.lua")
    add_poi("My Special Location", 1000, 2000)

    add_grouped_poi("My Locations", "Location One", 2000, 2000)
    add_grouped_poi("My Locations", "Location Two", 2000, 4000)
    add_grouped_poi("My Locations", "Location Three", 2000, 4000, 1) -- East 1
end

Custom Location API

The mods/kae_waypoint/data/kae/poi.lua file exports a few functions for adding (or removing) custom locations.

For both add functions, x and y must be numbers. world, if specified, must be a number with 0 denoting the center world, positive numbers denoting East worlds, and negative numbers denoting West worlds.

If world is specified, then the following calculation is performed to obtain the final coordinates:

world_width = BiomeMapGetSize() * 512
final_x = input_x + world_width * input_world
final_y = input_y

There is no checking to ensure the input_x location is within the main world. This mod simply converts the world offset to a change in X coordinate and adds that to the X coordinate.

add_poi(name, x, y, world=nil) -> boolean, error_message:string - Add a single item to the Places menu
  • name type Label: POI display name; see Labels below for structure.
  • x type number: X pixel location
  • y type number: Y pixel location
  • world type number: World number for world-relative locations; optional

Returns true, nil on success.

Returns false, error_message:string on failure if the POI is invalid (parameters have incorrect types).

Returns false, nil if the teleport destination duplicates an existing location. This is so that mods can add their custom locations upon mod startup without needing to check if they already exist.

add_grouped_poi(group, name, x, y, world=nil) -> boolean, error_message:string - Add a grouped item to the Places menu
  • group type Label: Group name; menu display text
  • name type Label: POI display name; see Labels below for structure.
  • x type number: X pixel location
  • y type number: Y pixel location
  • world type number: World number for world-relative locations; optional

Returns true, nil on success.

Returns false, error_message:string on failure if the POI is invalid (parameters have incorrect types).

Returns false, nil if the teleport destination duplicates an existing location. This is so that mods can add their custom locations upon mod startup without needing to check if they already exist.

remove_poi(name) -> boolean - Remove teleport destination(s) by name
  • name type string or Label: POI display name; see Labels below for structure.

Returns true if the operation actually removed one or more locations.

remove_poi_group(group) -> boolean - Remove a teleport destination group
  • group type string: Group name; menu display text

Returns true if the operation actually removed one or more locations.

remove_poi_at(x, y, world) -> boolean - Remove a teleport destination by location

This function converts world-relative coordinates (if world ~= 0 and world ~= nil) to absolute coordinates.

  • x type number: X pixel location
  • y type number: Y pixel location
  • world type number: World number for world-relative locations; optional

Returns true if the operation actually removed one or more locations.

force_places_update() - Force a UI refresh

This function forces a refresh of the entire UI and a recalculation of all teleport destinations.

Labels

The group and name parameters to add_poi and add_grouped_poi accept both strings and tables to facilitate localization. Examples:

add_poi("My $biome_coalmine place", x, y)
add_poi({"$biome_winter"}, x, y)
add_poi({"$biome_west", {"$biome_winter"}}, x, y)

Planned features

  • GUI fallback if Noita-Dear-ImGui isn't installed or isn't available (help wanted!).
  • Indication whether or not the Cauldron contains void liquid if generated that day. Note that this won't necessarily mean the Cauldron will contain void liquid if the chunk was generated on a prior day. See utility/get_cauldron_bit.py.

About

Noita mod for teleporting to any boss, orb, and place of interest

Resources

Stars

Watchers

Forks

Packages

No packages published