From 2bc59c44160d15ef6b5238b951d24cb71a3939fb Mon Sep 17 00:00:00 2001 From: Peiikai <339721950+peiikai@users.noreply.github.com> Date: Thu, 12 Nov 2026 18:55:59 -0600 Subject: [PATCH 1/8] Spoiler log: route first, readable names, entrance and room maps, HTML page Presentation only: placements, logic and seed IDs are unchanged (spoiler.txt byte-identical on every test seed). - Route: only the items needed to win, in an order a player can follow (stay in a dungeon while its keys open the next room). Built from the Hint Sheet's steps and checked against the seed's logic (tools/rando/route.py, route.json). The old sphere list stays below as "Everything useful step by step". - Items by area use the tracker's check names and the game's place names, areas in map order, dungeons by number; rupees, refills and traps fold into "Small items (n)". Room shuffle: checks sit under the dungeon they are in now, with their room. A second Sword, Shield or Bracelet reads "(2nd)". - Entrances: fixed missing section for seeds whose folder name differs from the seed ID; doors written plainly (tools/rando/entrance_names.py). New "Dungeon rooms" section for room shuffle. - In game: "Useful items only" and, for the running seed, "Hide checked"; collected checks are greyed and struck out (tracker_check_collected). - rando//spoiler.html: the same log for a browser, with search and filter. - Town Tool Shop's second / third shelf items and the D6 pot chest get proper names; every new text in all 11 menu languages. Co-Authored-By: Claude Opus 5.5 --- runtime/ui/lang/de.inc | 620 ++++++++++++++++++++++------------ runtime/ui/lang/es.inc | 620 ++++++++++++++++++++++------------ runtime/ui/lang/fr.inc | 620 ++++++++++++++++++++++------------ runtime/ui/lang/it.inc | 620 ++++++++++++++++++++++------------ runtime/ui/lang/ja.inc | 620 ++++++++++++++++++++++------------ runtime/ui/lang/ko.inc | 620 ++++++++++++++++++++++------------ runtime/ui/lang/nl.inc | 620 ++++++++++++++++++++++------------ runtime/ui/lang/pt-BR.inc | 620 ++++++++++++++++++++++------------ runtime/ui/lang/ru.inc | 620 ++++++++++++++++++++++------------ runtime/ui/lang/zh-Hans.inc | 620 ++++++++++++++++++++++------------ runtime/ui/lang/zh-Hant.inc | 620 ++++++++++++++++++++++------------ runtime/ui/spoiler_view.mm | 176 ++++++++-- runtime/ui/tracker_overlay.mm | 18 + tools/menu_strings.py | 20 +- tools/rando/check_names.py | 5 +- tools/rando/entrance_names.py | 75 ++++ tools/rando/las_headless.py | 6 + tools/rando/route.py | 184 ++++++++++ tools/rando/spoiler_view.py | 512 +++++++++++++++++++++++----- tools/test_ios_python.sh | 5 +- 20 files changed, 5263 insertions(+), 2558 deletions(-) create mode 100644 tools/rando/entrance_names.py create mode 100644 tools/rando/route.py diff --git a/runtime/ui/lang/de.inc b/runtime/ui/lang/de.inc index 81d187474..28f00541d 100644 --- a/runtime/ui/lang/de.inc +++ b/runtime/ui/lang/de.inc @@ -226,13 +226,9 @@ {"Appearance", "Aussehen"}, {"Layout", "Layout"}, {"Follow thumb", "Folgt dem Daumen"}, -{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "An: Er kommt dorthin, wo dein Daumen landet, überall unten links. Aus: Er bleibt, wo er ist (verschieben unter Touch-Layout bearbeiten)."}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it with the Layout button).", "An: Er kommt dorthin, wo dein Daumen landet, überall unten links. Aus: Er bleibt, wo er ist (verschieben mit dem Layout-Knopf)."}, {"Layout button", "Layout-Knopf"}, {"A button at the top, next to the menu button, that lets you move and resize the on-screen buttons.", "Ein Knopf oben neben dem Menüknopf, mit dem du die Bildschirmknöpfe verschieben und ihre Größe ändern kannst."}, -{"Load a save first.", "Lade zuerst einen Spielstand."}, -{"Edit touch layout", "Touch-Layout bearbeiten"}, -{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Verschiebe die Bildschirmknöpfe, ändere ihre Größe oder blende sie aus, direkt über dem Spiel. Verfügbar während des Spielens."}, {"Reset touch layout", "Touch-Layout zurücksetzen"}, {"Puts every on-screen button back in its place, at its size, shown.", "Setzt jeden Bildschirmknopf an seinen Platz und auf seine Größe zurück und blendet ihn ein."}, // runtime/ui/difficulty.mm @@ -691,6 +687,7 @@ {"The game's echo in caves, dungeons and big rooms.", "Das Echo des Spiels in Höhlen, Labyrinthen und großen Räumen."}, {"LAS Recomp menu sounds", "LAS-Recomp-Menütöne"}, {"Sounds when you move around and pick things in LAS Recomp's menus.", "Töne beim Navigieren und Auswählen in den Menüs von LAS Recomp."}, +{"Load a save first.", "Lade zuerst einen Spielstand."}, {"Quit", "Beenden"}, {"Reset Game", "Spiel zurücksetzen"}, {"Progress since your last save is lost.", "Fortschritt seit dem letzten Speichern geht verloren."}, @@ -1090,6 +1087,8 @@ {"Reveal spoilers", "Spoiler zeigen"}, {"Search items and places", "Items und Orte suchen"}, {"Search the spoiler log", "Spoiler-Log durchsuchen"}, +{"Useful items only", "Nur nützliche Items"}, +{"Hide checked", "Erledigte ausblenden"}, // runtime/ui/tracker_overlay.mm {"Seashells", "Muscheln"}, {"%d Small Keys", "%d Kleine Schlüssel"}, @@ -1122,7 +1121,6 @@ {"needs %s +%d", "braucht %s +%d"}, {"Filter: %s", "Filter: %s"}, {"In logic now", "Jetzt in Logik"}, -{"Hide checked", "Erledigte ausblenden"}, {"Filters", "Filter"}, {"Room %c%d", "Raum %c%d"}, {"trick logic", "Trick-Logik"}, @@ -1177,9 +1175,9 @@ {"This is where Manbo's Mambo drops you. You can't warp here directly.", "Hier setzt dich Manbos Mambo ab. Direkt hierher teleportieren geht nicht."}, {"%d places", "%d Orte"}, {"Load a save to warp.", "Lade einen Spielstand, um zu teleportieren."}, +{"Places", "Orte"}, {"Search", "Suchen"}, {"Search places...", "Orte suchen ..."}, -{"Places", "Orte"}, {"Link is here", "Link ist hier"}, // warp_data.h {"Dungeons", "Labyrinthe"}, @@ -1306,28 +1304,112 @@ {"Building game files (%s tasks)", "Spieldateien werden erstellt (%s Aufgaben)"}, {"Triforce hunt: %s", "Triforce-Jagd: %s"}, // spoiler_view.py -{"Settings: %s", "Einstellungen: %s"}, -{"Walkthrough", "Lösungsweg"}, -{"Items by area", "Items nach Gebiet"}, -{"Starting items: %s", "Start-Items: %s"}, +{"Route", "Route"}, +{"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Nur, was du brauchst, um den Seed zu schaffen. Jeder Schritt ist mit den Items der vorherigen Schritte erreichbar."}, +{"Finish", "Abschluss"}, +{"Everything useful step by step", "Alles Nützliche, Schritt für Schritt"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Jeder Schritt ist mit dem machbar, was du nach den vorigen Schritten hattest (innerhalb eines Schritts in beliebiger Reihenfolge)."}, {"Only items that open things up are listed; rupees", "Gelistet sind nur Items, die etwas freischalten; Rubine"}, {"traps and similar are left out.", "Fallen und Ähnliches fehlen."}, -{"Finish", "Abschluss"}, -{"With all eight instruments", "Mit allen acht Instrumenten"}, -{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "spiel die Ballade vom Windfisch am Ei auf den Taltal-Höhen."}, -{"(No walkthrough", "(Kein Lösungsweg"}, -{"this seed has no request.json to recompute it.)", "dieser Seed hat keine request.json, um ihn neu zu berechnen.)"}, +{"Items by area", "Items nach Gebiet"}, +{"Dungeon rooms", "Labyrinth-Räume"}, +{"Where each moved room is now and where it came from.", "Wo jeder verschobene Raum jetzt liegt und woher er kommt."}, {"Entrances", "Eingänge"}, -{"%s entrance leads into %s", "Eingang %s führt in %s"}, -{"%s:", "%s:"}, {"Doors", "Türen"}, -{"door -> interior it now leads into", "Tür -> Innenraum, in den sie jetzt führt"}, +{"each door and where it now leads", "jede Tür und wohin sie jetzt führt"}, +{"Settings: %s", "Einstellungen: %s"}, +{"(This seed has no step list.)", "(Dieser Seed hat keine Schrittliste.)"}, +{"%s entrance leads into %s", "Eingang %s führt in %s"}, +{"Unchanged (%s)", "Unverändert (%s)"}, {"Exits", "Ausgänge"}, -{"interior -> where leaving it puts you", "Innenraum -> wo du beim Verlassen landest"}, +{"each way out and where it puts you", "jeder Ausgang und wohin er dich bringt"}, +{"Starting items: %s", "Start-Items: %s"}, +{"%s:", "%s:"}, +{"Small items (%s)", "Kleine Items (%s)"}, {"%s - enter through %s's entrance", "%s - Eingang von %s nehmen"}, {"%s's Soul", "Seele von %s"}, {"%s' Soul", "Seele von %s"}, +{"room %s", "Raum %s"}, +{"The last of the %s Triforce pieces you need ends the game.", "Das letzte der %s nötigen Triforce-Teile beendet das Spiel."}, +{"2nd", "2."}, +{"shelf", "Regal"}, +{"second item", "zweites Item"}, +{"third item", "drittes Item"}, +{"west side door", "Tür auf der Westseite"}, +{"east side door", "Tür auf der Ostseite"}, +{"Fire cave", "Feuerhöhle"}, +{"north door", "Nordtür"}, +{"south door", "Südtür"}, +{"Wind Fish's egg", "Windfisch-Ei"}, +{"rooster house", "Gockel-Haus"}, +{"Telephone booth by Turtle Rock", "Telefonhäuschen am Schildkrötenfelsen"}, +{"Mad Batter well", "Brunnen der Verrückten Fledermaus"}, +{"Tal Tal crossing cave", "Taltal, Übergangshöhle"}, +{"west door", "Westtür"}, +{"east door", "Osttür"}, +{"Mountain cave", "Berghöhle"}, +{"bottom door", "Tür ganz unten"}, +{"top door", "Tür ganz oben"}, +{"ledge door", "Tür am Vorsprung"}, +{"Papahl's cave", "Papahls Höhle"}, +{"lower door", "untere Tür"}, +{"upper door", "obere Tür"}, +{"Bird Key cave", "Adlerschlüssel-Höhle"}, +{"Five chest cave", "Fünf-Truhen-Höhle"}, +{"Five chest game", "Fünf-Truhen-Spiel"}, +{"exit door", "Ausgangstür"}, +{"Rainbow cave", "Regenbogenhöhle"}, +{"outer west door", "äußere Westtür"}, +{"inner west door", "innere Westtür"}, +{"inner east door", "innere Osttür"}, +{"outer east door", "äußere Osttür"}, +{"Fairy fountain", "Quelle der Großen Fee"}, +{"Tal Tal east", "Taltal Ost"}, +{"Cave to Eagle's Tower", "Höhle zur Adlerfestung"}, +{"Cave by Angler's Tunnel", "Höhle beim Wundertunnel"}, +{"Damp cave", "Feuchte Höhle"}, +{"Raft cave", "Floß-Höhle"}, +{"Telephone booth", "Telefonhäuschen"}, +{"Moblin cave", "Moblin-Höhle"}, +{"Dampe's house", "Boris' Hütte"}, +{"Rapids Ride raft shop", "Floß-Verleih an den Stromschnellen"}, +{"Mysterious Forest", "Zauberwald"}, +{"north cave", "Nordhöhle"}, +{"Kanalet tunnel", "Kanalet-Tunnel"}, +{"Telephone booth by Kanalet Castle", "Telefonhäuschen beim Schloss Kanalet"}, +{"roof west door", "Westtür auf dem Dach"}, +{"roof east door", "Osttür auf dem Dach"}, +{"front door", "Vordertür"}, +{"Cave south of Kanalet Castle", "Höhle südlich von Schloss Kanalet"}, +{"Forest crossing cave", "Kreuzungshöhle im Wald"}, +{"forest", "Wald"}, +{"north side door", "Tür auf der Nordseite"}, +{"Ukuku cave", "Urunga-Höhle"}, +{"Ukuku Prairie north", "Urunga-Steppe Nord"}, +{"Ukuku Prairie west", "Urunga-Steppe West"}, +{"Cave to Face Shrine", "Höhle zum Maskentempel"}, +{"Fairy fountain by the Armos maze", "Quelle der Großen Fee beim Armos-Labyrinth"}, +{"Flying Rooster's grave", "Grab des Fliegenden Gockels"}, +{"River crossing cave", "Höhle am Flussübergang"}, +{"Armos maze cave", "Höhle im Armos-Labyrinth"}, +{"BowWow's kennel", "Komets Hundehütte"}, +{"Marin and Tarin's house", "Marin & Tarins Zuhause"}, +{"Mabe Village library", "Dorfbücherei in Mövendorf"}, +{"Cliff cave by the bay", "Klippenhöhle an der Bucht"}, +{"plateau door", "Tür auf dem Plateau"}, +{"Cave behind Richard's villa", "Höhle hinter Richards Villa"}, +{"rabbit house", "Haus der Hasen"}, +{"Zora's house", "Haus des Zoras"}, +{"bombed cave", "gesprengte Höhle"}, +{"Lanmola cave", "Lanmola-Höhle"}, +{"east dive spot", "östliche Tauchstelle"}, +{"west dive spot", "westliche Tauchstelle"}, +{"Sale's banana house", "Bananenhändler"}, +{"bay", "Bucht"}, +{"Tunnel to the bay Mad Batter", "Tunnel zur Verrückten Fledermaus an der Bucht"}, +{"Mermaid statue", "Nixenstatue"}, +{"Boomerang cave", "Bumerang-Höhle"}, +{"Ghost's house", "Haus des Gespensts"}, {"Signpost Maze", "Schilderwald"}, {"Ancient Ruins", "Alte Ruinen"}, {"west", "West"}, @@ -1338,98 +1420,180 @@ {"50 Rupees", "50 Rubine"}, {"100 Rupees", "100 Rubine"}, {"300 Rupees", "300 Rubine"}, +{"1 Rupee", "1 Rubin"}, {"Trap!", "Falle!"}, {"Frog Song of Soul", "Krötenrap"}, {"Chamber Stone", "Kammerstein"}, +{"Triforce piece", "Triforce-Teil"}, {"Beach chest", "Truhe am Strand"}, +{"Chest on the beach", "Truhe am Strand"}, {"Taltal entrance chest", "Taltal, Truhe am Eingang"}, +{"chest at the entrance", "Truhe am Eingang"}, {"Taltal east left chest", "Taltal Ost, linke Truhe"}, +{"left chest", "linke Truhe"}, {"Dream shrine right", "Traumschrein rechts"}, +{"right", "rechts"}, {"Armos cave", "Armos-Höhle"}, {"Goponga cave left", "Schleimsumpf-Höhle links"}, +{"left", "links"}, {"Goponga cave right", "Schleimsumpf-Höhle rechts"}, {"Ukuku cave west chest", "Urunga-Höhle West, Truhe"}, +{"west chest", "Truhe West"}, {"Ukuku cave east chest", "Urunga-Höhle Ost, Truhe"}, +{"east chest", "Truhe Ost"}, {"Kanalet south cave", "Höhle südlich von Kanalet"}, {"Swamp chest", "Truhe im Sumpf"}, +{"Chest in Goponga Swamp", "Truhe im Schleimsumpf"}, {"Taltal left ascent cave", "Taltal, Höhle am linken Aufstieg"}, +{"cave on the left climb", "Höhle am linken Aufstieg"}, {"Taltal ledge chest", "Taltal, Truhe auf dem Sims"}, +{"chest on the ledge", "Truhe auf dem Sims"}, {"Taltal 5 chest puzzle", "Taltal, 5-Truhen-Rätsel"}, +{"five chest game", "Spiel mit fünf Truhen"}, {"Taltal west chest", "Taltal West, Truhe"}, {"Villa cave", "Höhle bei der Villa"}, +{"Cave by the villa", "Höhle bei der Villa"}, {"Woods crossing cave chest", "Wald, Kreuzungshöhle, Truhe"}, +{"chest", "Truhe"}, {"Woods north cave chest", "Wald, Höhle Nord, Truhe"}, +{"Forest north cave", "Höhle im Nordwald"}, {"Woods south chest", "Wald, Truhe Süd"}, +{"south chest", "Truhe Süd"}, {"Woods north chest", "Wald, Truhe Nord"}, +{"north chest", "Truhe Nord"}, {"Fishing", "Angeln"}, +{"Fishing pond", "Angelteich"}, +{"50 points", "50 Punkte"}, {"Fishing orange", "Angeln: oranger Fisch"}, +{"orange fish", "oranger Fisch"}, {"Fishing loose", "Angeln: loses Item"}, +{"loose item", "loses Item"}, +{"100 points", "100 Punkte"}, +{"150 points", "150 Punkte"}, {"Fishing cheep cheep", "Angeln: Cheep-Cheep"}, +{"Cheep Cheep", "Cheep-Cheep"}, {"Fishing ol baron", "Angeln: Herr des Teichs"}, +{"Ol' Baron", "Herr des Teichs"}, {"Rapids race", "Floßrennen"}, +{"race under 45 s", "Rennen unter 45 s"}, +{"race under 35 s", "Rennen unter 35 s"}, +{"race under 30 s", "Rennen unter 30 s"}, {"Rapids middle island", "Stromschnellen, mittlere Insel"}, +{"middle island", "mittlere Insel"}, {"Rapids west island", "Stromschnellen, westliche Insel"}, +{"west island", "westliche Insel"}, {"Dampe page", "Boris, Seite"}, +{"Dampe", "Boris"}, +{"first page", "erste Seite"}, {"Dampe heart challenge", "Boris, Herz-Herausforderung"}, +{"Dampe's heart challenge", "Boris' Herz-Herausforderung"}, +{"second page", "zweite Seite"}, {"Dampe bottle challenge", "Boris, Flaschen-Herausforderung"}, +{"Dampe's bottle challenge", "Boris' Flaschen-Herausforderung"}, {"Dampe final", "Boris, letzte Herausforderung"}, +{"Dampe's final challenge", "Boris' letzte Herausforderung"}, {"Walrus", "Walross"}, {"Ghost reward", "Belohnung des Gespensts"}, +{"Ghost's reward", "Belohnung des Gespensts"}, +{"song", "Lied"}, {"Manbo", "Manbo"}, {"Mamu", "Wart"}, {"Mad batter bay", "Verrückte Fledermaus (Bucht)"}, +{"Mad Batter", "Verrückte Fledermaus"}, {"Mad batter taltal", "Verrückte Fledermaus (Taltal)"}, {"Mad batter woods", "Verrückte Fledermaus (Wald)"}, {"Invisible zora", "Unsichtbarer Zora"}, +{"Invisible Zora", "Unsichtbarer Zora"}, {"Goriya trader", "Goriya (Tausch)"}, +{"Goriya", "Goriya"}, +{"trade", "Tausch"}, {"Mamasha", "Mamasha"}, {"Ciao ciao", "Schnüppchen"}, +{"Ciao Ciao", "Schnüppchen"}, {"Sale", "Erwin"}, {"Kiki", "Kiki"}, +{"Kiki the monkey", "Kiki, der Affe"}, {"Tarin ukuku", "Tarin in der Urunga-Steppe"}, +{"Tarin at the beehive", "Tarin am Bienenstock"}, {"Chef bear", "Küchenchef Bär"}, +{"Chef Bear", "Küchenchef Bär"}, {"Papahl", "Papahl"}, {"Christine trade", "Christine (Tausch)"}, +{"Christine", "Christine"}, {"Christine grateful", "Christine (Dankeschön)"}, +{"thank-you gift", "Dankeschön"}, {"Mr write", "Dr. Wright"}, +{"Mr. Write", "Dr. Wright"}, {"Grandma yahoo", "Oma Jaja"}, +{"Grandma Yahoo", "Oma Jaja"}, +{"broom", "Besen"}, {"Bay fisherman", "Angler an der Bucht"}, +{"Fisherman under the bridge", "Angler unter der Brücke"}, {"Mermaid martha", "Nixe in der Zwergenbucht"}, +{"Martha the mermaid", "Nixe"}, {"Mermaid cave", "Nixenhöhle"}, {"Lanmola", "Lanmolas"}, {"Armos knight", "Armos-Ritter"}, +{"Armos Knight", "Armos-Ritter"}, {"Washed up", "Angespült"}, +{"Washed up on the beach", "Am Strand angespült"}, {"Dream shrine left", "Traumschrein links"}, {"Taltal rooster cave", "Taltal, Gockel-Höhle"}, +{"cave by the rooster", "Höhle beim Gockel"}, {"Woods loose", "Wald, loses Item"}, {"Pothole final", "Schicksalsacker, letztes Loch"}, +{"last hole", "letztes Loch"}, {"5 seashell reward", "Belohnung für 5 Muscheln"}, +{"5 shells", "5 Muscheln"}, {"15 seashell reward", "Belohnung für 15 Muscheln"}, +{"15 shells", "15 Muscheln"}, {"30 seashell reward", "Belohnung für 30 Muscheln"}, +{"30 shells", "30 Muscheln"}, {"40 seashell reward", "Belohnung für 40 Muscheln"}, +{"40 shells", "40 Muscheln"}, {"50 seashell reward", "Belohnung für 50 Muscheln"}, +{"50 shells", "50 Muscheln"}, {"Animal village northwest", "Zoodorf Nordwest"}, +{"Northwest of Animal Village", "Nordwestlich vom Zoodorf"}, {"Animal village cave", "Höhle im Zoodorf"}, +{"Cave by Animal Village", "Höhle beim Zoodorf"}, {"Taltal entrance blocks", "Taltal, Blöcke am Eingang"}, +{"blocks at the entrance", "Blöcke am Eingang"}, {"North wasteland", "Fratzenwald Nord"}, +{"North of Tabahl Wasteland", "Nördlich vom Fratzenwald"}, {"Desert cave", "Wüstenhöhle"}, +{"Cave in Yarna Desert", "Höhle in der Durstwüste"}, {"Graveyard cave", "Friedhofshöhle"}, +{"Cave under the Cemetery", "Höhle unter dem Friedhof"}, {"Mabe well", "Brunnen in Mövendorf"}, {"Ukuku cave west loose", "Urunga-Höhle West, loses Item"}, +{"west item", "Item West"}, {"Ukuku cave east loose", "Urunga-Höhle Ost, loses Item"}, +{"east item", "Item Ost"}, {"Rapids ascent cave", "Stromschnellen, Höhle am Aufstieg"}, +{"cave on the climb", "Höhle am Aufstieg"}, {"Taltal crossing cave", "Taltal, Übergangshöhle"}, +{"crossing cave", "Übergangshöhle"}, {"Taltal west escape", "Taltal West, Ausweg"}, +{"way out", "Ausweg"}, {"Above turtle rock", "Über dem Schildkrötenfelsen"}, +{"Ledge above Turtle Rock", "Sims über dem Schildkrötenfelsen"}, {"Pothole north", "Schicksalsacker Nord"}, +{"north", "Nord"}, {"Woods crossing cave loose", "Wald, Kreuzungshöhle, loses Item"}, +{"item", "Item"}, {"Woods north cave loose", "Wald, Höhle Nord, loses Item"}, {"Diamond island", "Diamanteninsel"}, {"Kanalet crow", "Kanalet, Krähe"}, +{"crow", "Krähe"}, {"Kanalet mad bomber", "Kanalet, Bombenleger"}, +{"Mad Bomber", "Bombenleger"}, {"Kanalet kill room", "Kanalet, Kampfraum"}, +{"fight room", "Kampfraum"}, {"Kanalet bombed guard", "Kanalet, weggesprengte Wache"}, +{"bombed guard", "weggesprengte Wache"}, {"Kanalet final guard", "Kanalet, letzte Wache"}, +{"last guard", "letzte Wache"}, {"Owl statue moblin cave", "Uhu-Statue, Moblin-Höhle"}, {"Owl statue pothole", "Uhu-Statue, Schicksalsacker"}, {"Owl statue above cave", "Uhu-Statue über der Höhle"}, @@ -1438,8 +1602,222 @@ {"Owl statue maze", "Uhu-Statue, Schilderwald"}, {"Owl statue rapids", "Uhu-Statue, Stromschnellen"}, {"Owl statue taltal east", "Uhu-Statue, Taltal Ost"}, +{"Instrument", "Instrument"}, +{"Moldorm", "Moldorm"}, +{"West hallway", "Flur West"}, +{"Middle ledge", "Mittlerer Sims"}, +{"3 of a kind", "Trikard"}, +{"Bomb room", "Bombenraum"}, +{"Middle kill chest", "Mittlere Kampftruhe"}, +{"Spark chest", "Spark-Truhe"}, +{"Button chest", "Schalter-Truhe"}, +{"Stalfos chest", "Stalfos-Truhe"}, +{"4 zols chest", "Truhe mit 4 Zols"}, +{"Beetles", "Käfer"}, +{"Owl statue long hallway", "Uhu-Statue, langer Flur"}, +{"Owl statue spinies", "Uhu-Statue, Stachis"}, +{"Owl statue 3 of a kind", "Uhu-Statue, Trikard"}, +{"Genie", "Dschinn"}, +{"Boos", "Buu Huus"}, +{"Long room west", "Langer Raum West"}, +{"Long room east", "Langer Raum Ost"}, +{"Vacuum mouth room", "Saugmaul-Raum"}, +{"Kill puzzle", "Kampfrätsel"}, +{"West chest", "Truhe West"}, +{"Double stalfos", "Zwei Stalfos"}, +{"Double shy guys", "Zwei Shy Guys"}, +{"Entrance chest", "Truhe am Eingang"}, +{"Single shy guy", "Einzelner Shy Guy"}, +{"Peg circle", "Pflockkreis"}, +{"Owl statue first switch", "Uhu-Statue, erster Schalter"}, +{"Owl statue push puzzle", "Uhu-Statue, Schieberätsel"}, +{"Owl statue past hinox", "Uhu-Statue hinter Hinox"}, +{"Slime eye", "Giga-Zol"}, +{"Pre boss", "Vor dem Boss"}, +{"Triple bombites", "Drei Bombits"}, +{"North chest", "Truhe Nord"}, +{"Central ledge", "Mittlerer Sims"}, +{"Central chest", "Mittlere Truhe"}, +{"East ledge", "Sims Ost"}, +{"Pairodds", "Parabus"}, +{"Five zols", "Fünf Zols"}, +{"Basement north", "Keller Nord"}, +{"Basement west", "Keller West"}, +{"Basement south", "Keller Süd"}, +{"Hallway", "Flur"}, +{"Hallway side room", "Nebenraum am Flur"}, +{"Vacuum mouth", "Saugmaul"}, +{"Owl statue basement north", "Uhu-Statue, Keller Nord"}, +{"Owl statue arrow", "Uhu-Statue, Pfeil"}, +{"Owl statue northwest", "Uhu-Statue Nordwest"}, +{"Angler", "Piranha-Killer"}, +{"East side north", "Ostseite Nord"}, +{"East side south", "Ostseite Süd"}, +{"West ledge", "Sims West"}, +{"East of puzzle", "Östlich vom Rätsel"}, +{"South of puzzle", "Südlich vom Rätsel"}, +{"Sunken item", "Versunkenes Item"}, +{"Central room", "Mittlerer Raum"}, +{"Small island", "Kleine Insel"}, +{"Ledge north", "Sims Nord"}, +{"Statues chest", "Statuen-Truhe"}, +{"Lobby", "Eingangshalle"}, +{"Crystals", "Kristalle"}, +{"Owl statue", "Uhu-Statue"}, +{"Slime eel", "Schleimaal"}, +{"Master stalfos", "Stalfos-Meister"}, +{"Crystal blocks", "Kristallblöcke"}, +{"Past master stalfos", "Hinter dem Stalfos-Meister"}, +{"Water tunnel", "Wassertunnel"}, +{"Right side north", "Rechte Seite Nord"}, +{"Right side middle", "Rechte Seite Mitte"}, +{"Right side east", "Rechte Seite Ost"}, +{"Helmasaurs", "Eisenmasken"}, +{"West stairs chest", "Truhe an der Westtreppe"}, +{"Near entrance", "Nahe dem Eingang"}, +{"Owl statue triple stalfos", "Uhu-Statue, drei Stalfos"}, +{"Owl statue before slime eel", "Uhu-Statue vor dem Schleimaal"}, +{"Facade", "Dämonenfratze"}, +{"Far northwest", "Ganz im Nordwesten"}, +{"Far northeast", "Ganz im Nordosten"}, +{"Statue line north", "Statuenreihe Nord"}, +{"Statue line south", "Statuenreihe Süd"}, +{"Wizzrobe pegs", "Pyromagus-Pflöcke"}, +{"Canal", "Kanal"}, +{"3 wizzrobes", "3 Pyromagi"}, +{"Tile room", "Fliesenraum"}, +{"Gated hallway north", "Gittergang Nord"}, +{"Gated hallway south", "Gittergang Süd"}, +{"Southwest chest", "Truhe Südwest"}, +{"Wizzrobes ledge", "Pyromagus-Sims"}, +{"Owl statue ledge", "Uhu-Statue, Sims"}, +{"Owl statue southeast", "Uhu-Statue Südost"}, +{"Owl statue canal", "Uhu-Statue, Kanal"}, +{"Eagle", "Teufelsadler"}, +{"Like likes", "Raubschleime"}, +{"1f west", "1. Stock West"}, +{"3ofakind north", "Trikard Nord"}, +{"2f horseheads", "Pferdeköpfe 2. Stock"}, +{"Hinox", "Hinox"}, +{"3ofakind south", "Trikard Süd"}, +{"Blue pegs chest", "Truhe bei blauen Pflöcken"}, +{"3f horseheads", "Pferdeköpfe 3. Stock"}, +{"Grim creeper", "Piccolo-Beschwörer"}, +{"Owl statue ball", "Uhu-Statue, Kugel"}, +{"Owl statue kirbys", "Uhu-Statue, Kirbys"}, +{"Owl statue hookshot chest", "Uhu-Statue, Enterhaken-Truhe"}, +{"Hothead", "Hitzkopf"}, +{"Left exit chest", "Truhe am linken Ausgang"}, +{"Dodongos", "Dodongos"}, +{"Northern ledge", "Nördlicher Sims"}, +{"Gibdos", "Gibdos"}, +{"Beamos chest", "Beamos-Truhe"}, +{"Statue", "Statue"}, +{"Torches", "Fackeln"}, +{"West vire", "Beißer West"}, +{"West roomba", "Roomba West"}, +{"Surrounded by blocks", "Von Blöcken umgeben"}, +{"Sparks chest", "Spark-Truhe"}, +{"East of pots", "Östlich der Töpfe"}, +{"East roomba", "Roomba Ost"}, +{"Far southwest", "Ganz im Südwesten"}, +{"Far southeast", "Ganz im Südosten"}, +{"Owl statue above smasher", "Uhu-Statue über dem Smasher"}, +{"Owl statue below gibdos", "Uhu-Statue unter den Gibdos"}, +{"Owl statue eye statue", "Uhu-Statue, Augenstatue"}, +{"Northern chest", "Nördliche Truhe"}, +{"Zol pots", "Zol-Töpfe"}, +{"North orbs", "Kugeln Nord"}, +{"South orbs", "Kugeln Süd"}, +{"East color puzzle", "Farbrätsel Ost"}, +{"West color puzzle", "Farbrätsel West"}, +{"Putters", "Putter"}, +{"Owl statue nine switches", "Uhu-Statue, neun Schalter"}, +{"Owl statue first switches", "Uhu-Statue, erste Schalter"}, +{"Owl statue before mini boss", "Uhu-Statue vor dem Mini-Boss"}, +{"Rupee", "Rubin"}, {"stone beak", "Schnabel aus Stein"}, -// spoiler logs +// tracker.py +{"spot above the cave", "Stelle über der Höhle"}, +{"spot above Key Cavern", "Stelle über der Teufelsvilla"}, +{"Sunken item in the bay passage", "Versunkenes Item im Gang zur Bucht"}, +{"Tree on the beach", "Baum am Strand"}, +{"bonk", "Rammen"}, +{"spot on the beach", "Stelle am Strand"}, +{"Beside the Seashell Mansion", "Neben dem Muschelbasar"}, +{"spot in Yarna Desert", "Stelle in der Durstwüste"}, +{"South of Yarna Desert", "Südlich der Durstwüste"}, +{"BowWow's doghouse", "Komets Hundehütte"}, +{"dig", "Grabstelle"}, +{"Ghost's grave", "Grab des Gespensts"}, +{"Pot in %s", "Topf: %s"}, +{"the Ghost's house", "Haus des Gespensts"}, +{"West of Goponga Swamp", "Westlich vom Schleimsumpf"}, +{"Kanalet moat", "Burggraben von Kanalet"}, +{"sunken", "versunken"}, +{"south", "Süd"}, +{"Seashell bush in Mabe Village", "Muschel-Busch in Mövendorf"}, +{"North of the Moblin cave", "Nördlich der Moblin-Höhle"}, +{"Rock maze in Ukuku Prairie", "Steinlabyrinth in der Urunga-Steppe"}, +{"Island in the pond", "Insel im Teich"}, +{"east island", "östliche Insel"}, +{"south island", "südliche Insel"}, +{"Cave by the river crossing", "Höhle am Flussübergang"}, +{"Rock maze", "Steinlabyrinth"}, +{"Small island off the coast", "Kleine Insel vor der Küste"}, +{"South of Martha's Bay", "Südlich der Zwergenbucht"}, +{"southwest of Martha's Bay", "südwestlich der Zwergenbucht"}, +{"Syrup the witch", "Hexe"}, +{"Tree south of Tail Cave", "Baum südlich vom Wurmpalast"}, +{"bomb hole", "Bombenloch"}, +{"east bridge", "Ostbrücke"}, +{"east drop", "Abstieg Ost"}, +{"hole", "Loch"}, +{"sunken item", "versunkenes Item"}, +{"under a rock", "unter einem Stein"}, +{"Tarin", "Tarin"}, +{"last prize", "letzter Preis"}, +{"Tree in Ukuku Prairie", "Baum in der Urunga-Steppe"}, +{"Under the skull rock", "Unter dem Totenkopffelsen"}, +{"spot in Tabahl Wasteland", "Stelle im Fratzenwald"}, +{"Bush", "Busch"}, +{"spot", "Stelle"}, +{"Pot", "Topf"}, +{"Apple tree", "Apfelbaum"}, +{"Rock", "Stein"}, +{"the quadruplets' house", "Haus der Großfamilie"}, +{"the Southern Face Shrine", "Südlicher Maskentempel"}, +{"the witch's hut", "Hexenhäuschen"}, +{"the library", "Dorfbücherei"}, +{"the Seashell Mansion", "Muschelbasar"}, +{"a telephone booth", "Telefonhäuschen"}, +{"the Town Tool Shop", "Tante-Emma-Laden"}, +{"the Dream Shrine", "Traumschrein"}, +{"north-west", "Nordwest"}, +{"north-east", "Nordost"}, +{"south-west", "Südwest"}, +{"south-east", "Südost"}, +{"centre", "Mitte"}, +{"middle", "Mitte"}, +{"inside", "innen"}, +{"Trendy Game: prize %s", "Kran-Kemenate: Preis %s"}, +{"Pot (%s)", "Topf (%s)"}, +{"%s of 3", "%s von 3"}, +{"Owl statue below D8", "Uhu-Statue unter Level 8"}, +// separators (tools/menu_strings.py) +{", ", ", "}, +{": ", ": "}, +// not used any more +{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "An: Er kommt dorthin, wo dein Daumen landet, überall unten links. Aus: Er bleibt, wo er ist (verschieben unter Touch-Layout bearbeiten)."}, +{"Edit touch layout", "Touch-Layout bearbeiten"}, +{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Verschiebe die Bildschirmknöpfe, ändere ihre Größe oder blende sie aus, direkt über dem Spiel. Verfügbar während des Spielens."}, +{"Walkthrough", "Lösungsweg"}, +{"With all eight instruments", "Mit allen acht Instrumenten"}, +{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "spiel die Ballade vom Windfisch am Ei auf den Taltal-Höhen."}, +{"(No walkthrough", "(Kein Lösungsweg"}, +{"this seed has no request.json to recompute it.)", "dieser Seed hat keine request.json, um ihn neu zu berechnen.)"}, +{"door -> interior it now leads into", "Tür -> Innenraum, in den sie jetzt führt"}, +{"interior -> where leaving it puts you", "Innenraum -> wo du beim Verlassen landest"}, {"boss cutscenes", "Boss-Sequenzen"}, {"enemy minibosses", "Mini-Bosse als Gegner"}, {"escape bottle", "Fluchtflasche"}, @@ -1463,8 +1841,6 @@ {"Mabe bushes", "Büsche in Mövendorf"}, {"Shop slot3 1st", "Laden, Platz 3, 1. Item"}, {"Shop slot3 2nd", "Laden, Platz 3, 2. Item"}, -{"Tarin", "Tarin"}, -{"Rock maze", "Steinlabyrinth"}, {"double stalfos", "zwei Stalfos"}, {"putters", "Putter"}, {"south orbs", "Kugeln Süd"}, @@ -1533,12 +1909,9 @@ {"past master stalfos", "hinter dem Stalfos-Meister"}, {"right side east", "rechte Seite Ost"}, {"water tunnel", "Wassertunnel"}, -{"west chest", "Truhe West"}, -{"3 wizzrobes", "3 Pyromagi"}, {"statue line north", "Statuenreihe Nord"}, {"wizzrobe pegs", "Pyromagus-Pflöcke"}, {"central room", "mittlerer Raum"}, -{"north chest", "Truhe Nord"}, {"Stalfos Note", "Stalfos-Zettel"}, {"south of puzzle", "südlich vom Rätsel"}, {"west ledge", "Sims West"}, @@ -1548,7 +1921,6 @@ {"middle kill chest", "mittlere Kampftruhe"}, {"stalfos chest", "Stalfos-Truhe"}, {"angler", "Piranha-Killer"}, -{"3 of a kind", "Trikard"}, {"middle ledge", "mittlerer Sims"}, {"moldorm", "Moldorm"}, {"west hallway", "Flur West"}, @@ -1557,10 +1929,8 @@ {"tile room", "Fliesenraum"}, {"wizzrobes ledge", "Pyromagus-Sims"}, {"Rooster statue", "Gockel-Statue"}, -{"Moblin cave", "Moblin-Höhle"}, {"Bow Wow", "Komet"}, {"like likes", "Raubschleime"}, -{"chest", "Truhe"}, {"Taltal bomb hole", "Taltal, Bombenloch"}, {"Taltal east bridge", "Taltal, Ostbrücke"}, {"Taltal west dig", "Taltal West, Grabstelle"}, @@ -1578,11 +1948,9 @@ {"west roomba", "Roomba West"}, {"west vire", "Beißer West"}, {"Squish Trap", "Quetsch-Falle"}, -{"2f horseheads", "Pferdeköpfe 2. Stock"}, {"blue pegs chest", "Truhe bei blauen Pflöcken"}, {"east ledge", "Sims Ost"}, {"grim creeper", "Piccolo-Beschwörer"}, -{"3f horseheads", "Pferdeköpfe 3. Stock"}, {"Shop slot5 3rd", "Laden, Platz 5, 3. Item"}, {"Shop slot5 4th", "Laden, Platz 5, 4. Item"}, {"Shop slot5 5th", "Laden, Platz 5, 5. Item"}, @@ -1591,7 +1959,6 @@ {"final", "Ende"}, {"Shop slot6", "Laden, Platz 6"}, {"Taltal east drop", "Taltal, Abstieg Ost"}, -{"River crossing cave", "Höhle am Flussübergang"}, {"South bay sunken", "Südliche Bucht, versunken"}, {"Kanalet moat north", "Kanalet, Burggraben Nord"}, {"Rapids south island", "Stromschnellen, südliche Insel"}, @@ -1599,7 +1966,6 @@ {"north orbs", "Kugeln Nord"}, {"east color puzzle", "Farbrätsel Ost"}, {"spark chest", "Spark-Truhe"}, -{"4 zols chest", "Truhe mit 4 Zols"}, {"genie", "Dschinn"}, {"long room west", "langer Raum West"}, {"entrance chest", "Truhe am Eingang"}, @@ -1607,7 +1973,6 @@ {"peg circle", "Pflockkreis"}, {"basement north", "Keller Nord"}, {"east of puzzle", "östlich vom Rätsel"}, -{"sunken item", "versunkenes Item"}, {"ledge north", "Sims Nord"}, {"statues chest", "Statuen-Truhe"}, {"crystals", "Kristalle"}, @@ -1623,10 +1988,7 @@ {"gated hallway south", "Gittergang Süd"}, {"southwest chest", "Truhe Südwest"}, {"eagle", "Teufelsadler"}, -{"1f west", "1. Stock West"}, -{"3ofakind north", "Trikard Nord"}, {"hinox", "Hinox"}, -{"3ofakind south", "Trikard Süd"}, {"hothead", "Hitzkopf"}, {"gibdos", "Gibdos"}, {"statue", "Statue"}, @@ -1719,18 +2081,14 @@ {"trendsanity", "Trendsanity"}, {"Slime Eel", "Schleimaal"}, {"Evil Orb", "Böse Kugel"}, -{"Genie", "Dschinn"}, -{"Facade", "Dämonenfratze"}, {"Evil Eagle", "Teufelsadler"}, {"Slime Eye", "Giga-Zol"}, {"Angler Fish", "Piranha-Killer"}, {"Hot Head", "Hitzkopf"}, -{"Moldorm", "Moldorm"}, {"enemy bosses", "Bosse als Gegner"}, {"miniboss souls", "Mini-Boss-Seelen"}, {"Blaino", "Boxos"}, {"Grim Creeper", "Piccolo-Beschwörer"}, -{"Hinox", "Hinox"}, {"Smasher", "Smasher"}, {"Dodongo Snakes", "Dodongo-Schlangen"}, {"Avalaunch", "Lawyn"}, @@ -1742,188 +2100,6 @@ {"ghost item", "Gespenst-Item"}, {"tunic upgrades", "Gewänder als Upgrades"}, {"digs", "Grabstellen"}, -{"Rupee", "Rubin"}, -// tracker.py -{"5 shells", "5 Muscheln"}, -{"15 shells", "15 Muscheln"}, -{"30 shells", "30 Muscheln"}, -{"40 shells", "40 Muscheln"}, -{"50 shells", "50 Muscheln"}, -{"spot above the cave", "Stelle über der Höhle"}, -{"spot above Key Cavern", "Stelle über der Teufelsvilla"}, -{"Ledge above Turtle Rock", "Sims über dem Schildkrötenfelsen"}, -{"Cave by Animal Village", "Höhle beim Zoodorf"}, -{"Northwest of Animal Village", "Nordwestlich vom Zoodorf"}, -{"Armos Knight", "Armos-Ritter"}, -{"Fisherman under the bridge", "Angler unter der Brücke"}, -{"Sunken item in the bay passage", "Versunkenes Item im Gang zur Bucht"}, -{"Tree on the beach", "Baum am Strand"}, -{"bonk", "Rammen"}, -{"Chest on the beach", "Truhe am Strand"}, -{"spot on the beach", "Stelle am Strand"}, -{"Beside the Seashell Mansion", "Neben dem Muschelbasar"}, -{"Chef Bear", "Küchenchef Bär"}, -{"Christine", "Christine"}, -{"thank-you gift", "Dankeschön"}, -{"trade", "Tausch"}, -{"Ciao Ciao", "Schnüppchen"}, -{"Dampe's bottle challenge", "Boris' Flaschen-Herausforderung"}, -{"Dampe's final challenge", "Boris' letzte Herausforderung"}, -{"Dampe's heart challenge", "Boris' Herz-Herausforderung"}, -{"Dampe", "Boris"}, -{"first page", "erste Seite"}, -{"second page", "zweite Seite"}, -{"Cave in Yarna Desert", "Höhle in der Durstwüste"}, -{"spot in Yarna Desert", "Stelle in der Durstwüste"}, -{"South of Yarna Desert", "Südlich der Durstwüste"}, -{"BowWow's doghouse", "Komets Hundehütte"}, -{"dig", "Grabstelle"}, -{"left", "links"}, -{"right", "rechts"}, -{"Fishing pond", "Angelteich"}, -{"100 points", "100 Punkte"}, -{"150 points", "150 Punkte"}, -{"50 points", "50 Punkte"}, -{"Cheep Cheep", "Cheep-Cheep"}, -{"loose item", "loses Item"}, -{"Ol' Baron", "Herr des Teichs"}, -{"orange fish", "oranger Fisch"}, -{"Ghost's grave", "Grab des Gespensts"}, -{"Pot in %s", "Topf: %s"}, -{"the Ghost's house", "Haus des Gespensts"}, -{"Ghost's reward", "Belohnung des Gespensts"}, -{"West of Goponga Swamp", "Westlich vom Schleimsumpf"}, -{"Goriya", "Goriya"}, -{"Grandma Yahoo", "Oma Jaja"}, -{"broom", "Besen"}, -{"Cave under the Cemetery", "Höhle unter dem Friedhof"}, -{"Invisible Zora", "Unsichtbarer Zora"}, -{"bombed guard", "weggesprengte Wache"}, -{"crow", "Krähe"}, -{"last guard", "letzte Wache"}, -{"fight room", "Kampfraum"}, -{"Mad Bomber", "Bombenleger"}, -{"Kanalet moat", "Burggraben von Kanalet"}, -{"north", "Nord"}, -{"sunken", "versunken"}, -{"south", "Süd"}, -{"Cave south of Kanalet Castle", "Höhle südlich von Schloss Kanalet"}, -{"Kiki the monkey", "Kiki, der Affe"}, -{"Seashell bush in Mabe Village", "Muschel-Busch in Mövendorf"}, -{"Mad Batter", "Verrückte Fledermaus"}, -{"Mysterious Forest", "Zauberwald"}, -{"song", "Lied"}, -{"Martha the mermaid", "Nixe"}, -{"Mr. Write", "Dr. Wright"}, -{"North of the Moblin cave", "Nördlich der Moblin-Höhle"}, -{"North of Tabahl Wasteland", "Nördlich vom Fratzenwald"}, -{"Rock maze in Ukuku Prairie", "Steinlabyrinth in der Urunga-Steppe"}, -{"Island in the pond", "Insel im Teich"}, -{"last hole", "letztes Loch"}, -{"cave on the climb", "Höhle am Aufstieg"}, -{"east island", "östliche Insel"}, -{"middle island", "mittlere Insel"}, -{"race under 30 s", "Rennen unter 30 s"}, -{"race under 35 s", "Rennen unter 35 s"}, -{"race under 45 s", "Rennen unter 45 s"}, -{"south island", "südliche Insel"}, -{"west island", "westliche Insel"}, -{"Cave by the river crossing", "Höhle am Flussübergang"}, -{"shelf", "Regal"}, -{"Small island off the coast", "Kleine Insel vor der Küste"}, -{"South of Martha's Bay", "Südlich der Zwergenbucht"}, -{"southwest of Martha's Bay", "südwestlich der Zwergenbucht"}, -{"Chest in Goponga Swamp", "Truhe im Schleimsumpf"}, -{"Syrup the witch", "Hexe"}, -{"Tree south of Tail Cave", "Baum südlich vom Wurmpalast"}, -{"five chest game", "Spiel mit fünf Truhen"}, -{"bomb hole", "Bombenloch"}, -{"crossing cave", "Übergangshöhle"}, -{"east bridge", "Ostbrücke"}, -{"east drop", "Abstieg Ost"}, -{"left chest", "linke Truhe"}, -{"blocks at the entrance", "Blöcke am Eingang"}, -{"chest at the entrance", "Truhe am Eingang"}, -{"hole", "Loch"}, -{"chest on the ledge", "Truhe auf dem Sims"}, -{"cave on the left climb", "Höhle am linken Aufstieg"}, -{"cave by the rooster", "Höhle beim Gockel"}, -{"way out", "Ausweg"}, -{"under a rock", "unter einem Stein"}, -{"Tarin at the beehive", "Tarin am Bienenstock"}, -{"last prize", "letzter Preis"}, -{"Tree in Ukuku Prairie", "Baum in der Urunga-Steppe"}, -{"Ukuku cave", "Urunga-Höhle"}, -{"east chest", "Truhe Ost"}, -{"east item", "Item Ost"}, -{"west item", "Item West"}, -{"Under the skull rock", "Unter dem Totenkopffelsen"}, -{"Cave by the villa", "Höhle bei der Villa"}, -{"Washed up on the beach", "Am Strand angespült"}, -{"spot in Tabahl Wasteland", "Stelle im Fratzenwald"}, -{"Forest crossing cave", "Kreuzungshöhle im Wald"}, -{"item", "Item"}, -{"Forest north cave", "Höhle im Nordwald"}, -{"south chest", "Truhe Süd"}, -{"Bush", "Busch"}, -{"spot", "Stelle"}, -{"Pot", "Topf"}, -{"Apple tree", "Apfelbaum"}, -{"Rock", "Stein"}, -{"Marin and Tarin's house", "Marin & Tarins Zuhause"}, -{"the quadruplets' house", "Haus der Großfamilie"}, -{"the Southern Face Shrine", "Südlicher Maskentempel"}, -{"the witch's hut", "Hexenhäuschen"}, -{"the library", "Dorfbücherei"}, -{"the Seashell Mansion", "Muschelbasar"}, -{"a telephone booth", "Telefonhäuschen"}, -{"the Town Tool Shop", "Tante-Emma-Laden"}, -{"the Dream Shrine", "Traumschrein"}, -{"north-west", "Nordwest"}, -{"north-east", "Nordost"}, -{"south-west", "Südwest"}, -{"south-east", "Südost"}, -{"centre", "Mitte"}, -{"middle", "Mitte"}, -{"inside", "innen"}, -{"Trendy Game: prize %s", "Kran-Kemenate: Preis %s"}, -{"Pot (%s)", "Topf (%s)"}, -{"%s of 3", "%s von 3"}, -{"Slime eye", "Giga-Zol"}, -{"Angler", "Piranha-Killer"}, -{"Slime eel", "Schleimaal"}, -{"Master stalfos", "Stalfos-Meister"}, -{"Eagle", "Teufelsadler"}, -{"Hothead", "Hitzkopf"}, -{"Owl statue long hallway", "Uhu-Statue, langer Flur"}, -{"Owl statue spinies", "Uhu-Statue, Stachis"}, -{"Owl statue 3 of a kind", "Uhu-Statue, Trikard"}, -{"Owl statue first switch", "Uhu-Statue, erster Schalter"}, -{"Owl statue push puzzle", "Uhu-Statue, Schieberätsel"}, -{"Owl statue past hinox", "Uhu-Statue hinter Hinox"}, -{"Owl statue basement north", "Uhu-Statue, Keller Nord"}, -{"Owl statue arrow", "Uhu-Statue, Pfeil"}, -{"Owl statue northwest", "Uhu-Statue Nordwest"}, -{"Owl statue", "Uhu-Statue"}, -{"Owl statue triple stalfos", "Uhu-Statue, drei Stalfos"}, -{"Owl statue before slime eel", "Uhu-Statue vor dem Schleimaal"}, -{"Owl statue ledge", "Uhu-Statue, Sims"}, -{"Owl statue southeast", "Uhu-Statue Südost"}, -{"Owl statue canal", "Uhu-Statue, Kanal"}, -{"Owl statue ball", "Uhu-Statue, Kugel"}, -{"Owl statue kirbys", "Uhu-Statue, Kirbys"}, -{"Owl statue hookshot chest", "Uhu-Statue, Enterhaken-Truhe"}, -{"Owl statue above smasher", "Uhu-Statue über dem Smasher"}, -{"Owl statue below gibdos", "Uhu-Statue unter den Gibdos"}, -{"Owl statue eye statue", "Uhu-Statue, Augenstatue"}, -{"Owl statue nine switches", "Uhu-Statue, neun Schalter"}, -{"Owl statue first switches", "Uhu-Statue, erste Schalter"}, -{"Owl statue before mini boss", "Uhu-Statue vor dem Mini-Boss"}, -{"Owl statue below D8", "Uhu-Statue unter Level 8"}, -// separators (tools/menu_strings.py) -{", ", ", "}, -{": ", ": "}, -// not used any more {"Set the buttons and keys for the game. F1, Esc, Home or Back + Start always open this menu.", "Lege die Knöpfe und Tasten für das Spiel fest. F1, Esc, HOME oder Zurück + Start öffnen immer dieses Menü."}, {"! This folder is synced by OneDrive", "! Dieser Ordner wird mit OneDrive synchronisiert"}, {"About %.0f GB of game files will upload to your OneDrive.", "Etwa %.0f GB Spieldateien werden in dein OneDrive hochgeladen."}, diff --git a/runtime/ui/lang/es.inc b/runtime/ui/lang/es.inc index 72791418a..f5500d9a8 100644 --- a/runtime/ui/lang/es.inc +++ b/runtime/ui/lang/es.inc @@ -226,13 +226,9 @@ {"Appearance", "Aspecto"}, {"Layout", "Disposición"}, {"Follow thumb", "Seguir el pulgar"}, -{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Activado: aparece donde pongas el pulgar, en cualquier parte de la zona inferior izquierda. Desactivado: se queda en su sitio (muévelo en Editar disposición táctil)."}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it with the Layout button).", "Activado: aparece donde pongas el pulgar, en cualquier parte de la zona inferior izquierda. Desactivado: se queda en su sitio (muévelo con el botón de disposición)."}, {"Layout button", "Botón de disposición"}, {"A button at the top, next to the menu button, that lets you move and resize the on-screen buttons.", "Un botón arriba, junto al botón del menú, para mover y cambiar el tamaño de los botones en pantalla."}, -{"Load a save first.", "Carga una partida primero."}, -{"Edit touch layout", "Editar disposición táctil"}, -{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Mueve los botones en pantalla, cambia el tamaño de cada uno u ocúltalo, sobre el juego. Disponible mientras juegas."}, {"Reset touch layout", "Restablecer disposición táctil"}, {"Puts every on-screen button back in its place, at its size, shown.", "Devuelve cada botón en pantalla a su sitio y su tamaño, y lo vuelve a mostrar."}, // runtime/ui/difficulty.mm @@ -691,6 +687,7 @@ {"The game's echo in caves, dungeons and big rooms.", "El eco del juego en cuevas, mazmorras y salas grandes."}, {"LAS Recomp menu sounds", "Sonidos de menú de LAS Recomp"}, {"Sounds when you move around and pick things in LAS Recomp's menus.", "Sonidos al moverte y elegir en los menús de LAS Recomp."}, +{"Load a save first.", "Carga una partida primero."}, {"Quit", "Salir"}, {"Reset Game", "Reiniciar juego"}, {"Progress since your last save is lost.", "Se perderá lo que hayas avanzado desde la última vez que guardaste."}, @@ -1090,6 +1087,8 @@ {"Reveal spoilers", "Mostrar spoilers"}, {"Search items and places", "Buscar objetos y lugares"}, {"Search the spoiler log", "Buscar en el registro de spoilers"}, +{"Useful items only", "Solo objetos útiles"}, +{"Hide checked", "Ocultar revisadas"}, // runtime/ui/tracker_overlay.mm {"Seashells", "Caracolas"}, {"%d Small Keys", "%d llaves pequeñas"}, @@ -1122,7 +1121,6 @@ {"needs %s +%d", "necesita %s +%d"}, {"Filter: %s", "Filtro: %s"}, {"In logic now", "En lógica ahora"}, -{"Hide checked", "Ocultar revisadas"}, {"Filters", "Filtros"}, {"Room %c%d", "Sala %c%d"}, {"trick logic", "lógica con trucos"}, @@ -1177,9 +1175,9 @@ {"This is where Manbo's Mambo drops you. You can't warp here directly.", "Aquí es donde te deja el Mambo de Manbo. No puedes teletransportarte aquí directamente."}, {"%d places", "%d lugares"}, {"Load a save to warp.", "Carga una partida para teletransportarte."}, +{"Places", "Lugares"}, {"Search", "Buscar"}, {"Search places...", "Buscar lugares..."}, -{"Places", "Lugares"}, {"Link is here", "Link está aquí"}, // warp_data.h {"Dungeons", "Mazmorras"}, @@ -1306,28 +1304,112 @@ {"Building game files (%s tasks)", "Creando los archivos del juego (%s tareas)"}, {"Triforce hunt: %s", "Caza de la Trifuerza: %s"}, // spoiler_view.py -{"Settings: %s", "Opciones: %s"}, -{"Walkthrough", "Ruta"}, -{"Items by area", "Objetos por zona"}, -{"Starting items: %s", "Objetos iniciales: %s"}, +{"Route", "Ruta"}, +{"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Solo lo necesario para completar la semilla. Cada parada se alcanza con los objetos de las anteriores."}, +{"Finish", "Final"}, +{"Everything useful step by step", "Todo lo útil, paso a paso"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Cada paso se puede hacer con lo que tenías tras los pasos anteriores (en cualquier orden dentro de un paso)."}, {"Only items that open things up are listed; rupees", "Solo se indican los objetos que abren camino; las rupias"}, {"traps and similar are left out.", "las trampas y similares se omiten."}, -{"Finish", "Final"}, -{"With all eight instruments", "Con los ocho instrumentos"}, -{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "toca la Balada del Pez del Viento ante el huevo en la meseta de Tal Tal."}, -{"(No walkthrough", "(No hay ruta"}, -{"this seed has no request.json to recompute it.)", "esta semilla no tiene request.json para volver a calcularla.)"}, +{"Items by area", "Objetos por zona"}, +{"Dungeon rooms", "Salas de las mazmorras"}, +{"Where each moved room is now and where it came from.", "Dónde está ahora cada sala movida y de dónde viene."}, {"Entrances", "Entradas"}, -{"%s entrance leads into %s", "La entrada de %s lleva a %s"}, -{"%s:", "%s:"}, {"Doors", "Puertas"}, -{"door -> interior it now leads into", "puerta -> interior al que lleva ahora"}, +{"each door and where it now leads", "cada puerta y adónde lleva ahora"}, +{"Settings: %s", "Opciones: %s"}, +{"(This seed has no step list.)", "(Esta semilla no tiene lista de pasos.)"}, +{"%s entrance leads into %s", "La entrada de %s lleva a %s"}, +{"Unchanged (%s)", "Sin cambios (%s)"}, {"Exits", "Salidas"}, -{"interior -> where leaving it puts you", "interior -> dónde apareces al salir"}, +{"each way out and where it puts you", "cada salida y dónde te deja"}, +{"Starting items: %s", "Objetos iniciales: %s"}, +{"%s:", "%s:"}, +{"Small items (%s)", "Objetos pequeños (%s)"}, {"%s - enter through %s's entrance", "%s - entra por la entrada de %s"}, {"%s's Soul", "Alma de %s"}, {"%s' Soul", "Alma de %s"}, +{"room %s", "sala %s"}, +{"The last of the %s Triforce pieces you need ends the game.", "El último de los %s fragmentos de la Trifuerza que necesitas termina el juego."}, +{"2nd", "2.º"}, +{"shelf", "repisa"}, +{"second item", "segundo objeto"}, +{"third item", "tercer objeto"}, +{"west side door", "puerta del lado oeste"}, +{"east side door", "puerta del lado este"}, +{"Fire cave", "Cueva del fuego"}, +{"north door", "puerta norte"}, +{"south door", "puerta sur"}, +{"Wind Fish's egg", "Huevo del Pez del Viento"}, +{"rooster house", "casa del cuco"}, +{"Telephone booth by Turtle Rock", "Cabina telefónica junto a la Roca de la Tortuga"}, +{"Mad Batter well", "Pozo del murciélago chiflado"}, +{"Tal Tal crossing cave", "Cueva de paso de Tal Tal"}, +{"west door", "puerta oeste"}, +{"east door", "puerta este"}, +{"Mountain cave", "Cueva de la montaña"}, +{"bottom door", "puerta del fondo"}, +{"top door", "puerta de arriba"}, +{"ledge door", "puerta del saliente"}, +{"Papahl's cave", "Cueva de Papaíto"}, +{"lower door", "puerta inferior"}, +{"upper door", "puerta superior"}, +{"Bird Key cave", "Cueva de la llave rapaz"}, +{"Five chest cave", "Cueva de los cinco cofres"}, +{"Five chest game", "Juego de los cinco cofres"}, +{"exit door", "puerta de salida"}, +{"Rainbow cave", "Cueva del arcoíris"}, +{"outer west door", "puerta oeste exterior"}, +{"inner west door", "puerta oeste interior"}, +{"inner east door", "puerta este interior"}, +{"outer east door", "puerta este exterior"}, +{"Fairy fountain", "Fuente de la gran hada"}, +{"Tal Tal east", "Tal Tal este"}, +{"Cave to Eagle's Tower", "Cueva a la Torre del Águila"}, +{"Cave by Angler's Tunnel", "Cueva junto al Túnel Abisal"}, +{"Damp cave", "Cueva húmeda"}, +{"Raft cave", "Cueva de la balsa"}, +{"Telephone booth", "Cabina telefónica"}, +{"Moblin cave", "Cueva moblin"}, +{"Dampe's house", "Choza de Dampé"}, +{"Rapids Ride raft shop", "Alquiler de balsas de la Ruta de los rápidos"}, +{"Mysterious Forest", "Bosque Misterioso"}, +{"north cave", "cueva del norte"}, +{"Kanalet tunnel", "Túnel de Kanalet"}, +{"Telephone booth by Kanalet Castle", "Cabina telefónica junto al castillo de Kanalet"}, +{"roof west door", "puerta oeste del tejado"}, +{"roof east door", "puerta este del tejado"}, +{"front door", "puerta principal"}, +{"Cave south of Kanalet Castle", "Cueva al sur del castillo de Kanalet"}, +{"Forest crossing cave", "Cueva de paso del bosque"}, +{"forest", "bosque"}, +{"north side door", "puerta del lado norte"}, +{"Ukuku cave", "Cueva de Ukuku"}, +{"Ukuku Prairie north", "Pradera de Ukuku norte"}, +{"Ukuku Prairie west", "Pradera de Ukuku oeste"}, +{"Cave to Face Shrine", "Cueva al Templo del Rostro"}, +{"Fairy fountain by the Armos maze", "Fuente de la gran hada junto al laberinto de armos"}, +{"Flying Rooster's grave", "Tumba del Gran Cuco Volador"}, +{"River crossing cave", "Cueva del paso del río"}, +{"Armos maze cave", "Cueva del laberinto de armos"}, +{"BowWow's kennel", "Caseta de Guauguau"}, +{"Marin and Tarin's house", "la casa de Marin y Tarin"}, +{"Mabe Village library", "Biblioteca de la aldea Mabe"}, +{"Cliff cave by the bay", "Cueva del acantilado junto a la bahía"}, +{"plateau door", "puerta de la meseta"}, +{"Cave behind Richard's villa", "Cueva detrás de la finca de Richard"}, +{"rabbit house", "casa de los conejos"}, +{"Zora's house", "Casa del zora"}, +{"bombed cave", "cueva abierta con bombas"}, +{"Lanmola cave", "Cueva de la lanmora"}, +{"east dive spot", "punto de buceo este"}, +{"west dive spot", "punto de buceo oeste"}, +{"Sale's banana house", "Platanería de Vendo"}, +{"bay", "bahía"}, +{"Tunnel to the bay Mad Batter", "Túnel al murciélago chiflado de la bahía"}, +{"Mermaid statue", "Estatua de la sirena"}, +{"Boomerang cave", "Cueva del bumerán"}, +{"Ghost's house", "Casa del espectro"}, {"Signpost Maze", "Laberinto de letreros"}, {"Ancient Ruins", "Ruinas antiguas"}, {"west", "oeste"}, @@ -1338,98 +1420,180 @@ {"50 Rupees", "50 rupias"}, {"100 Rupees", "100 rupias"}, {"300 Rupees", "300 rupias"}, +{"1 Rupee", "1 rupia"}, {"Trap!", "¡Trampa!"}, {"Frog Song of Soul", "Canción vital de las ranas"}, {"Chamber Stone", "Piedra saliza"}, +{"Triforce piece", "Fragmento de la Trifuerza"}, {"Beach chest", "Cofre de la playa"}, +{"Chest on the beach", "Cofre de la playa"}, {"Taltal entrance chest", "Cofre de la entrada de Tal Tal"}, +{"chest at the entrance", "cofre de la entrada"}, {"Taltal east left chest", "Cofre izquierdo del este de Tal Tal"}, +{"left chest", "cofre izquierdo"}, {"Dream shrine right", "Santuario del Ensueño, derecha"}, +{"right", "derecha"}, {"Armos cave", "Cueva de los armos"}, {"Goponga cave left", "Cueva de Goponga, izquierda"}, +{"left", "izquierda"}, {"Goponga cave right", "Cueva de Goponga, derecha"}, {"Ukuku cave west chest", "Cofre oeste de la cueva de Ukuku"}, +{"west chest", "cofre oeste"}, {"Ukuku cave east chest", "Cofre este de la cueva de Ukuku"}, +{"east chest", "cofre este"}, {"Kanalet south cave", "Cueva al sur de Kanalet"}, {"Swamp chest", "Cofre del pantano"}, +{"Chest in Goponga Swamp", "Cofre del pantano de Goponga"}, {"Taltal left ascent cave", "Cueva de la subida izquierda de Tal Tal"}, +{"cave on the left climb", "cueva de la subida izquierda"}, {"Taltal ledge chest", "Cofre del saliente de Tal Tal"}, +{"chest on the ledge", "cofre del saliente"}, {"Taltal 5 chest puzzle", "Puzle de 5 cofres de Tal Tal"}, +{"five chest game", "juego de los cinco cofres"}, {"Taltal west chest", "Cofre oeste de Tal Tal"}, {"Villa cave", "Cueva de la finca"}, +{"Cave by the villa", "Cueva junto a la finca"}, {"Woods crossing cave chest", "Cofre de la cueva de paso del bosque"}, +{"chest", "cofre"}, {"Woods north cave chest", "Cofre de la cueva norte del bosque"}, +{"Forest north cave", "Cueva norte del bosque"}, {"Woods south chest", "Cofre sur del bosque"}, +{"south chest", "cofre sur"}, {"Woods north chest", "Cofre norte del bosque"}, +{"north chest", "cofre norte"}, {"Fishing", "Pesca"}, +{"Fishing pond", "Estanque de pesca"}, +{"50 points", "50 puntos"}, {"Fishing orange", "Pesca: pez naranja"}, +{"orange fish", "pez naranja"}, {"Fishing loose", "Pesca: objeto suelto"}, +{"loose item", "objeto suelto"}, +{"100 points", "100 puntos"}, +{"150 points", "150 puntos"}, {"Fishing cheep cheep", "Pesca: Cheep Cheep"}, +{"Cheep Cheep", "Cheep Cheep"}, {"Fishing ol baron", "Pesca: rey del lago"}, +{"Ol' Baron", "Rey del lago"}, {"Rapids race", "Carrera de los rápidos"}, +{"race under 45 s", "carrera en menos de 45 s"}, +{"race under 35 s", "carrera en menos de 35 s"}, +{"race under 30 s", "carrera en menos de 30 s"}, {"Rapids middle island", "Isla central de los rápidos"}, +{"middle island", "isla central"}, {"Rapids west island", "Isla oeste de los rápidos"}, +{"west island", "isla oeste"}, {"Dampe page", "Página de Dampé"}, +{"Dampe", "Dampé"}, +{"first page", "primera página"}, {"Dampe heart challenge", "Desafío de corazones de Dampé"}, +{"Dampe's heart challenge", "Desafío de corazones de Dampé"}, +{"second page", "segunda página"}, {"Dampe bottle challenge", "Desafío del frasco de Dampé"}, +{"Dampe's bottle challenge", "Desafío del frasco de Dampé"}, {"Dampe final", "Desafío final de Dampé"}, +{"Dampe's final challenge", "Desafío final de Dampé"}, {"Walrus", "Morsa"}, {"Ghost reward", "Recompensa del espectro"}, +{"Ghost's reward", "Recompensa del espectro"}, +{"song", "canción"}, {"Manbo", "Manbo"}, {"Mamu", "Wart"}, {"Mad batter bay", "Murciélago chiflado de la bahía"}, +{"Mad Batter", "Murciélago chiflado"}, {"Mad batter taltal", "Murciélago chiflado de Tal Tal"}, {"Mad batter woods", "Murciélago chiflado del bosque"}, {"Invisible zora", "Zora invisible"}, +{"Invisible Zora", "Zora invisible"}, {"Goriya trader", "Intercambio con el koppo"}, +{"Goriya", "Koppo"}, +{"trade", "intercambio"}, {"Mamasha", "Mamaíta"}, {"Ciao ciao", "Chaochao"}, +{"Ciao Ciao", "Chaochao"}, {"Sale", "Vendo"}, {"Kiki", "Mimi"}, +{"Kiki the monkey", "El mono Mimi"}, {"Tarin ukuku", "Tarin en Ukuku"}, +{"Tarin at the beehive", "Tarin en la colmena"}, {"Chef bear", "Chef Oso"}, +{"Chef Bear", "Chef Oso"}, {"Papahl", "Papaíto"}, {"Christine trade", "Intercambio con Christine"}, +{"Christine", "Christine"}, {"Christine grateful", "Regalo de Christine"}, +{"thank-you gift", "regalo de agradecimiento"}, {"Mr write", "Dr. Wright"}, +{"Mr. Write", "Dr. Wright"}, {"Grandma yahoo", "Abuela Yupi"}, +{"Grandma Yahoo", "Abuela Yupi"}, +{"broom", "escoba"}, {"Bay fisherman", "Pescador de la bahía"}, +{"Fisherman under the bridge", "Pescador bajo el puente"}, {"Mermaid martha", "Sirena Martha"}, +{"Martha the mermaid", "Martha la sirena"}, {"Mermaid cave", "Cueva de la sirena"}, {"Lanmola", "Lanmora"}, {"Armos knight", "Armos max"}, +{"Armos Knight", "Armos max"}, {"Washed up", "Varado en la playa"}, +{"Washed up on the beach", "Varado en la playa"}, {"Dream shrine left", "Santuario del Ensueño, izquierda"}, {"Taltal rooster cave", "Cueva del cuco de Tal Tal"}, +{"cave by the rooster", "cueva junto al cuco"}, {"Woods loose", "Objeto suelto del bosque"}, {"Pothole final", "Último hoyo de la huerta"}, +{"last hole", "último hoyo"}, {"5 seashell reward", "Premio de 5 caracolas"}, +{"5 shells", "5 caracolas"}, {"15 seashell reward", "Premio de 15 caracolas"}, +{"15 shells", "15 caracolas"}, {"30 seashell reward", "Premio de 30 caracolas"}, +{"30 shells", "30 caracolas"}, {"40 seashell reward", "Premio de 40 caracolas"}, +{"40 shells", "40 caracolas"}, {"50 seashell reward", "Premio de 50 caracolas"}, +{"50 shells", "50 caracolas"}, {"Animal village northwest", "Noroeste de la Aldea Animal"}, +{"Northwest of Animal Village", "Noroeste de la Aldea Animal"}, {"Animal village cave", "Cueva de la Aldea Animal"}, +{"Cave by Animal Village", "Cueva junto a la Aldea Animal"}, {"Taltal entrance blocks", "Bloques de la entrada de Tal Tal"}, +{"blocks at the entrance", "bloques de la entrada"}, {"North wasteland", "Norte del páramo"}, +{"North of Tabahl Wasteland", "Norte del páramo de Tabahl"}, {"Desert cave", "Cueva del desierto"}, +{"Cave in Yarna Desert", "Cueva del desierto de Yarna"}, {"Graveyard cave", "Cueva del cementerio"}, +{"Cave under the Cemetery", "Cueva bajo el cementerio"}, {"Mabe well", "Pozo de Mabe"}, {"Ukuku cave west loose", "Objeto suelto oeste de la cueva de Ukuku"}, +{"west item", "objeto oeste"}, {"Ukuku cave east loose", "Objeto suelto este de la cueva de Ukuku"}, +{"east item", "objeto este"}, {"Rapids ascent cave", "Cueva de la subida de los rápidos"}, +{"cave on the climb", "cueva de la subida"}, {"Taltal crossing cave", "Cueva de paso de Tal Tal"}, +{"crossing cave", "cueva de paso"}, {"Taltal west escape", "Salida oeste de Tal Tal"}, +{"way out", "salida"}, {"Above turtle rock", "Sobre la Roca de la Tortuga"}, +{"Ledge above Turtle Rock", "Saliente sobre la Roca de la Tortuga"}, {"Pothole north", "Norte de la huerta"}, +{"north", "norte"}, {"Woods crossing cave loose", "Objeto suelto de la cueva de paso del bosque"}, +{"item", "objeto"}, {"Woods north cave loose", "Objeto suelto de la cueva norte del bosque"}, {"Diamond island", "Isla del rombo"}, {"Kanalet crow", "Cuervo de Kanalet"}, +{"crow", "cuervo"}, {"Kanalet mad bomber", "Bombardero loco de Kanalet"}, +{"Mad Bomber", "Bombardero loco"}, {"Kanalet kill room", "Sala de combate de Kanalet"}, +{"fight room", "sala de combate"}, {"Kanalet bombed guard", "Guardia bombardeado de Kanalet"}, +{"bombed guard", "guardia bombardeado"}, {"Kanalet final guard", "Último guardia de Kanalet"}, +{"last guard", "último guardia"}, {"Owl statue moblin cave", "Estatua de búho de la cueva moblin"}, {"Owl statue pothole", "Estatua de búho de la huerta"}, {"Owl statue above cave", "Estatua de búho sobre la cueva"}, @@ -1438,8 +1602,222 @@ {"Owl statue maze", "Estatua de búho del laberinto"}, {"Owl statue rapids", "Estatua de búho de los rápidos"}, {"Owl statue taltal east", "Estatua de búho del este de Tal Tal"}, +{"Instrument", "Instrumento"}, +{"Moldorm", "Degutail"}, +{"West hallway", "Pasillo oeste"}, +{"Middle ledge", "Saliente central"}, +{"3 of a kind", "trío igualado"}, +{"Bomb room", "Sala de bombas"}, +{"Middle kill chest", "Cofre de combate central"}, +{"Spark chest", "Cofre del spark"}, +{"Button chest", "Cofre del interruptor"}, +{"Stalfos chest", "Cofre del stalfos"}, +{"4 zols chest", "cofre de 4 zols"}, +{"Beetles", "Zoro zoros"}, +{"Owl statue long hallway", "Estatua de búho del pasillo largo"}, +{"Owl statue spinies", "Estatua de búho de los pinchones"}, +{"Owl statue 3 of a kind", "Estatua de búho del trío igualado"}, +{"Genie", "Genio"}, +{"Boos", "Boos"}, +{"Long room west", "Sala larga oeste"}, +{"Long room east", "Sala larga este"}, +{"Vacuum mouth room", "Sala de la boca aspiradora"}, +{"Kill puzzle", "Puzle de derrotar"}, +{"West chest", "Cofre oeste"}, +{"Double stalfos", "Dos stalfos"}, +{"Double shy guys", "Dos Shy Guy"}, +{"Entrance chest", "Cofre de la entrada"}, +{"Single shy guy", "Un Shy Guy"}, +{"Peg circle", "Círculo de estacas"}, +{"Owl statue first switch", "Estatua de búho del primer interruptor"}, +{"Owl statue push puzzle", "Estatua de búho del puzle de empujar"}, +{"Owl statue past hinox", "Estatua de búho tras el hinox"}, +{"Slime eye", "Viscóculo"}, +{"Pre boss", "Antes del jefe"}, +{"Triple bombites", "Tres bombulantes"}, +{"North chest", "Cofre norte"}, +{"Central ledge", "Saliente central"}, +{"Central chest", "Cofre central"}, +{"East ledge", "Saliente este"}, +{"Pairodds", "Picolorines"}, +{"Five zols", "Cinco zols"}, +{"Basement north", "Sótano norte"}, +{"Basement west", "Sótano oeste"}, +{"Basement south", "Sótano sur"}, +{"Hallway", "Pasillo"}, +{"Hallway side room", "Sala junto al pasillo"}, +{"Vacuum mouth", "Boca aspiradora"}, +{"Owl statue basement north", "Estatua de búho del sótano norte"}, +{"Owl statue arrow", "Estatua de búho de la flecha"}, +{"Owl statue northwest", "Estatua de búho del noroeste"}, +{"Angler", "Pez abisal"}, +{"East side north", "Lado este, norte"}, +{"East side south", "Lado este, sur"}, +{"West ledge", "Saliente oeste"}, +{"East of puzzle", "Este del puzle"}, +{"South of puzzle", "Sur del puzle"}, +{"Sunken item", "Objeto hundido"}, +{"Central room", "Sala central"}, +{"Small island", "Islote"}, +{"Ledge north", "Saliente norte"}, +{"Statues chest", "Cofre de las estatuas"}, +{"Lobby", "Vestíbulo"}, +{"Crystals", "Cristales"}, +{"Owl statue", "Estatua de búho"}, +{"Slime eel", "Boluga"}, +{"Master stalfos", "Caudillo stalfos"}, +{"Crystal blocks", "Bloques de cristal"}, +{"Past master stalfos", "Tras el caudillo stalfos"}, +{"Water tunnel", "Túnel de agua"}, +{"Right side north", "Lado derecho, norte"}, +{"Right side middle", "Lado derecho, centro"}, +{"Right side east", "Lado derecho, este"}, +{"Helmasaurs", "Yelmosaurios"}, +{"West stairs chest", "Cofre de la escalera oeste"}, +{"Near entrance", "Cerca de la entrada"}, +{"Owl statue triple stalfos", "Estatua de búho de los tres stalfos"}, +{"Owl statue before slime eel", "Estatua de búho antes de Boluga"}, +{"Facade", "Semblantio"}, +{"Far northwest", "Extremo noroeste"}, +{"Far northeast", "Extremo noreste"}, +{"Statue line north", "Fila de estatuas norte"}, +{"Statue line south", "Fila de estatuas sur"}, +{"Wizzrobe pegs", "Invocantis y estacas"}, +{"Canal", "Canal"}, +{"3 wizzrobes", "3 invocantis"}, +{"Tile room", "Sala de baldosas"}, +{"Gated hallway north", "Pasillo con rejas norte"}, +{"Gated hallway south", "Pasillo con rejas sur"}, +{"Southwest chest", "Cofre suroeste"}, +{"Wizzrobes ledge", "Saliente de los invocantis"}, +{"Owl statue ledge", "Estatua de búho del saliente"}, +{"Owl statue southeast", "Estatua de búho del sureste"}, +{"Owl statue canal", "Estatua de búho del canal"}, +{"Eagle", "Rápax"}, +{"Like likes", "Like likes"}, +{"1f west", "1P oeste"}, +{"3ofakind north", "trío igualado norte"}, +{"2f horseheads", "cabezas de caballo 2P"}, +{"Hinox", "Hinox"}, +{"3ofakind south", "trío igualado sur"}, +{"Blue pegs chest", "Cofre de estacas azules"}, +{"3f horseheads", "cabezas de caballo 3P"}, +{"Grim creeper", "Murcegador"}, +{"Owl statue ball", "Estatua de búho de la bola"}, +{"Owl statue kirbys", "Estatua de búho de los Kirby"}, +{"Owl statue hookshot chest", "Estatua de búho del cofre del gancho"}, +{"Hothead", "Inflamio"}, +{"Left exit chest", "Cofre de la salida izquierda"}, +{"Dodongos", "Dodongos"}, +{"Northern ledge", "Saliente norte"}, +{"Gibdos", "Gibdos"}, +{"Beamos chest", "Cofre del beamos"}, +{"Statue", "Estatua"}, +{"Torches", "Antorchas"}, +{"West vire", "Vire oeste"}, +{"West roomba", "Roomba oeste"}, +{"Surrounded by blocks", "Rodeado de bloques"}, +{"Sparks chest", "Cofre de los sparks"}, +{"East of pots", "Este de las vasijas"}, +{"East roomba", "Roomba este"}, +{"Far southwest", "Extremo suroeste"}, +{"Far southeast", "Extremo sureste"}, +{"Owl statue above smasher", "Estatua de búho sobre el aplastador"}, +{"Owl statue below gibdos", "Estatua de búho bajo los gibdos"}, +{"Owl statue eye statue", "Estatua de búho de la estatua del ojo"}, +{"Northern chest", "Cofre norte"}, +{"Zol pots", "Vasijas de zols"}, +{"North orbs", "Orbes norte"}, +{"South orbs", "Orbes sur"}, +{"East color puzzle", "Puzle de colores este"}, +{"West color puzzle", "Puzle de colores oeste"}, +{"Putters", "Estatuas sopladoras"}, +{"Owl statue nine switches", "Estatua de búho de los nueve interruptores"}, +{"Owl statue first switches", "Estatua de búho de los primeros interruptores"}, +{"Owl statue before mini boss", "Estatua de búho antes del minijefe"}, +{"Rupee", "Rupia"}, {"stone beak", "pico pétreo"}, -// spoiler logs +// tracker.py +{"spot above the cave", "punto sobre la cueva"}, +{"spot above Key Cavern", "punto sobre la Caverna de la Llave"}, +{"Sunken item in the bay passage", "Objeto hundido en el pasadizo de la bahía"}, +{"Tree on the beach", "Árbol de la playa"}, +{"bonk", "embestida"}, +{"spot on the beach", "punto de la playa"}, +{"Beside the Seashell Mansion", "Junto a la Mansión Caracola"}, +{"spot in Yarna Desert", "punto del desierto de Yarna"}, +{"South of Yarna Desert", "Sur del desierto de Yarna"}, +{"BowWow's doghouse", "Caseta de Guauguau"}, +{"dig", "excavación"}, +{"Ghost's grave", "Tumba del espectro"}, +{"Pot in %s", "Vasija en %s"}, +{"the Ghost's house", "la casa del espectro"}, +{"West of Goponga Swamp", "Oeste del pantano de Goponga"}, +{"Kanalet moat", "Foso de Kanalet"}, +{"sunken", "hundido"}, +{"south", "sur"}, +{"Seashell bush in Mabe Village", "Arbusto con caracola en la aldea Mabe"}, +{"North of the Moblin cave", "Norte de la cueva moblin"}, +{"Rock maze in Ukuku Prairie", "Laberinto de rocas de la pradera de Ukuku"}, +{"Island in the pond", "Isla del estanque"}, +{"east island", "isla este"}, +{"south island", "isla sur"}, +{"Cave by the river crossing", "Cueva junto al paso del río"}, +{"Rock maze", "Laberinto de rocas"}, +{"Small island off the coast", "Islote frente a la costa"}, +{"South of Martha's Bay", "Sur de la bahía de Martha"}, +{"southwest of Martha's Bay", "suroeste de la bahía de Martha"}, +{"Syrup the witch", "La bruja"}, +{"Tree south of Tail Cave", "Árbol al sur de la Cueva Tail"}, +{"bomb hole", "hoyo de bomba"}, +{"east bridge", "puente este"}, +{"east drop", "caída este"}, +{"hole", "hoyo"}, +{"sunken item", "objeto hundido"}, +{"under a rock", "bajo una roca"}, +{"Tarin", "Tarin"}, +{"last prize", "último premio"}, +{"Tree in Ukuku Prairie", "Árbol de la pradera de Ukuku"}, +{"Under the skull rock", "Bajo la roca calavera"}, +{"spot in Tabahl Wasteland", "punto del páramo de Tabahl"}, +{"Bush", "Arbusto"}, +{"spot", "punto"}, +{"Pot", "Vasija"}, +{"Apple tree", "Manzano"}, +{"Rock", "Roca"}, +{"the quadruplets' house", "la casa de los cuatrillizos"}, +{"the Southern Face Shrine", "el sur del Templo del Rostro"}, +{"the witch's hut", "la casa de la bruja"}, +{"the library", "la biblioteca"}, +{"the Seashell Mansion", "la Mansión Caracola"}, +{"a telephone booth", "una cabina telefónica"}, +{"the Town Tool Shop", "la tienda de utensilios"}, +{"the Dream Shrine", "el Santuario del Ensueño"}, +{"north-west", "noroeste"}, +{"north-east", "noreste"}, +{"south-west", "suroeste"}, +{"south-east", "sureste"}, +{"centre", "centro"}, +{"middle", "medio"}, +{"inside", "dentro"}, +{"Trendy Game: prize %s", "Sala de juegos: premio %s"}, +{"Pot (%s)", "Vasija (%s)"}, +{"%s of 3", "%s de 3"}, +{"Owl statue below D8", "Estatua de búho bajo la D8"}, +// separators (tools/menu_strings.py) +{", ", ", "}, +{": ", ": "}, +// not used any more +{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Activado: aparece donde pongas el pulgar, en cualquier parte de la zona inferior izquierda. Desactivado: se queda en su sitio (muévelo en Editar disposición táctil)."}, +{"Edit touch layout", "Editar disposición táctil"}, +{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Mueve los botones en pantalla, cambia el tamaño de cada uno u ocúltalo, sobre el juego. Disponible mientras juegas."}, +{"Walkthrough", "Ruta"}, +{"With all eight instruments", "Con los ocho instrumentos"}, +{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "toca la Balada del Pez del Viento ante el huevo en la meseta de Tal Tal."}, +{"(No walkthrough", "(No hay ruta"}, +{"this seed has no request.json to recompute it.)", "esta semilla no tiene request.json para volver a calcularla.)"}, +{"door -> interior it now leads into", "puerta -> interior al que lleva ahora"}, +{"interior -> where leaving it puts you", "interior -> dónde apareces al salir"}, {"boss cutscenes", "escenas de jefes"}, {"enemy minibosses", "minijefes como enemigos"}, {"escape bottle", "frasco de huida"}, @@ -1463,8 +1841,6 @@ {"Mabe bushes", "Arbustos de Mabe"}, {"Shop slot3 1st", "Tienda, puesto 3, 1.er objeto"}, {"Shop slot3 2nd", "Tienda, puesto 3, 2.º objeto"}, -{"Tarin", "Tarin"}, -{"Rock maze", "Laberinto de rocas"}, {"double stalfos", "dos stalfos"}, {"putters", "estatuas sopladoras"}, {"south orbs", "orbes sur"}, @@ -1533,12 +1909,9 @@ {"past master stalfos", "tras el caudillo stalfos"}, {"right side east", "lado derecho, este"}, {"water tunnel", "túnel de agua"}, -{"west chest", "cofre oeste"}, -{"3 wizzrobes", "3 invocantis"}, {"statue line north", "fila de estatuas norte"}, {"wizzrobe pegs", "invocantis y estacas"}, {"central room", "sala central"}, -{"north chest", "cofre norte"}, {"Stalfos Note", "Nota del stalfos"}, {"south of puzzle", "sur del puzle"}, {"west ledge", "saliente oeste"}, @@ -1548,7 +1921,6 @@ {"middle kill chest", "cofre de combate central"}, {"stalfos chest", "cofre del stalfos"}, {"angler", "Pez abisal"}, -{"3 of a kind", "trío igualado"}, {"middle ledge", "saliente central"}, {"moldorm", "Degutail"}, {"west hallway", "pasillo oeste"}, @@ -1557,10 +1929,8 @@ {"tile room", "sala de baldosas"}, {"wizzrobes ledge", "saliente de los invocantis"}, {"Rooster statue", "Estatua del cuco"}, -{"Moblin cave", "Cueva moblin"}, {"Bow Wow", "Guauguau"}, {"like likes", "like likes"}, -{"chest", "cofre"}, {"Taltal bomb hole", "Hoyo de bomba de Tal Tal"}, {"Taltal east bridge", "Puente este de Tal Tal"}, {"Taltal west dig", "Excavación oeste de Tal Tal"}, @@ -1578,11 +1948,9 @@ {"west roomba", "roomba oeste"}, {"west vire", "vire oeste"}, {"Squish Trap", "Trampa aplastante"}, -{"2f horseheads", "cabezas de caballo 2P"}, {"blue pegs chest", "cofre de estacas azules"}, {"east ledge", "saliente este"}, {"grim creeper", "Murcegador"}, -{"3f horseheads", "cabezas de caballo 3P"}, {"Shop slot5 3rd", "Tienda, puesto 5, 3.er objeto"}, {"Shop slot5 4th", "Tienda, puesto 5, 4.º objeto"}, {"Shop slot5 5th", "Tienda, puesto 5, 5.º objeto"}, @@ -1591,7 +1959,6 @@ {"final", "final"}, {"Shop slot6", "Tienda, puesto 6"}, {"Taltal east drop", "Caída este de Tal Tal"}, -{"River crossing cave", "Cueva del paso del río"}, {"South bay sunken", "Hundido al sur de la bahía"}, {"Kanalet moat north", "Foso norte de Kanalet"}, {"Rapids south island", "Isla sur de los rápidos"}, @@ -1599,7 +1966,6 @@ {"north orbs", "orbes norte"}, {"east color puzzle", "puzle de colores este"}, {"spark chest", "cofre del spark"}, -{"4 zols chest", "cofre de 4 zols"}, {"genie", "Genio"}, {"long room west", "sala larga oeste"}, {"entrance chest", "cofre de la entrada"}, @@ -1607,7 +1973,6 @@ {"peg circle", "círculo de estacas"}, {"basement north", "sótano norte"}, {"east of puzzle", "este del puzle"}, -{"sunken item", "objeto hundido"}, {"ledge north", "saliente norte"}, {"statues chest", "cofre de las estatuas"}, {"crystals", "cristales"}, @@ -1623,10 +1988,7 @@ {"gated hallway south", "pasillo con rejas sur"}, {"southwest chest", "cofre suroeste"}, {"eagle", "Rápax"}, -{"1f west", "1P oeste"}, -{"3ofakind north", "trío igualado norte"}, {"hinox", "hinox"}, -{"3ofakind south", "trío igualado sur"}, {"hothead", "Inflamio"}, {"gibdos", "gibdos"}, {"statue", "estatua"}, @@ -1719,18 +2081,14 @@ {"trendsanity", "sala de juegos"}, {"Slime Eel", "Boluga"}, {"Evil Orb", "Orbe maligno"}, -{"Genie", "Genio"}, -{"Facade", "Semblantio"}, {"Evil Eagle", "Rápax"}, {"Slime Eye", "Viscóculo"}, {"Angler Fish", "Pez abisal"}, {"Hot Head", "Inflamio"}, -{"Moldorm", "Degutail"}, {"enemy bosses", "jefes como enemigos"}, {"miniboss souls", "almas de minijefes"}, {"Blaino", "Blaino"}, {"Grim Creeper", "Murcegador"}, -{"Hinox", "Hinox"}, {"Smasher", "Aplastador"}, {"Dodongo Snakes", "Serpientes dodongo"}, {"Avalaunch", "Golemoto"}, @@ -1742,188 +2100,6 @@ {"ghost item", "objeto espectro"}, {"tunic upgrades", "ropas como mejoras"}, {"digs", "excavaciones"}, -{"Rupee", "Rupia"}, -// tracker.py -{"5 shells", "5 caracolas"}, -{"15 shells", "15 caracolas"}, -{"30 shells", "30 caracolas"}, -{"40 shells", "40 caracolas"}, -{"50 shells", "50 caracolas"}, -{"spot above the cave", "punto sobre la cueva"}, -{"spot above Key Cavern", "punto sobre la Caverna de la Llave"}, -{"Ledge above Turtle Rock", "Saliente sobre la Roca de la Tortuga"}, -{"Cave by Animal Village", "Cueva junto a la Aldea Animal"}, -{"Northwest of Animal Village", "Noroeste de la Aldea Animal"}, -{"Armos Knight", "Armos max"}, -{"Fisherman under the bridge", "Pescador bajo el puente"}, -{"Sunken item in the bay passage", "Objeto hundido en el pasadizo de la bahía"}, -{"Tree on the beach", "Árbol de la playa"}, -{"bonk", "embestida"}, -{"Chest on the beach", "Cofre de la playa"}, -{"spot on the beach", "punto de la playa"}, -{"Beside the Seashell Mansion", "Junto a la Mansión Caracola"}, -{"Chef Bear", "Chef Oso"}, -{"Christine", "Christine"}, -{"thank-you gift", "regalo de agradecimiento"}, -{"trade", "intercambio"}, -{"Ciao Ciao", "Chaochao"}, -{"Dampe's bottle challenge", "Desafío del frasco de Dampé"}, -{"Dampe's final challenge", "Desafío final de Dampé"}, -{"Dampe's heart challenge", "Desafío de corazones de Dampé"}, -{"Dampe", "Dampé"}, -{"first page", "primera página"}, -{"second page", "segunda página"}, -{"Cave in Yarna Desert", "Cueva del desierto de Yarna"}, -{"spot in Yarna Desert", "punto del desierto de Yarna"}, -{"South of Yarna Desert", "Sur del desierto de Yarna"}, -{"BowWow's doghouse", "Caseta de Guauguau"}, -{"dig", "excavación"}, -{"left", "izquierda"}, -{"right", "derecha"}, -{"Fishing pond", "Estanque de pesca"}, -{"100 points", "100 puntos"}, -{"150 points", "150 puntos"}, -{"50 points", "50 puntos"}, -{"Cheep Cheep", "Cheep Cheep"}, -{"loose item", "objeto suelto"}, -{"Ol' Baron", "Rey del lago"}, -{"orange fish", "pez naranja"}, -{"Ghost's grave", "Tumba del espectro"}, -{"Pot in %s", "Vasija en %s"}, -{"the Ghost's house", "la casa del espectro"}, -{"Ghost's reward", "Recompensa del espectro"}, -{"West of Goponga Swamp", "Oeste del pantano de Goponga"}, -{"Goriya", "Koppo"}, -{"Grandma Yahoo", "Abuela Yupi"}, -{"broom", "escoba"}, -{"Cave under the Cemetery", "Cueva bajo el cementerio"}, -{"Invisible Zora", "Zora invisible"}, -{"bombed guard", "guardia bombardeado"}, -{"crow", "cuervo"}, -{"last guard", "último guardia"}, -{"fight room", "sala de combate"}, -{"Mad Bomber", "Bombardero loco"}, -{"Kanalet moat", "Foso de Kanalet"}, -{"north", "norte"}, -{"sunken", "hundido"}, -{"south", "sur"}, -{"Cave south of Kanalet Castle", "Cueva al sur del castillo de Kanalet"}, -{"Kiki the monkey", "El mono Mimi"}, -{"Seashell bush in Mabe Village", "Arbusto con caracola en la aldea Mabe"}, -{"Mad Batter", "Murciélago chiflado"}, -{"Mysterious Forest", "Bosque Misterioso"}, -{"song", "canción"}, -{"Martha the mermaid", "Martha la sirena"}, -{"Mr. Write", "Dr. Wright"}, -{"North of the Moblin cave", "Norte de la cueva moblin"}, -{"North of Tabahl Wasteland", "Norte del páramo de Tabahl"}, -{"Rock maze in Ukuku Prairie", "Laberinto de rocas de la pradera de Ukuku"}, -{"Island in the pond", "Isla del estanque"}, -{"last hole", "último hoyo"}, -{"cave on the climb", "cueva de la subida"}, -{"east island", "isla este"}, -{"middle island", "isla central"}, -{"race under 30 s", "carrera en menos de 30 s"}, -{"race under 35 s", "carrera en menos de 35 s"}, -{"race under 45 s", "carrera en menos de 45 s"}, -{"south island", "isla sur"}, -{"west island", "isla oeste"}, -{"Cave by the river crossing", "Cueva junto al paso del río"}, -{"shelf", "repisa"}, -{"Small island off the coast", "Islote frente a la costa"}, -{"South of Martha's Bay", "Sur de la bahía de Martha"}, -{"southwest of Martha's Bay", "suroeste de la bahía de Martha"}, -{"Chest in Goponga Swamp", "Cofre del pantano de Goponga"}, -{"Syrup the witch", "La bruja"}, -{"Tree south of Tail Cave", "Árbol al sur de la Cueva Tail"}, -{"five chest game", "juego de los cinco cofres"}, -{"bomb hole", "hoyo de bomba"}, -{"crossing cave", "cueva de paso"}, -{"east bridge", "puente este"}, -{"east drop", "caída este"}, -{"left chest", "cofre izquierdo"}, -{"blocks at the entrance", "bloques de la entrada"}, -{"chest at the entrance", "cofre de la entrada"}, -{"hole", "hoyo"}, -{"chest on the ledge", "cofre del saliente"}, -{"cave on the left climb", "cueva de la subida izquierda"}, -{"cave by the rooster", "cueva junto al cuco"}, -{"way out", "salida"}, -{"under a rock", "bajo una roca"}, -{"Tarin at the beehive", "Tarin en la colmena"}, -{"last prize", "último premio"}, -{"Tree in Ukuku Prairie", "Árbol de la pradera de Ukuku"}, -{"Ukuku cave", "Cueva de Ukuku"}, -{"east chest", "cofre este"}, -{"east item", "objeto este"}, -{"west item", "objeto oeste"}, -{"Under the skull rock", "Bajo la roca calavera"}, -{"Cave by the villa", "Cueva junto a la finca"}, -{"Washed up on the beach", "Varado en la playa"}, -{"spot in Tabahl Wasteland", "punto del páramo de Tabahl"}, -{"Forest crossing cave", "Cueva de paso del bosque"}, -{"item", "objeto"}, -{"Forest north cave", "Cueva norte del bosque"}, -{"south chest", "cofre sur"}, -{"Bush", "Arbusto"}, -{"spot", "punto"}, -{"Pot", "Vasija"}, -{"Apple tree", "Manzano"}, -{"Rock", "Roca"}, -{"Marin and Tarin's house", "la casa de Marin y Tarin"}, -{"the quadruplets' house", "la casa de los cuatrillizos"}, -{"the Southern Face Shrine", "el sur del Templo del Rostro"}, -{"the witch's hut", "la casa de la bruja"}, -{"the library", "la biblioteca"}, -{"the Seashell Mansion", "la Mansión Caracola"}, -{"a telephone booth", "una cabina telefónica"}, -{"the Town Tool Shop", "la tienda de utensilios"}, -{"the Dream Shrine", "el Santuario del Ensueño"}, -{"north-west", "noroeste"}, -{"north-east", "noreste"}, -{"south-west", "suroeste"}, -{"south-east", "sureste"}, -{"centre", "centro"}, -{"middle", "medio"}, -{"inside", "dentro"}, -{"Trendy Game: prize %s", "Sala de juegos: premio %s"}, -{"Pot (%s)", "Vasija (%s)"}, -{"%s of 3", "%s de 3"}, -{"Slime eye", "Viscóculo"}, -{"Angler", "Pez abisal"}, -{"Slime eel", "Boluga"}, -{"Master stalfos", "Caudillo stalfos"}, -{"Eagle", "Rápax"}, -{"Hothead", "Inflamio"}, -{"Owl statue long hallway", "Estatua de búho del pasillo largo"}, -{"Owl statue spinies", "Estatua de búho de los pinchones"}, -{"Owl statue 3 of a kind", "Estatua de búho del trío igualado"}, -{"Owl statue first switch", "Estatua de búho del primer interruptor"}, -{"Owl statue push puzzle", "Estatua de búho del puzle de empujar"}, -{"Owl statue past hinox", "Estatua de búho tras el hinox"}, -{"Owl statue basement north", "Estatua de búho del sótano norte"}, -{"Owl statue arrow", "Estatua de búho de la flecha"}, -{"Owl statue northwest", "Estatua de búho del noroeste"}, -{"Owl statue", "Estatua de búho"}, -{"Owl statue triple stalfos", "Estatua de búho de los tres stalfos"}, -{"Owl statue before slime eel", "Estatua de búho antes de Boluga"}, -{"Owl statue ledge", "Estatua de búho del saliente"}, -{"Owl statue southeast", "Estatua de búho del sureste"}, -{"Owl statue canal", "Estatua de búho del canal"}, -{"Owl statue ball", "Estatua de búho de la bola"}, -{"Owl statue kirbys", "Estatua de búho de los Kirby"}, -{"Owl statue hookshot chest", "Estatua de búho del cofre del gancho"}, -{"Owl statue above smasher", "Estatua de búho sobre el aplastador"}, -{"Owl statue below gibdos", "Estatua de búho bajo los gibdos"}, -{"Owl statue eye statue", "Estatua de búho de la estatua del ojo"}, -{"Owl statue nine switches", "Estatua de búho de los nueve interruptores"}, -{"Owl statue first switches", "Estatua de búho de los primeros interruptores"}, -{"Owl statue before mini boss", "Estatua de búho antes del minijefe"}, -{"Owl statue below D8", "Estatua de búho bajo la D8"}, -// separators (tools/menu_strings.py) -{", ", ", "}, -{": ", ": "}, -// not used any more {"Set the buttons and keys for the game. F1, Esc, Home or Back + Start always open this menu.", "Asigna los botones y teclas del juego. F1, Esc, HOME o Back + Start siempre abren este menú."}, {"! This folder is synced by OneDrive", "! OneDrive sincroniza esta carpeta"}, {"About %.0f GB of game files will upload to your OneDrive.", "Se subirán unos %.0f GB de archivos del juego a tu OneDrive."}, diff --git a/runtime/ui/lang/fr.inc b/runtime/ui/lang/fr.inc index cd561e483..a2a18fcfb 100644 --- a/runtime/ui/lang/fr.inc +++ b/runtime/ui/lang/fr.inc @@ -226,13 +226,9 @@ {"Appearance", "Apparence"}, {"Layout", "Disposition"}, {"Follow thumb", "Suivre le pouce"}, -{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Oui : il vient là où se pose ton pouce, n'importe où en bas à gauche. Non : il reste à sa place (déplace-le dans Modifier la disposition tactile)."}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it with the Layout button).", "Oui : il vient là où se pose ton pouce, n'importe où en bas à gauche. Non : il reste à sa place (déplace-le avec le bouton de disposition)."}, {"Layout button", "Bouton de disposition"}, {"A button at the top, next to the menu button, that lets you move and resize the on-screen buttons.", "Un bouton en haut, à côté du bouton du menu, pour déplacer et redimensionner les boutons à l'écran."}, -{"Load a save first.", "Charge d'abord une sauvegarde."}, -{"Edit touch layout", "Modifier la disposition tactile"}, -{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Déplace les boutons à l'écran, change la taille de chacun ou masque-le, par-dessus le jeu. Disponible en cours de partie."}, {"Reset touch layout", "Réinitialiser la disposition tactile"}, {"Puts every on-screen button back in its place, at its size, shown.", "Remet chaque bouton à l'écran à sa place, à sa taille, et l'affiche."}, // runtime/ui/difficulty.mm @@ -691,6 +687,7 @@ {"The game's echo in caves, dungeons and big rooms.", "L'écho du jeu dans les grottes, les donjons et les grandes salles."}, {"LAS Recomp menu sounds", "Sons des menus LAS Recomp"}, {"Sounds when you move around and pick things in LAS Recomp's menus.", "Les sons quand tu te déplaces et choisis dans les menus de LAS Recomp."}, +{"Load a save first.", "Charge d'abord une sauvegarde."}, {"Quit", "Quitter"}, {"Reset Game", "Réinitialiser le jeu"}, {"Progress since your last save is lost.", "La progression depuis ta dernière sauvegarde sera perdue."}, @@ -1090,6 +1087,8 @@ {"Reveal spoilers", "Afficher les spoilers"}, {"Search items and places", "Chercher objets et lieux"}, {"Search the spoiler log", "Chercher dans le spoiler log"}, +{"Useful items only", "Objets utiles seulement"}, +{"Hide checked", "Masquer les faits"}, // runtime/ui/tracker_overlay.mm {"Seashells", "Coquillages"}, {"%d Small Keys", "%d petites clés"}, @@ -1122,7 +1121,6 @@ {"needs %s +%d", "requiert %s +%d"}, {"Filter: %s", "Filtre : %s"}, {"In logic now", "Dans la logique"}, -{"Hide checked", "Masquer les faits"}, {"Filters", "Filtres"}, {"Room %c%d", "Salle %c%d"}, {"trick logic", "logique à astuces"}, @@ -1177,9 +1175,9 @@ {"This is where Manbo's Mambo drops you. You can't warp here directly.", "C'est là que le Mambo de Manbo te dépose. Tu ne peux pas t'y téléporter directement."}, {"%d places", "%d lieux"}, {"Load a save to warp.", "Charge une sauvegarde pour te téléporter."}, +{"Places", "Lieux"}, {"Search", "Chercher"}, {"Search places...", "Chercher un lieu..."}, -{"Places", "Lieux"}, {"Link is here", "Link est ici"}, // warp_data.h {"Dungeons", "Donjons"}, @@ -1306,28 +1304,112 @@ {"Building game files (%s tasks)", "Création des fichiers du jeu (%s tâches)"}, {"Triforce hunt: %s", "Chasse à la Triforce : %s"}, // spoiler_view.py -{"Settings: %s", "Paramètres : %s"}, -{"Walkthrough", "Parcours"}, -{"Items by area", "Objets par zone"}, -{"Starting items: %s", "Objets de départ : %s"}, +{"Route", "Parcours"}, +{"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Seulement ce qu'il faut pour finir la seed. Chaque étape est accessible avec les objets des étapes précédentes."}, +{"Finish", "Fin"}, +{"Everything useful step by step", "Tout ce qui est utile, étape par étape"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Chaque étape peut se faire avec ce que tu avais après les étapes précédentes (dans n'importe quel ordre au sein d'une étape)."}, {"Only items that open things up are listed; rupees", "Seuls les objets qui débloquent quelque chose sont listés ; rubis"}, {"traps and similar are left out.", "pièges et autres sont omis."}, -{"Finish", "Fin"}, -{"With all eight instruments", "Avec les huit instruments"}, -{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "joue la Ballade du Poisson-Rêve devant l'œuf sur le plateau Tartare."}, -{"(No walkthrough", "(Pas de parcours"}, -{"this seed has no request.json to recompute it.)", "cette seed n'a pas de request.json pour le recalculer.)"}, +{"Items by area", "Objets par zone"}, +{"Dungeon rooms", "Salles de donjon"}, +{"Where each moved room is now and where it came from.", "Où se trouve chaque salle déplacée et d'où elle vient."}, {"Entrances", "Entrées"}, -{"%s entrance leads into %s", "L'entrée de %s mène à %s"}, -{"%s:", "%s :"}, {"Doors", "Portes"}, -{"door -> interior it now leads into", "porte -> intérieur où elle mène maintenant"}, +{"each door and where it now leads", "chaque porte et où elle mène maintenant"}, +{"Settings: %s", "Paramètres : %s"}, +{"(This seed has no step list.)", "(Cette seed n'a pas de liste d'étapes.)"}, +{"%s entrance leads into %s", "L'entrée de %s mène à %s"}, +{"Unchanged (%s)", "Inchangées (%s)"}, {"Exits", "Sorties"}, -{"interior -> where leaving it puts you", "intérieur -> où tu arrives en sortant"}, +{"each way out and where it puts you", "chaque sortie et où elle te mène"}, +{"Starting items: %s", "Objets de départ : %s"}, +{"%s:", "%s :"}, +{"Small items (%s)", "Petits objets (%s)"}, {"%s - enter through %s's entrance", "%s - entrer par l'entrée de %s"}, {"%s's Soul", "Âme de %s"}, {"%s' Soul", "Âme de %s"}, +{"room %s", "salle %s"}, +{"The last of the %s Triforce pieces you need ends the game.", "Le dernier des %s fragments de Triforce nécessaires termine la partie."}, +{"2nd", "2e"}, +{"shelf", "étagère"}, +{"second item", "deuxième objet"}, +{"third item", "troisième objet"}, +{"west side door", "porte côté ouest"}, +{"east side door", "porte côté est"}, +{"Fire cave", "Grotte du feu"}, +{"north door", "porte nord"}, +{"south door", "porte sud"}, +{"Wind Fish's egg", "Œuf Sacré"}, +{"rooster house", "maison du coq"}, +{"Telephone booth by Turtle Rock", "Cabine téléphonique près du roc de la Tortue"}, +{"Mad Batter well", "Puits de la chauve-souris folle"}, +{"Tal Tal crossing cave", "Grotte de passage, Tartare"}, +{"west door", "porte ouest"}, +{"east door", "porte est"}, +{"Mountain cave", "Grotte de la montagne"}, +{"bottom door", "porte du bas"}, +{"top door", "porte du haut"}, +{"ledge door", "porte de la corniche"}, +{"Papahl's cave", "Grotte de Papounet"}, +{"lower door", "porte inférieure"}, +{"upper door", "porte supérieure"}, +{"Bird Key cave", "Grotte de la clé Vautour"}, +{"Five chest cave", "Grotte des cinq coffres"}, +{"Five chest game", "Jeu des cinq coffres"}, +{"exit door", "porte de sortie"}, +{"Rainbow cave", "Grotte de l'arc-en-ciel"}, +{"outer west door", "porte ouest extérieure"}, +{"inner west door", "porte ouest intérieure"}, +{"inner east door", "porte est intérieure"}, +{"outer east door", "porte est extérieure"}, +{"Fairy fountain", "Fontaine de la Grande fée"}, +{"Tal Tal east", "Tartare est"}, +{"Cave to Eagle's Tower", "Grotte vers la tour du Vautour"}, +{"Cave by Angler's Tunnel", "Grotte près de l'abîme du Poisson"}, +{"Damp cave", "Grotte humide"}, +{"Raft cave", "Grotte du radeau"}, +{"Telephone booth", "Cabine téléphonique"}, +{"Moblin cave", "Grotte des Moblins"}, +{"Dampe's house", "Cabane d'Igor"}, +{"Rapids Ride raft shop", "Location de radeaux des rapides"}, +{"Mysterious Forest", "Forêt Enchantée"}, +{"north cave", "grotte nord"}, +{"Kanalet tunnel", "Tunnel de Canulet"}, +{"Telephone booth by Kanalet Castle", "Cabine téléphonique près du château Canulet"}, +{"roof west door", "porte ouest du toit"}, +{"roof east door", "porte est du toit"}, +{"front door", "porte d'entrée"}, +{"Cave south of Kanalet Castle", "Grotte au sud du château Canulet"}, +{"Forest crossing cave", "Grotte de passage de la forêt"}, +{"forest", "forêt"}, +{"north side door", "porte côté nord"}, +{"Ukuku cave", "Grotte d'Oukoukou"}, +{"Ukuku Prairie north", "Prairie Oukoukou nord"}, +{"Ukuku Prairie west", "Prairie Oukoukou ouest"}, +{"Cave to Face Shrine", "Grotte vers le temple du Masque"}, +{"Fairy fountain by the Armos maze", "Fontaine de la Grande fée près du labyrinthe d'Armos"}, +{"Flying Rooster's grave", "Tombe du Coq Volant"}, +{"River crossing cave", "Grotte de la traversée de la rivière"}, +{"Armos maze cave", "Grotte du labyrinthe d'Armos"}, +{"BowWow's kennel", "Niche de Toutou"}, +{"Marin and Tarin's house", "Maison de Marine et Tarkin"}, +{"Mabe Village library", "Bibliothèque du village des Mouettes"}, +{"Cliff cave by the bay", "Grotte de la falaise près de la baie"}, +{"plateau door", "porte du plateau"}, +{"Cave behind Richard's villa", "Grotte derrière la villa de Richard"}, +{"rabbit house", "maison des lapins"}, +{"Zora's house", "Maison du Zora"}, +{"bombed cave", "grotte ouverte à la bombe"}, +{"Lanmola cave", "Grotte du Lanmola"}, +{"east dive spot", "point de plongée est"}, +{"west dive spot", "point de plongée ouest"}, +{"Sale's banana house", "Chez AlligoBanane"}, +{"bay", "baie"}, +{"Tunnel to the bay Mad Batter", "Tunnel vers la chauve-souris folle de la baie"}, +{"Mermaid statue", "Statue de la sirène"}, +{"Boomerang cave", "Grotte du boomerang"}, +{"Ghost's house", "Maison du fantôme"}, {"Signpost Maze", "Dédale des Panneaux"}, {"Ancient Ruins", "Ruines antiques"}, {"west", "ouest"}, @@ -1338,98 +1420,180 @@ {"50 Rupees", "50 rubis"}, {"100 Rupees", "100 rubis"}, {"300 Rupees", "300 rubis"}, +{"1 Rupee", "1 rubis"}, {"Trap!", "Piège !"}, {"Frog Song of Soul", "Rap des grenouilles"}, {"Chamber Stone", "Carrelite"}, +{"Triforce piece", "Fragment de Triforce"}, {"Beach chest", "Coffre de la plage"}, +{"Chest on the beach", "Coffre sur la plage"}, {"Taltal entrance chest", "Coffre de l'entrée de Tartare"}, +{"chest at the entrance", "coffre de l'entrée"}, {"Taltal east left chest", "Coffre de gauche, Tartare est"}, +{"left chest", "coffre de gauche"}, {"Dream shrine right", "Gîte des Rêves, droite"}, +{"right", "droite"}, {"Armos cave", "Grotte d'Armos"}, {"Goponga cave left", "Grotte des Anémones, gauche"}, +{"left", "gauche"}, {"Goponga cave right", "Grotte des Anémones, droite"}, {"Ukuku cave west chest", "Coffre de la grotte ouest d'Oukoukou"}, +{"west chest", "coffre ouest"}, {"Ukuku cave east chest", "Coffre de la grotte est d'Oukoukou"}, +{"east chest", "coffre est"}, {"Kanalet south cave", "Grotte sud de Canulet"}, {"Swamp chest", "Coffre du marais"}, +{"Chest in Goponga Swamp", "Coffre du marais des Anémones"}, {"Taltal left ascent cave", "Grotte de montée gauche, Tartare"}, +{"cave on the left climb", "grotte de la montée gauche"}, {"Taltal ledge chest", "Coffre de la corniche, Tartare"}, +{"chest on the ledge", "coffre sur la corniche"}, {"Taltal 5 chest puzzle", "Énigme des 5 coffres, Tartare"}, +{"five chest game", "jeu des cinq coffres"}, {"Taltal west chest", "Coffre ouest, Tartare"}, {"Villa cave", "Grotte de la villa"}, +{"Cave by the villa", "Grotte près de la villa"}, {"Woods crossing cave chest", "Coffre de la grotte de passage, forêt"}, +{"chest", "coffre"}, {"Woods north cave chest", "Coffre de la grotte nord, forêt"}, +{"Forest north cave", "Grotte nord de la forêt"}, {"Woods south chest", "Coffre sud, forêt"}, +{"south chest", "coffre sud"}, {"Woods north chest", "Coffre nord, forêt"}, +{"north chest", "coffre nord"}, {"Fishing", "Pêche"}, +{"Fishing pond", "Étang"}, +{"50 points", "50 points"}, {"Fishing orange", "Pêche, orange"}, +{"orange fish", "poisson orange"}, {"Fishing loose", "Pêche, au sol"}, +{"loose item", "objet au sol"}, +{"100 points", "100 points"}, +{"150 points", "150 points"}, {"Fishing cheep cheep", "Pêche, Cheep Cheep"}, +{"Cheep Cheep", "Cheep Cheep"}, {"Fishing ol baron", "Pêche, roi de l'étang"}, +{"Ol' Baron", "Roi de l'étang"}, {"Rapids race", "Course des rapides"}, +{"race under 45 s", "course en moins de 45 s"}, +{"race under 35 s", "course en moins de 35 s"}, +{"race under 30 s", "course en moins de 30 s"}, {"Rapids middle island", "Île du milieu des rapides"}, +{"middle island", "île du milieu"}, {"Rapids west island", "Île ouest des rapides"}, +{"west island", "île ouest"}, {"Dampe page", "Igor, page"}, +{"Dampe", "Igor"}, +{"first page", "première page"}, {"Dampe heart challenge", "Igor, problème des cœurs"}, +{"Dampe's heart challenge", "Problème des cœurs d'Igor"}, +{"second page", "deuxième page"}, {"Dampe bottle challenge", "Igor, problème du flacon"}, +{"Dampe's bottle challenge", "Problème du flacon d'Igor"}, {"Dampe final", "Igor, final"}, +{"Dampe's final challenge", "Problème final d'Igor"}, {"Walrus", "Morse"}, {"Ghost reward", "Récompense du fantôme"}, +{"Ghost's reward", "Récompense du fantôme"}, +{"song", "chant"}, {"Manbo", "Manbo"}, {"Mamu", "Wart"}, {"Mad batter bay", "Chauve-souris folle, baie"}, +{"Mad Batter", "Chauve-souris folle"}, {"Mad batter taltal", "Chauve-souris folle, Tartare"}, {"Mad batter woods", "Chauve-souris folle, forêt"}, {"Invisible zora", "Zora invisible"}, +{"Invisible Zora", "Zora invisible"}, {"Goriya trader", "Goriya marchand"}, +{"Goriya", "Goriya"}, +{"trade", "échange"}, {"Mamasha", "Mamounette"}, {"Ciao ciao", "Kaïkaï"}, +{"Ciao Ciao", "Kaïkaï"}, {"Sale", "Alligo"}, {"Kiki", "Kiki"}, +{"Kiki the monkey", "Kiki le singe"}, {"Tarin ukuku", "Tarkin, Oukoukou"}, +{"Tarin at the beehive", "Tarkin à la ruche"}, {"Chef bear", "Ours cuisinier"}, +{"Chef Bear", "Ours cuisinier"}, {"Papahl", "Papounet"}, {"Christine trade", "Échange avec Christine"}, +{"Christine", "Christine"}, {"Christine grateful", "Christine reconnaissante"}, +{"thank-you gift", "cadeau de remerciement"}, {"Mr write", "Dr Wright"}, +{"Mr. Write", "Dr Wright"}, {"Grandma yahoo", "Mamie Youpi"}, +{"Grandma Yahoo", "Mamie Youpi"}, +{"broom", "balai"}, {"Bay fisherman", "Pêcheur de la baie"}, +{"Fisherman under the bridge", "Pêcheur sous le pont"}, {"Mermaid martha", "Sirène, baie de Martha"}, +{"Martha the mermaid", "Martha la sirène"}, {"Mermaid cave", "Grotte de la sirène"}, {"Lanmola", "Lanmola"}, {"Armos knight", "Grand Armos"}, +{"Armos Knight", "Grand Armos"}, {"Washed up", "Échoué sur la plage"}, +{"Washed up on the beach", "Échoué sur la plage"}, {"Dream shrine left", "Gîte des Rêves, gauche"}, {"Taltal rooster cave", "Grotte du coq, Tartare"}, +{"cave by the rooster", "grotte près du coq"}, {"Woods loose", "Forêt, au sol"}, {"Pothole final", "Champ des pièges, final"}, +{"last hole", "dernier trou"}, {"5 seashell reward", "Récompense des 5 coquillages"}, +{"5 shells", "5 coquillages"}, {"15 seashell reward", "Récompense des 15 coquillages"}, +{"15 shells", "15 coquillages"}, {"30 seashell reward", "Récompense des 30 coquillages"}, +{"30 shells", "30 coquillages"}, {"40 seashell reward", "Récompense des 40 coquillages"}, +{"40 shells", "40 coquillages"}, {"50 seashell reward", "Récompense des 50 coquillages"}, +{"50 shells", "50 coquillages"}, {"Animal village northwest", "Village des Animaux, nord-ouest"}, +{"Northwest of Animal Village", "Nord-ouest du village des Animaux"}, {"Animal village cave", "Grotte du village des Animaux"}, +{"Cave by Animal Village", "Grotte près du village des Animaux"}, {"Taltal entrance blocks", "Blocs de l'entrée de Tartare"}, +{"blocks at the entrance", "blocs de l'entrée"}, {"North wasteland", "Nord de la Morne Plaine"}, +{"North of Tabahl Wasteland", "Nord de la Morne Plaine"}, {"Desert cave", "Grotte du désert"}, +{"Cave in Yarna Desert", "Grotte des dunes de Yarna"}, {"Graveyard cave", "Grotte du cimetière"}, +{"Cave under the Cemetery", "Grotte sous le cimetière"}, {"Mabe well", "Puits des Mouettes"}, {"Ukuku cave west loose", "Grotte ouest d'Oukoukou, au sol"}, +{"west item", "objet ouest"}, {"Ukuku cave east loose", "Grotte est d'Oukoukou, au sol"}, +{"east item", "objet est"}, {"Rapids ascent cave", "Grotte de montée des rapides"}, +{"cave on the climb", "grotte de la montée"}, {"Taltal crossing cave", "Grotte de passage, Tartare"}, +{"crossing cave", "grotte de passage"}, {"Taltal west escape", "Échappée ouest, Tartare"}, +{"way out", "sortie"}, {"Above turtle rock", "Au-dessus du roc de la Tortue"}, +{"Ledge above Turtle Rock", "Corniche au-dessus du roc de la Tortue"}, {"Pothole north", "Champ des pièges, nord"}, +{"north", "nord"}, {"Woods crossing cave loose", "Grotte de passage de la forêt, au sol"}, +{"item", "objet"}, {"Woods north cave loose", "Grotte nord de la forêt, au sol"}, {"Diamond island", "Île en losange"}, {"Kanalet crow", "Corbeau de Canulet"}, +{"crow", "corbeau"}, {"Kanalet mad bomber", "Poseur de bombes de Canulet"}, +{"Mad Bomber", "Poseur de bombes"}, {"Kanalet kill room", "Salle des ennemis de Canulet"}, +{"fight room", "salle de combat"}, {"Kanalet bombed guard", "Garde bombardé de Canulet"}, +{"bombed guard", "garde bombardé"}, {"Kanalet final guard", "Dernier garde de Canulet"}, +{"last guard", "dernier garde"}, {"Owl statue moblin cave", "Statue de hibou, grotte des Moblins"}, {"Owl statue pothole", "Statue de hibou, champ des pièges"}, {"Owl statue above cave", "Statue de hibou, au-dessus de la grotte"}, @@ -1438,8 +1602,222 @@ {"Owl statue maze", "Statue de hibou, dédale"}, {"Owl statue rapids", "Statue de hibou, rapides"}, {"Owl statue taltal east", "Statue de hibou, Tartare est"}, +{"Instrument", "Instrument"}, +{"Moldorm", "Gigantehl"}, +{"West hallway", "Couloir ouest"}, +{"Middle ledge", "Corniche du milieu"}, +{"3 of a kind", "Brelan"}, +{"Bomb room", "Salle des bombes"}, +{"Middle kill chest", "Coffre des ennemis, milieu"}, +{"Spark chest", "Coffre du Spark"}, +{"Button chest", "Coffre à interrupteur"}, +{"Stalfos chest", "Coffre des Stalfos"}, +{"4 zols chest", "coffre des 4 Zols"}, +{"Beetles", "Grouilleurs"}, +{"Owl statue long hallway", "Statue de hibou, long couloir"}, +{"Owl statue spinies", "Statue de hibou, Hériss"}, +{"Owl statue 3 of a kind", "Statue de hibou, Brelan"}, +{"Genie", "Génie"}, +{"Boos", "Boo"}, +{"Long room west", "Longue salle ouest"}, +{"Long room east", "Longue salle est"}, +{"Vacuum mouth room", "Salle de la bouche aspirante"}, +{"Kill puzzle", "Énigme des ennemis"}, +{"West chest", "Coffre ouest"}, +{"Double stalfos", "Double Stalfos"}, +{"Double shy guys", "Double Maskass"}, +{"Entrance chest", "Coffre de l'entrée"}, +{"Single shy guy", "Maskass seul"}, +{"Peg circle", "Cercle de plots"}, +{"Owl statue first switch", "Statue de hibou, premier interrupteur"}, +{"Owl statue push puzzle", "Statue de hibou, énigme à pousser"}, +{"Owl statue past hinox", "Statue de hibou, après le Hinox"}, +{"Slime eye", "Gigazol"}, +{"Pre boss", "Avant le boss"}, +{"Triple bombites", "Trois Bombars"}, +{"North chest", "Coffre nord"}, +{"Central ledge", "Corniche centrale"}, +{"Central chest", "Coffre central"}, +{"East ledge", "Corniche est"}, +{"Pairodds", "Télépiou"}, +{"Five zols", "Cinq Zols"}, +{"Basement north", "Sous-sol nord"}, +{"Basement west", "Sous-sol ouest"}, +{"Basement south", "Sous-sol sud"}, +{"Hallway", "Couloir"}, +{"Hallway side room", "Salle annexe du couloir"}, +{"Vacuum mouth", "Bouche aspirante"}, +{"Owl statue basement north", "Statue de hibou, sous-sol nord"}, +{"Owl statue arrow", "Statue de hibou, flèche"}, +{"Owl statue northwest", "Statue de hibou, nord-ouest"}, +{"Angler", "Baudroie"}, +{"East side north", "Côté est, nord"}, +{"East side south", "Côté est, sud"}, +{"West ledge", "Corniche ouest"}, +{"East of puzzle", "Est de l'énigme"}, +{"South of puzzle", "Sud de l'énigme"}, +{"Sunken item", "Objet sous l'eau"}, +{"Central room", "Salle centrale"}, +{"Small island", "Petite île"}, +{"Ledge north", "Corniche nord"}, +{"Statues chest", "Coffre des statues"}, +{"Lobby", "Hall"}, +{"Crystals", "Cristaux"}, +{"Owl statue", "Statue de hibou"}, +{"Slime eel", "Emmurène"}, +{"Master stalfos", "Maître Stalfon"}, +{"Crystal blocks", "Blocs de cristal"}, +{"Past master stalfos", "Après le Maître Stalfon"}, +{"Water tunnel", "Tunnel d'eau"}, +{"Right side north", "Côté droit, nord"}, +{"Right side middle", "Côté droit, milieu"}, +{"Right side east", "Côté droit, est"}, +{"Helmasaurs", "Hiploops"}, +{"West stairs chest", "Coffre de l'escalier ouest"}, +{"Near entrance", "Près de l'entrée"}, +{"Owl statue triple stalfos", "Statue de hibou, trois Stalfos"}, +{"Owl statue before slime eel", "Statue de hibou, avant l'Emmurène"}, +{"Facade", "Face de dalles"}, +{"Far northwest", "Extrême nord-ouest"}, +{"Far northeast", "Extrême nord-est"}, +{"Statue line north", "Ligne de statues, nord"}, +{"Statue line south", "Ligne de statues, sud"}, +{"Wizzrobe pegs", "Plots des Sorciers"}, +{"Canal", "Canal"}, +{"3 wizzrobes", "3 Sorciers"}, +{"Tile room", "Salle carrelée"}, +{"Gated hallway north", "Couloir à grilles, nord"}, +{"Gated hallway south", "Couloir à grilles, sud"}, +{"Southwest chest", "Coffre sud-ouest"}, +{"Wizzrobes ledge", "Corniche des Sorciers"}, +{"Owl statue ledge", "Statue de hibou, corniche"}, +{"Owl statue southeast", "Statue de hibou, sud-est"}, +{"Owl statue canal", "Statue de hibou, canal"}, +{"Eagle", "Vulturos"}, +{"Like likes", "Like Like"}, +{"1f west", "1F ouest"}, +{"3ofakind north", "Brelan nord"}, +{"2f horseheads", "têtes de cheval 2F"}, +{"Hinox", "Hinox"}, +{"3ofakind south", "Brelan sud"}, +{"Blue pegs chest", "Coffre des plots bleus"}, +{"3f horseheads", "têtes de cheval 3F"}, +{"Grim creeper", "Dompteur de Piccolos"}, +{"Owl statue ball", "Statue de hibou, boule"}, +{"Owl statue kirbys", "Statue de hibou, Kirby"}, +{"Owl statue hookshot chest", "Statue de hibou, coffre du grappin"}, +{"Hothead", "Coloflamme"}, +{"Left exit chest", "Coffre de la sortie gauche"}, +{"Dodongos", "Dodongos"}, +{"Northern ledge", "Corniche nord"}, +{"Gibdos", "Gibdos"}, +{"Beamos chest", "Coffre du Beamos"}, +{"Statue", "Statue"}, +{"Torches", "Torches"}, +{"West vire", "Vire ouest"}, +{"West roomba", "Roomba ouest"}, +{"Surrounded by blocks", "Entouré de blocs"}, +{"Sparks chest", "Coffre des Sparks"}, +{"East of pots", "Est des jarres"}, +{"East roomba", "Roomba est"}, +{"Far southwest", "Extrême sud-ouest"}, +{"Far southeast", "Extrême sud-est"}, +{"Owl statue above smasher", "Statue de hibou, au-dessus du Smasher"}, +{"Owl statue below gibdos", "Statue de hibou, sous les Gibdos"}, +{"Owl statue eye statue", "Statue de hibou, statue à œil"}, +{"Northern chest", "Coffre nord"}, +{"Zol pots", "Jarres à Zol"}, +{"North orbs", "Orbes nord"}, +{"South orbs", "Orbes sud"}, +{"East color puzzle", "Énigme des couleurs est"}, +{"West color puzzle", "Énigme des couleurs ouest"}, +{"Putters", "Karakoro"}, +{"Owl statue nine switches", "Statue de hibou, neuf interrupteurs"}, +{"Owl statue first switches", "Statue de hibou, premiers interrupteurs"}, +{"Owl statue before mini boss", "Statue de hibou, avant le mini-boss"}, +{"Rupee", "Rubis"}, {"stone beak", "bec de pierre"}, -// spoiler logs +// tracker.py +{"spot above the cave", "endroit au-dessus de la grotte"}, +{"spot above Key Cavern", "endroit au-dessus du souterrain aux Clés"}, +{"Sunken item in the bay passage", "Objet sous l'eau dans le passage de la baie"}, +{"Tree on the beach", "Arbre sur la plage"}, +{"bonk", "choc"}, +{"spot on the beach", "endroit sur la plage"}, +{"Beside the Seashell Mansion", "À côté de la maison aux coquillages"}, +{"spot in Yarna Desert", "endroit dans les dunes de Yarna"}, +{"South of Yarna Desert", "Sud des dunes de Yarna"}, +{"BowWow's doghouse", "Niche de Toutou"}, +{"dig", "fouille"}, +{"Ghost's grave", "Tombe du fantôme"}, +{"Pot in %s", "Jarre dans %s"}, +{"the Ghost's house", "la maison du fantôme"}, +{"West of Goponga Swamp", "Ouest du marais des Anémones"}, +{"Kanalet moat", "Douves de Canulet"}, +{"sunken", "sous l'eau"}, +{"south", "sud"}, +{"Seashell bush in Mabe Village", "Buisson à coquillage du village des Mouettes"}, +{"North of the Moblin cave", "Nord de la grotte des Moblins"}, +{"Rock maze in Ukuku Prairie", "Labyrinthe de rochers de la prairie Oukoukou"}, +{"Island in the pond", "Île de l'étang"}, +{"east island", "île est"}, +{"south island", "île sud"}, +{"Cave by the river crossing", "Grotte près de la traversée de la rivière"}, +{"Rock maze", "Labyrinthe de rochers"}, +{"Small island off the coast", "Petite île au large"}, +{"South of Martha's Bay", "Sud de la baie de Martha"}, +{"southwest of Martha's Bay", "sud-ouest de la baie de Martha"}, +{"Syrup the witch", "Syrup la sorcière"}, +{"Tree south of Tail Cave", "Arbre au sud de la caverne Flagello"}, +{"bomb hole", "trou à bombe"}, +{"east bridge", "pont est"}, +{"east drop", "chute est"}, +{"hole", "trou"}, +{"sunken item", "objet sous l'eau"}, +{"under a rock", "sous un rocher"}, +{"Tarin", "Tarkin"}, +{"last prize", "dernier lot"}, +{"Tree in Ukuku Prairie", "Arbre de la prairie Oukoukou"}, +{"Under the skull rock", "Sous le rocher crâne"}, +{"spot in Tabahl Wasteland", "endroit dans la Morne Plaine"}, +{"Bush", "Buisson"}, +{"spot", "endroit"}, +{"Pot", "Jarre"}, +{"Apple tree", "Pommier"}, +{"Rock", "Rocher"}, +{"the quadruplets' house", "la maison des quadruplés"}, +{"the Southern Face Shrine", "le temple du Masque - sud"}, +{"the witch's hut", "la hutte de la sorcière"}, +{"the library", "la bibliothèque"}, +{"the Seashell Mansion", "la maison aux coquillages"}, +{"a telephone booth", "une cabine téléphonique"}, +{"the Town Tool Shop", "le bazar du centre"}, +{"the Dream Shrine", "le gîte des Rêves"}, +{"north-west", "nord-ouest"}, +{"north-east", "nord-est"}, +{"south-west", "sud-ouest"}, +{"south-east", "sud-est"}, +{"centre", "centre"}, +{"middle", "milieu"}, +{"inside", "intérieur"}, +{"Trendy Game: prize %s", "Jeu dans le vent : lot %s"}, +{"Pot (%s)", "Jarre (%s)"}, +{"%s of 3", "%s sur 3"}, +{"Owl statue below D8", "Statue de hibou, sous le N8"}, +// separators (tools/menu_strings.py) +{", ", ", "}, +{": ", " : "}, +// not used any more +{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Oui : il vient là où se pose ton pouce, n'importe où en bas à gauche. Non : il reste à sa place (déplace-le dans Modifier la disposition tactile)."}, +{"Edit touch layout", "Modifier la disposition tactile"}, +{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Déplace les boutons à l'écran, change la taille de chacun ou masque-le, par-dessus le jeu. Disponible en cours de partie."}, +{"Walkthrough", "Parcours"}, +{"With all eight instruments", "Avec les huit instruments"}, +{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "joue la Ballade du Poisson-Rêve devant l'œuf sur le plateau Tartare."}, +{"(No walkthrough", "(Pas de parcours"}, +{"this seed has no request.json to recompute it.)", "cette seed n'a pas de request.json pour le recalculer.)"}, +{"door -> interior it now leads into", "porte -> intérieur où elle mène maintenant"}, +{"interior -> where leaving it puts you", "intérieur -> où tu arrives en sortant"}, {"boss cutscenes", "cinématiques des boss"}, {"enemy minibosses", "mini-boss ennemis"}, {"escape bottle", "flacon de secours"}, @@ -1463,8 +1841,6 @@ {"Mabe bushes", "Buissons des Mouettes"}, {"Shop slot3 1st", "Boutique place 3, 1er"}, {"Shop slot3 2nd", "Boutique place 3, 2e"}, -{"Tarin", "Tarkin"}, -{"Rock maze", "Labyrinthe de rochers"}, {"double stalfos", "double Stalfos"}, {"putters", "Karakoro"}, {"south orbs", "orbes sud"}, @@ -1533,12 +1909,9 @@ {"past master stalfos", "après le Maître Stalfon"}, {"right side east", "côté droit, est"}, {"water tunnel", "tunnel d'eau"}, -{"west chest", "coffre ouest"}, -{"3 wizzrobes", "3 Sorciers"}, {"statue line north", "ligne de statues, nord"}, {"wizzrobe pegs", "plots des Sorciers"}, {"central room", "salle centrale"}, -{"north chest", "coffre nord"}, {"Stalfos Note", "Note du Stalfos"}, {"south of puzzle", "sud de l'énigme"}, {"west ledge", "corniche ouest"}, @@ -1548,7 +1921,6 @@ {"middle kill chest", "coffre des ennemis, milieu"}, {"stalfos chest", "coffre des Stalfos"}, {"angler", "Baudroie"}, -{"3 of a kind", "Brelan"}, {"middle ledge", "corniche du milieu"}, {"moldorm", "Gigantehl"}, {"west hallway", "couloir ouest"}, @@ -1557,10 +1929,8 @@ {"tile room", "salle carrelée"}, {"wizzrobes ledge", "corniche des Sorciers"}, {"Rooster statue", "Statue du coq"}, -{"Moblin cave", "Grotte des Moblins"}, {"Bow Wow", "Toutou"}, {"like likes", "Like Like"}, -{"chest", "coffre"}, {"Taltal bomb hole", "Trou à bombe, Tartare"}, {"Taltal east bridge", "Pont est, Tartare"}, {"Taltal west dig", "Fouille ouest, Tartare"}, @@ -1578,11 +1948,9 @@ {"west roomba", "roomba ouest"}, {"west vire", "Vire ouest"}, {"Squish Trap", "Piège écrasement"}, -{"2f horseheads", "têtes de cheval 2F"}, {"blue pegs chest", "coffre des plots bleus"}, {"east ledge", "corniche est"}, {"grim creeper", "Dompteur de Piccolos"}, -{"3f horseheads", "têtes de cheval 3F"}, {"Shop slot5 3rd", "Boutique place 5, 3e"}, {"Shop slot5 4th", "Boutique place 5, 4e"}, {"Shop slot5 5th", "Boutique place 5, 5e"}, @@ -1591,7 +1959,6 @@ {"final", "final"}, {"Shop slot6", "Boutique place 6"}, {"Taltal east drop", "Chute est, Tartare"}, -{"River crossing cave", "Grotte de la traversée de la rivière"}, {"South bay sunken", "Sud de la baie, sous l'eau"}, {"Kanalet moat north", "Douves nord de Canulet"}, {"Rapids south island", "Île sud des rapides"}, @@ -1599,7 +1966,6 @@ {"north orbs", "orbes nord"}, {"east color puzzle", "énigme des couleurs est"}, {"spark chest", "coffre du Spark"}, -{"4 zols chest", "coffre des 4 Zols"}, {"genie", "Génie"}, {"long room west", "longue salle ouest"}, {"entrance chest", "coffre de l'entrée"}, @@ -1607,7 +1973,6 @@ {"peg circle", "cercle de plots"}, {"basement north", "sous-sol nord"}, {"east of puzzle", "est de l'énigme"}, -{"sunken item", "objet sous l'eau"}, {"ledge north", "corniche nord"}, {"statues chest", "coffre des statues"}, {"crystals", "cristaux"}, @@ -1623,10 +1988,7 @@ {"gated hallway south", "couloir à grilles, sud"}, {"southwest chest", "coffre sud-ouest"}, {"eagle", "vautour"}, -{"1f west", "1F ouest"}, -{"3ofakind north", "Brelan nord"}, {"hinox", "Hinox"}, -{"3ofakind south", "Brelan sud"}, {"hothead", "Coloflamme"}, {"gibdos", "Gibdos"}, {"statue", "statue"}, @@ -1719,18 +2081,14 @@ {"trendsanity", "trendsanity"}, {"Slime Eel", "Emmurène"}, {"Evil Orb", "Orbe maléfique"}, -{"Genie", "Génie"}, -{"Facade", "Face de dalles"}, {"Evil Eagle", "Vulturos"}, {"Slime Eye", "Gigazol"}, {"Angler Fish", "Baudroie"}, {"Hot Head", "Coloflamme"}, -{"Moldorm", "Gigantehl"}, {"enemy bosses", "boss ennemis"}, {"miniboss souls", "âmes de mini-boss"}, {"Blaino", "Blaino"}, {"Grim Creeper", "Dompteur de Piccolos"}, -{"Hinox", "Hinox"}, {"Smasher", "Smasher"}, {"Dodongo Snakes", "Dodongos"}, {"Avalaunch", "Aplatitan"}, @@ -1742,188 +2100,6 @@ {"ghost item", "fantôme objet"}, {"tunic upgrades", "tuniques cumulables"}, {"digs", "fouilles"}, -{"Rupee", "Rubis"}, -// tracker.py -{"5 shells", "5 coquillages"}, -{"15 shells", "15 coquillages"}, -{"30 shells", "30 coquillages"}, -{"40 shells", "40 coquillages"}, -{"50 shells", "50 coquillages"}, -{"spot above the cave", "endroit au-dessus de la grotte"}, -{"spot above Key Cavern", "endroit au-dessus du souterrain aux Clés"}, -{"Ledge above Turtle Rock", "Corniche au-dessus du roc de la Tortue"}, -{"Cave by Animal Village", "Grotte près du village des Animaux"}, -{"Northwest of Animal Village", "Nord-ouest du village des Animaux"}, -{"Armos Knight", "Grand Armos"}, -{"Fisherman under the bridge", "Pêcheur sous le pont"}, -{"Sunken item in the bay passage", "Objet sous l'eau dans le passage de la baie"}, -{"Tree on the beach", "Arbre sur la plage"}, -{"bonk", "choc"}, -{"Chest on the beach", "Coffre sur la plage"}, -{"spot on the beach", "endroit sur la plage"}, -{"Beside the Seashell Mansion", "À côté de la maison aux coquillages"}, -{"Chef Bear", "Ours cuisinier"}, -{"Christine", "Christine"}, -{"thank-you gift", "cadeau de remerciement"}, -{"trade", "échange"}, -{"Ciao Ciao", "Kaïkaï"}, -{"Dampe's bottle challenge", "Problème du flacon d'Igor"}, -{"Dampe's final challenge", "Problème final d'Igor"}, -{"Dampe's heart challenge", "Problème des cœurs d'Igor"}, -{"Dampe", "Igor"}, -{"first page", "première page"}, -{"second page", "deuxième page"}, -{"Cave in Yarna Desert", "Grotte des dunes de Yarna"}, -{"spot in Yarna Desert", "endroit dans les dunes de Yarna"}, -{"South of Yarna Desert", "Sud des dunes de Yarna"}, -{"BowWow's doghouse", "Niche de Toutou"}, -{"dig", "fouille"}, -{"left", "gauche"}, -{"right", "droite"}, -{"Fishing pond", "Étang"}, -{"100 points", "100 points"}, -{"150 points", "150 points"}, -{"50 points", "50 points"}, -{"Cheep Cheep", "Cheep Cheep"}, -{"loose item", "objet au sol"}, -{"Ol' Baron", "Roi de l'étang"}, -{"orange fish", "poisson orange"}, -{"Ghost's grave", "Tombe du fantôme"}, -{"Pot in %s", "Jarre dans %s"}, -{"the Ghost's house", "la maison du fantôme"}, -{"Ghost's reward", "Récompense du fantôme"}, -{"West of Goponga Swamp", "Ouest du marais des Anémones"}, -{"Goriya", "Goriya"}, -{"Grandma Yahoo", "Mamie Youpi"}, -{"broom", "balai"}, -{"Cave under the Cemetery", "Grotte sous le cimetière"}, -{"Invisible Zora", "Zora invisible"}, -{"bombed guard", "garde bombardé"}, -{"crow", "corbeau"}, -{"last guard", "dernier garde"}, -{"fight room", "salle de combat"}, -{"Mad Bomber", "Poseur de bombes"}, -{"Kanalet moat", "Douves de Canulet"}, -{"north", "nord"}, -{"sunken", "sous l'eau"}, -{"south", "sud"}, -{"Cave south of Kanalet Castle", "Grotte au sud du château Canulet"}, -{"Kiki the monkey", "Kiki le singe"}, -{"Seashell bush in Mabe Village", "Buisson à coquillage du village des Mouettes"}, -{"Mad Batter", "Chauve-souris folle"}, -{"Mysterious Forest", "Forêt Enchantée"}, -{"song", "chant"}, -{"Martha the mermaid", "Martha la sirène"}, -{"Mr. Write", "Dr Wright"}, -{"North of the Moblin cave", "Nord de la grotte des Moblins"}, -{"North of Tabahl Wasteland", "Nord de la Morne Plaine"}, -{"Rock maze in Ukuku Prairie", "Labyrinthe de rochers de la prairie Oukoukou"}, -{"Island in the pond", "Île de l'étang"}, -{"last hole", "dernier trou"}, -{"cave on the climb", "grotte de la montée"}, -{"east island", "île est"}, -{"middle island", "île du milieu"}, -{"race under 30 s", "course en moins de 30 s"}, -{"race under 35 s", "course en moins de 35 s"}, -{"race under 45 s", "course en moins de 45 s"}, -{"south island", "île sud"}, -{"west island", "île ouest"}, -{"Cave by the river crossing", "Grotte près de la traversée de la rivière"}, -{"shelf", "étagère"}, -{"Small island off the coast", "Petite île au large"}, -{"South of Martha's Bay", "Sud de la baie de Martha"}, -{"southwest of Martha's Bay", "sud-ouest de la baie de Martha"}, -{"Chest in Goponga Swamp", "Coffre du marais des Anémones"}, -{"Syrup the witch", "Syrup la sorcière"}, -{"Tree south of Tail Cave", "Arbre au sud de la caverne Flagello"}, -{"five chest game", "jeu des cinq coffres"}, -{"bomb hole", "trou à bombe"}, -{"crossing cave", "grotte de passage"}, -{"east bridge", "pont est"}, -{"east drop", "chute est"}, -{"left chest", "coffre de gauche"}, -{"blocks at the entrance", "blocs de l'entrée"}, -{"chest at the entrance", "coffre de l'entrée"}, -{"hole", "trou"}, -{"chest on the ledge", "coffre sur la corniche"}, -{"cave on the left climb", "grotte de la montée gauche"}, -{"cave by the rooster", "grotte près du coq"}, -{"way out", "sortie"}, -{"under a rock", "sous un rocher"}, -{"Tarin at the beehive", "Tarkin à la ruche"}, -{"last prize", "dernier lot"}, -{"Tree in Ukuku Prairie", "Arbre de la prairie Oukoukou"}, -{"Ukuku cave", "Grotte d'Oukoukou"}, -{"east chest", "coffre est"}, -{"east item", "objet est"}, -{"west item", "objet ouest"}, -{"Under the skull rock", "Sous le rocher crâne"}, -{"Cave by the villa", "Grotte près de la villa"}, -{"Washed up on the beach", "Échoué sur la plage"}, -{"spot in Tabahl Wasteland", "endroit dans la Morne Plaine"}, -{"Forest crossing cave", "Grotte de passage de la forêt"}, -{"item", "objet"}, -{"Forest north cave", "Grotte nord de la forêt"}, -{"south chest", "coffre sud"}, -{"Bush", "Buisson"}, -{"spot", "endroit"}, -{"Pot", "Jarre"}, -{"Apple tree", "Pommier"}, -{"Rock", "Rocher"}, -{"Marin and Tarin's house", "Maison de Marine et Tarkin"}, -{"the quadruplets' house", "la maison des quadruplés"}, -{"the Southern Face Shrine", "le temple du Masque - sud"}, -{"the witch's hut", "la hutte de la sorcière"}, -{"the library", "la bibliothèque"}, -{"the Seashell Mansion", "la maison aux coquillages"}, -{"a telephone booth", "une cabine téléphonique"}, -{"the Town Tool Shop", "le bazar du centre"}, -{"the Dream Shrine", "le gîte des Rêves"}, -{"north-west", "nord-ouest"}, -{"north-east", "nord-est"}, -{"south-west", "sud-ouest"}, -{"south-east", "sud-est"}, -{"centre", "centre"}, -{"middle", "milieu"}, -{"inside", "intérieur"}, -{"Trendy Game: prize %s", "Jeu dans le vent : lot %s"}, -{"Pot (%s)", "Jarre (%s)"}, -{"%s of 3", "%s sur 3"}, -{"Slime eye", "Gigazol"}, -{"Angler", "Baudroie"}, -{"Slime eel", "Emmurène"}, -{"Master stalfos", "Maître Stalfon"}, -{"Eagle", "Vulturos"}, -{"Hothead", "Coloflamme"}, -{"Owl statue long hallway", "Statue de hibou, long couloir"}, -{"Owl statue spinies", "Statue de hibou, Hériss"}, -{"Owl statue 3 of a kind", "Statue de hibou, Brelan"}, -{"Owl statue first switch", "Statue de hibou, premier interrupteur"}, -{"Owl statue push puzzle", "Statue de hibou, énigme à pousser"}, -{"Owl statue past hinox", "Statue de hibou, après le Hinox"}, -{"Owl statue basement north", "Statue de hibou, sous-sol nord"}, -{"Owl statue arrow", "Statue de hibou, flèche"}, -{"Owl statue northwest", "Statue de hibou, nord-ouest"}, -{"Owl statue", "Statue de hibou"}, -{"Owl statue triple stalfos", "Statue de hibou, trois Stalfos"}, -{"Owl statue before slime eel", "Statue de hibou, avant l'Emmurène"}, -{"Owl statue ledge", "Statue de hibou, corniche"}, -{"Owl statue southeast", "Statue de hibou, sud-est"}, -{"Owl statue canal", "Statue de hibou, canal"}, -{"Owl statue ball", "Statue de hibou, boule"}, -{"Owl statue kirbys", "Statue de hibou, Kirby"}, -{"Owl statue hookshot chest", "Statue de hibou, coffre du grappin"}, -{"Owl statue above smasher", "Statue de hibou, au-dessus du Smasher"}, -{"Owl statue below gibdos", "Statue de hibou, sous les Gibdos"}, -{"Owl statue eye statue", "Statue de hibou, statue à œil"}, -{"Owl statue nine switches", "Statue de hibou, neuf interrupteurs"}, -{"Owl statue first switches", "Statue de hibou, premiers interrupteurs"}, -{"Owl statue before mini boss", "Statue de hibou, avant le mini-boss"}, -{"Owl statue below D8", "Statue de hibou, sous le N8"}, -// separators (tools/menu_strings.py) -{", ", ", "}, -{": ", " : "}, -// not used any more {"Set the buttons and keys for the game. F1, Esc, Home or Back + Start always open this menu.", "Règle les boutons et les touches du jeu. F1, Échap, Home ou Retour + Start ouvrent toujours ce menu."}, {"! This folder is synced by OneDrive", "! Ce dossier est synchronisé par OneDrive"}, {"About %.0f GB of game files will upload to your OneDrive.", "Environ %.0f Go de fichiers du jeu seront envoyés sur ton OneDrive."}, diff --git a/runtime/ui/lang/it.inc b/runtime/ui/lang/it.inc index c1f9d21a6..5a7da895d 100644 --- a/runtime/ui/lang/it.inc +++ b/runtime/ui/lang/it.inc @@ -226,13 +226,9 @@ {"Appearance", "Aspetto"}, {"Layout", "Layout"}, {"Follow thumb", "Segui il pollice"}, -{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Sì: si sposta dove appoggi il pollice, ovunque in basso a sinistra. No: resta dov'è (spostalo in Modifica layout touch)."}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it with the Layout button).", "Sì: si sposta dove appoggi il pollice, ovunque in basso a sinistra. No: resta dov'è (spostalo con il pulsante layout)."}, {"Layout button", "Pulsante layout"}, {"A button at the top, next to the menu button, that lets you move and resize the on-screen buttons.", "Un pulsante in alto, accanto al pulsante del menu, per spostare e ridimensionare i pulsanti sullo schermo."}, -{"Load a save first.", "Carica prima un salvataggio."}, -{"Edit touch layout", "Modifica layout touch"}, -{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Sposta i pulsanti sullo schermo, cambia la dimensione di ognuno o nascondilo, sopra il gioco. Disponibile durante la partita."}, {"Reset touch layout", "Ripristina layout touch"}, {"Puts every on-screen button back in its place, at its size, shown.", "Rimette ogni pulsante sullo schermo al suo posto, alla sua dimensione, visibile."}, // runtime/ui/difficulty.mm @@ -691,6 +687,7 @@ {"The game's echo in caves, dungeons and big rooms.", "L'eco del gioco in grotte, labirinti e stanze grandi."}, {"LAS Recomp menu sounds", "Suoni menu LAS Recomp"}, {"Sounds when you move around and pick things in LAS Recomp's menus.", "Suoni quando ti muovi e scegli nei menu di LAS Recomp."}, +{"Load a save first.", "Carica prima un salvataggio."}, {"Quit", "Esci"}, {"Reset Game", "Reimposta gioco"}, {"Progress since your last save is lost.", "I progressi dall'ultimo salvataggio andranno persi."}, @@ -1090,6 +1087,8 @@ {"Reveal spoilers", "Mostra spoiler"}, {"Search items and places", "Cerca oggetti e luoghi"}, {"Search the spoiler log", "Cerca nel registro spoiler"}, +{"Useful items only", "Solo oggetti utili"}, +{"Hide checked", "Nascondi fatti"}, // runtime/ui/tracker_overlay.mm {"Seashells", "Conchiglie"}, {"%d Small Keys", "%d piccole chiavi"}, @@ -1122,7 +1121,6 @@ {"needs %s +%d", "richiede %s +%d"}, {"Filter: %s", "Filtro: %s"}, {"In logic now", "In logica ora"}, -{"Hide checked", "Nascondi fatti"}, {"Filters", "Filtri"}, {"Room %c%d", "Stanza %c%d"}, {"trick logic", "logica con trucchi"}, @@ -1177,9 +1175,9 @@ {"This is where Manbo's Mambo drops you. You can't warp here directly.", "Qui ti lascia il mambo di Manbo. Non puoi teletrasportarti qui direttamente."}, {"%d places", "%d luoghi"}, {"Load a save to warp.", "Carica un salvataggio per teletrasportarti."}, +{"Places", "Luoghi"}, {"Search", "Cerca"}, {"Search places...", "Cerca luoghi..."}, -{"Places", "Luoghi"}, {"Link is here", "Link è qui"}, // warp_data.h {"Dungeons", "Labirinti"}, @@ -1306,28 +1304,112 @@ {"Building game files (%s tasks)", "Creo i file di gioco (%s attività)"}, {"Triforce hunt: %s", "Caccia alla Triforza: %s"}, // spoiler_view.py -{"Settings: %s", "Impostazioni: %s"}, -{"Walkthrough", "Percorso"}, -{"Items by area", "Oggetti per zona"}, -{"Starting items: %s", "Oggetti iniziali: %s"}, +{"Route", "Percorso"}, +{"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Solo ciò che serve per completare il seed. Ogni tappa si raggiunge con gli oggetti delle tappe precedenti."}, +{"Finish", "Finale"}, +{"Everything useful step by step", "Tutto ciò che è utile, passo per passo"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Ogni fase si può completare con quello che avevi dopo le fasi precedenti (in qualsiasi ordine all'interno di una fase)."}, {"Only items that open things up are listed; rupees", "Sono elencati solo gli oggetti che sbloccano qualcosa; rupie"}, {"traps and similar are left out.", "trappole e simili sono esclusi."}, -{"Finish", "Finale"}, -{"With all eight instruments", "Con tutti e otto gli strumenti"}, -{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "suona la ballata del pesce vento davanti all'uovo sull'altopiano Tal Tal."}, -{"(No walkthrough", "(Nessun percorso"}, -{"this seed has no request.json to recompute it.)", "questo seed non ha un request.json per ricalcolarlo.)"}, +{"Items by area", "Oggetti per zona"}, +{"Dungeon rooms", "Stanze dei labirinti"}, +{"Where each moved room is now and where it came from.", "Dove si trova ora ogni stanza spostata e da dove viene."}, {"Entrances", "Ingressi"}, -{"%s entrance leads into %s", "L'ingresso di %s porta in %s"}, -{"%s:", "%s:"}, {"Doors", "Porte"}, -{"door -> interior it now leads into", "porta -> interno in cui conduce ora"}, +{"each door and where it now leads", "ogni porta e dove conduce ora"}, +{"Settings: %s", "Impostazioni: %s"}, +{"(This seed has no step list.)", "(Questo seed non ha un elenco di passi.)"}, +{"%s entrance leads into %s", "L'ingresso di %s porta in %s"}, +{"Unchanged (%s)", "Invariati (%s)"}, {"Exits", "Uscite"}, -{"interior -> where leaving it puts you", "interno -> dove ti porta l'uscita"}, +{"each way out and where it puts you", "ogni uscita e dove ti porta"}, +{"Starting items: %s", "Oggetti iniziali: %s"}, +{"%s:", "%s:"}, +{"Small items (%s)", "Oggetti minori (%s)"}, {"%s - enter through %s's entrance", "%s - entra dall'ingresso di %s"}, {"%s's Soul", "Anima di %s"}, {"%s' Soul", "Anima di %s"}, +{"room %s", "stanza %s"}, +{"The last of the %s Triforce pieces you need ends the game.", "L'ultimo dei %s frammenti della Triforza che ti servono termina il gioco."}, +{"2nd", "2°"}, +{"shelf", "scaffale"}, +{"second item", "secondo oggetto"}, +{"third item", "terzo oggetto"}, +{"west side door", "porta sul lato ovest"}, +{"east side door", "porta sul lato est"}, +{"Fire cave", "Grotta del fuoco"}, +{"north door", "porta nord"}, +{"south door", "porta sud"}, +{"Wind Fish's egg", "Uovo del pesce vento"}, +{"rooster house", "casa del gallo"}, +{"Telephone booth by Turtle Rock", "Cabina telefonica vicino a Rocca Tartaruga"}, +{"Mad Batter well", "Pozzo del pipistrello pazzo"}, +{"Tal Tal crossing cave", "Grotta di passaggio, Tal Tal"}, +{"west door", "porta ovest"}, +{"east door", "porta est"}, +{"Mountain cave", "Grotta della montagna"}, +{"bottom door", "porta in basso"}, +{"top door", "porta in alto"}, +{"ledge door", "porta della sporgenza"}, +{"Papahl's cave", "Grotta di Paparì"}, +{"lower door", "porta inferiore"}, +{"upper door", "porta superiore"}, +{"Bird Key cave", "Grotta della chiave dell'aquila"}, +{"Five chest cave", "Grotta dei cinque forzieri"}, +{"Five chest game", "Gioco dei cinque forzieri"}, +{"exit door", "porta d'uscita"}, +{"Rainbow cave", "Grotta dell'arcobaleno"}, +{"outer west door", "porta ovest esterna"}, +{"inner west door", "porta ovest interna"}, +{"inner east door", "porta est interna"}, +{"outer east door", "porta est esterna"}, +{"Fairy fountain", "Fontana della fata radiosa"}, +{"Tal Tal east", "Tal Tal est"}, +{"Cave to Eagle's Tower", "Grotta per la torre dell'aquila"}, +{"Cave by Angler's Tunnel", "Grotta vicino all'abisso del lofio"}, +{"Damp cave", "Grotta umida"}, +{"Raft cave", "Grotta della zattera"}, +{"Telephone booth", "Cabina telefonica"}, +{"Moblin cave", "Grotta dei grublin"}, +{"Dampe's house", "Casa di Danpei"}, +{"Rapids Ride raft shop", "Zattere delle discese torrenziali"}, +{"Mysterious Forest", "Bosco misterioso"}, +{"north cave", "grotta a nord"}, +{"Kanalet tunnel", "Tunnel di Kanalet"}, +{"Telephone booth by Kanalet Castle", "Cabina telefonica vicino al castello di Kanalet"}, +{"roof west door", "porta ovest sul tetto"}, +{"roof east door", "porta est sul tetto"}, +{"front door", "porta d'ingresso"}, +{"Cave south of Kanalet Castle", "Grotta a sud del castello di Kanalet"}, +{"Forest crossing cave", "Grotta di passaggio del bosco"}, +{"forest", "bosco"}, +{"north side door", "porta sul lato nord"}, +{"Ukuku cave", "Grotta Ukuku"}, +{"Ukuku Prairie north", "Prateria Ukuku nord"}, +{"Ukuku Prairie west", "Prateria Ukuku ovest"}, +{"Cave to Face Shrine", "Grotta per il tempio della maschera"}, +{"Fairy fountain by the Armos maze", "Fontana della fata radiosa vicino al labirinto degli armos"}, +{"Flying Rooster's grave", "Tomba del gallo volante"}, +{"River crossing cave", "Grotta del guado"}, +{"Armos maze cave", "Grotta del labirinto degli armos"}, +{"BowWow's kennel", "Cuccia di BauBau"}, +{"Marin and Tarin's house", "Casa di Marin e Tarin"}, +{"Mabe Village library", "Biblioteca del villaggio Mabe"}, +{"Cliff cave by the bay", "Grotta della scogliera vicino alla baia"}, +{"plateau door", "porta dell'altopiano"}, +{"Cave behind Richard's villa", "Grotta dietro la villa di Richard"}, +{"rabbit house", "casa dei conigli"}, +{"Zora's house", "Casa dello Zora"}, +{"bombed cave", "grotta aperta con le bombe"}, +{"Lanmola cave", "Grotta della lanmola"}, +{"east dive spot", "punto di immersione est"}, +{"west dive spot", "punto di immersione ovest"}, +{"Sale's banana house", "Bananeria di Saldo"}, +{"bay", "baia"}, +{"Tunnel to the bay Mad Batter", "Tunnel per il pipistrello pazzo della baia"}, +{"Mermaid statue", "Statua della sirena"}, +{"Boomerang cave", "Grotta del boomerang"}, +{"Ghost's house", "Casa del fantasma"}, {"Signpost Maze", "Dedalo di cartelli"}, {"Ancient Ruins", "Antiche rovine"}, {"west", "ovest"}, @@ -1338,98 +1420,180 @@ {"50 Rupees", "50 rupie"}, {"100 Rupees", "100 rupie"}, {"300 Rupees", "300 rupie"}, +{"1 Rupee", "1 rupia"}, {"Trap!", "Trappola!"}, {"Frog Song of Soul", "Soul della rana"}, {"Chamber Stone", "Pietra tessera"}, +{"Triforce piece", "Frammento della Triforza"}, {"Beach chest", "Forziere della spiaggia"}, +{"Chest on the beach", "Forziere sulla spiaggia"}, {"Taltal entrance chest", "Forziere all'ingresso di Tal Tal"}, +{"chest at the entrance", "forziere all'ingresso"}, {"Taltal east left chest", "Forziere a sinistra, Tal Tal est"}, +{"left chest", "forziere a sinistra"}, {"Dream shrine right", "Santuario dei sogni, destra"}, +{"right", "destra"}, {"Armos cave", "Grotta degli armos"}, {"Goponga cave left", "Grotta di Goponga, sinistra"}, +{"left", "sinistra"}, {"Goponga cave right", "Grotta di Goponga, destra"}, {"Ukuku cave west chest", "Forziere ovest, grotta Ukuku"}, +{"west chest", "forziere ovest"}, {"Ukuku cave east chest", "Forziere est, grotta Ukuku"}, +{"east chest", "forziere est"}, {"Kanalet south cave", "Grotta a sud di Kanalet"}, {"Swamp chest", "Forziere della palude"}, +{"Chest in Goponga Swamp", "Forziere nella palude Goponga"}, {"Taltal left ascent cave", "Grotta della salita sinistra, Tal Tal"}, +{"cave on the left climb", "grotta della salita a sinistra"}, {"Taltal ledge chest", "Forziere sulla sporgenza, Tal Tal"}, +{"chest on the ledge", "forziere sulla sporgenza"}, {"Taltal 5 chest puzzle", "Gioco dei 5 forzieri, Tal Tal"}, +{"five chest game", "gioco dei cinque forzieri"}, {"Taltal west chest", "Forziere ovest, Tal Tal"}, {"Villa cave", "Grotta della villa"}, +{"Cave by the villa", "Grotta vicino alla villa"}, {"Woods crossing cave chest", "Forziere della grotta di passaggio, bosco"}, +{"chest", "forziere"}, {"Woods north cave chest", "Forziere della grotta nord, bosco"}, +{"Forest north cave", "Grotta nord del bosco"}, {"Woods south chest", "Forziere sud del bosco"}, +{"south chest", "forziere sud"}, {"Woods north chest", "Forziere nord del bosco"}, +{"north chest", "forziere nord"}, {"Fishing", "Pesca"}, +{"Fishing pond", "Laghetto"}, +{"50 points", "50 punti"}, {"Fishing orange", "Pesca, pesce arancione"}, +{"orange fish", "pesce arancione"}, {"Fishing loose", "Pesca, oggetto a terra"}, +{"loose item", "oggetto a terra"}, +{"100 points", "100 punti"}, +{"150 points", "150 punti"}, {"Fishing cheep cheep", "Pesca, Pesce Smack"}, +{"Cheep Cheep", "Pesce Smack"}, {"Fishing ol baron", "Pesca, il Barone"}, +{"Ol' Baron", "Il Barone"}, {"Rapids race", "Corsa delle rapide"}, +{"race under 45 s", "corsa sotto i 45 s"}, +{"race under 35 s", "corsa sotto i 35 s"}, +{"race under 30 s", "corsa sotto i 30 s"}, {"Rapids middle island", "Rapide, isola centrale"}, +{"middle island", "isola centrale"}, {"Rapids west island", "Rapide, isola ovest"}, +{"west island", "isola ovest"}, {"Dampe page", "Pagina di Danpei"}, +{"Dampe", "Danpei"}, +{"first page", "prima pagina"}, {"Dampe heart challenge", "Danpei, sfida dei cuori"}, +{"Dampe's heart challenge", "Sfida dei cuori di Danpei"}, +{"second page", "seconda pagina"}, {"Dampe bottle challenge", "Danpei, sfida dell'ampolla"}, +{"Dampe's bottle challenge", "Sfida dell'ampolla di Danpei"}, {"Dampe final", "Danpei, sfida finale"}, +{"Dampe's final challenge", "Sfida finale di Danpei"}, {"Walrus", "Tricheco"}, {"Ghost reward", "Ricompensa del fantasma"}, +{"Ghost's reward", "Ricompensa del fantasma"}, +{"song", "canzone"}, {"Manbo", "Manbo"}, {"Mamu", "Wart"}, {"Mad batter bay", "Pipistrello pazzo, baia"}, +{"Mad Batter", "Pipistrello pazzo"}, {"Mad batter taltal", "Pipistrello pazzo, Tal Tal"}, {"Mad batter woods", "Pipistrello pazzo, bosco"}, {"Invisible zora", "Zora invisibile"}, +{"Invisible Zora", "Zora invisibile"}, {"Goriya trader", "Scambio con Koppi"}, +{"Goriya", "Koppi"}, +{"trade", "scambio"}, {"Mamasha", "Mammuccia"}, {"Ciao ciao", "YapYap"}, +{"Ciao Ciao", "YapYap"}, {"Sale", "Saldo"}, {"Kiki", "Kiki"}, +{"Kiki the monkey", "Kiki la scimmia"}, {"Tarin ukuku", "Tarin a Ukuku"}, +{"Tarin at the beehive", "Tarin all'alveare"}, {"Chef bear", "Orso cuoco"}, +{"Chef Bear", "Orso cuoco"}, {"Papahl", "Paparì"}, {"Christine trade", "Scambio con Christine"}, +{"Christine", "Christine"}, {"Christine grateful", "Regalo di Christine"}, +{"thank-you gift", "regalo di ringraziamento"}, {"Mr write", "Dr. Wright"}, +{"Mr. Write", "Dr. Wright"}, {"Grandma yahoo", "Nonna Urrà"}, +{"Grandma Yahoo", "Nonna Urrà"}, +{"broom", "scopa"}, {"Bay fisherman", "Pescatore della baia"}, +{"Fisherman under the bridge", "Pescatore sotto il ponte"}, {"Mermaid martha", "Sirena Martha"}, +{"Martha the mermaid", "Sirena Martha"}, {"Mermaid cave", "Grotta della sirena"}, {"Lanmola", "Lanmola"}, {"Armos knight", "Grand'Armos"}, +{"Armos Knight", "Grand'Armos"}, {"Washed up", "Sulla riva"}, +{"Washed up on the beach", "Arenato sulla spiaggia"}, {"Dream shrine left", "Santuario dei sogni, sinistra"}, {"Taltal rooster cave", "Grotta del gallo, Tal Tal"}, +{"cave by the rooster", "grotta vicino al gallo"}, {"Woods loose", "Bosco, oggetto a terra"}, {"Pothole final", "Campo di buche, finale"}, +{"last hole", "ultima buca"}, {"5 seashell reward", "Premio per 5 conchiglie"}, +{"5 shells", "5 conchiglie"}, {"15 seashell reward", "Premio per 15 conchiglie"}, +{"15 shells", "15 conchiglie"}, {"30 seashell reward", "Premio per 30 conchiglie"}, +{"30 shells", "30 conchiglie"}, {"40 seashell reward", "Premio per 40 conchiglie"}, +{"40 shells", "40 conchiglie"}, {"50 seashell reward", "Premio per 50 conchiglie"}, +{"50 shells", "50 conchiglie"}, {"Animal village northwest", "Nord-ovest del villaggio degli animali"}, +{"Northwest of Animal Village", "Nord-ovest del villaggio degli animali"}, {"Animal village cave", "Grotta del villaggio degli animali"}, +{"Cave by Animal Village", "Grotta vicino al villaggio degli animali"}, {"Taltal entrance blocks", "Blocchi all'ingresso di Tal Tal"}, +{"blocks at the entrance", "blocchi all'ingresso"}, {"North wasteland", "Landa nord"}, +{"North of Tabahl Wasteland", "A nord della landa di Tabahl"}, {"Desert cave", "Grotta del deserto"}, +{"Cave in Yarna Desert", "Grotta nel deserto di Yarna"}, {"Graveyard cave", "Grotta del cimitero"}, +{"Cave under the Cemetery", "Grotta sotto il cimitero"}, {"Mabe well", "Pozzo di Mabe"}, {"Ukuku cave west loose", "Oggetto libero, grotta Ukuku ovest"}, +{"west item", "oggetto ovest"}, {"Ukuku cave east loose", "Oggetto libero, grotta Ukuku est"}, +{"east item", "oggetto est"}, {"Rapids ascent cave", "Grotta della salita delle rapide"}, +{"cave on the climb", "grotta sulla salita"}, {"Taltal crossing cave", "Grotta di passaggio, Tal Tal"}, +{"crossing cave", "grotta di passaggio"}, {"Taltal west escape", "Via d'uscita ovest, Tal Tal"}, +{"way out", "via d'uscita"}, {"Above turtle rock", "Sopra Rocca Tartaruga"}, +{"Ledge above Turtle Rock", "Sporgenza sopra Rocca Tartaruga"}, {"Pothole north", "Campo di buche nord"}, +{"north", "nord"}, {"Woods crossing cave loose", "Oggetto libero, grotta di passaggio del bosco"}, +{"item", "oggetto"}, {"Woods north cave loose", "Oggetto libero, grotta nord del bosco"}, {"Diamond island", "Isola a diamante"}, {"Kanalet crow", "Kanalet, corvo"}, +{"crow", "corvo"}, {"Kanalet mad bomber", "Kanalet, bombarolo"}, +{"Mad Bomber", "Bombarolo"}, {"Kanalet kill room", "Kanalet, stanza dello scontro"}, +{"fight room", "stanza dello scontro"}, {"Kanalet bombed guard", "Kanalet, guardia bombardata"}, +{"bombed guard", "guardia bombardata"}, {"Kanalet final guard", "Kanalet, ultima guardia"}, +{"last guard", "ultima guardia"}, {"Owl statue moblin cave", "Statua del gufo, grotta dei grublin"}, {"Owl statue pothole", "Statua del gufo, campo di buche"}, {"Owl statue above cave", "Statua del gufo sopra la grotta"}, @@ -1438,8 +1602,222 @@ {"Owl statue maze", "Statua del gufo, dedalo"}, {"Owl statue rapids", "Statua del gufo, rapide"}, {"Owl statue taltal east", "Statua del gufo, Tal Tal est"}, +{"Instrument", "Strumento"}, +{"Moldorm", "Gran Shippo"}, +{"West hallway", "Corridoio ovest"}, +{"Middle ledge", "Sporgenza centrale"}, +{"3 of a kind", "tris"}, +{"Bomb room", "Stanza delle bombe"}, +{"Middle kill chest", "Forziere dello scontro centrale"}, +{"Spark chest", "Forziere dello spark"}, +{"Button chest", "Forziere del pulsante"}, +{"Stalfos chest", "Forziere dello stalfos"}, +{"4 zols chest", "forziere dei 4 zol"}, +{"Beetles", "Zoro zoro"}, +{"Owl statue long hallway", "Statua del gufo, corridoio lungo"}, +{"Owl statue spinies", "Statua del gufo, koopistrici"}, +{"Owl statue 3 of a kind", "Statua del gufo, tris"}, +{"Genie", "Genio"}, +{"Boos", "Boo"}, +{"Long room west", "Stanza lunga ovest"}, +{"Long room east", "Stanza lunga est"}, +{"Vacuum mouth room", "Stanza della bocca risucchiante"}, +{"Kill puzzle", "Enigma degli scontri"}, +{"West chest", "Forziere ovest"}, +{"Double stalfos", "Doppio stalfos"}, +{"Double shy guys", "Doppio Tipo Timido"}, +{"Entrance chest", "Forziere dell'ingresso"}, +{"Single shy guy", "Tipo Timido singolo"}, +{"Peg circle", "Cerchio di pioli"}, +{"Owl statue first switch", "Statua del gufo, primo interruttore"}, +{"Owl statue push puzzle", "Statua del gufo, enigma dei blocchi"}, +{"Owl statue past hinox", "Statua del gufo oltre l'hinox"}, +{"Slime eye", "Melmocchio"}, +{"Pre boss", "Prima del boss"}, +{"Triple bombites", "Tre bombigni"}, +{"North chest", "Forziere nord"}, +{"Central ledge", "Sporgenza centrale"}, +{"Central chest", "Forziere centrale"}, +{"East ledge", "Sporgenza est"}, +{"Pairodds", "Telebecchi"}, +{"Five zols", "Cinque zol"}, +{"Basement north", "Seminterrato nord"}, +{"Basement west", "Seminterrato ovest"}, +{"Basement south", "Seminterrato sud"}, +{"Hallway", "Corridoio"}, +{"Hallway side room", "Stanza laterale del corridoio"}, +{"Vacuum mouth", "Bocca risucchiante"}, +{"Owl statue basement north", "Statua del gufo, seminterrato nord"}, +{"Owl statue arrow", "Statua del gufo, freccia"}, +{"Owl statue northwest", "Statua del gufo nord-ovest"}, +{"Angler", "Lofio"}, +{"East side north", "Lato est, nord"}, +{"East side south", "Lato est, sud"}, +{"West ledge", "Sporgenza ovest"}, +{"East of puzzle", "A est dell'enigma"}, +{"South of puzzle", "A sud dell'enigma"}, +{"Sunken item", "Oggetto sommerso"}, +{"Central room", "Stanza centrale"}, +{"Small island", "Isoletta"}, +{"Ledge north", "Sporgenza nord"}, +{"Statues chest", "Forziere delle statue"}, +{"Lobby", "Atrio"}, +{"Crystals", "Cristalli"}, +{"Owl statue", "Statua del gufo"}, +{"Slime eel", "Tallonatrice"}, +{"Master stalfos", "Maestro Stalfos"}, +{"Crystal blocks", "Blocchi di cristallo"}, +{"Past master stalfos", "Oltre il maestro Stalfos"}, +{"Water tunnel", "Tunnel d'acqua"}, +{"Right side north", "Lato destro, nord"}, +{"Right side middle", "Lato destro, centro"}, +{"Right side east", "Lato destro, est"}, +{"Helmasaurs", "Hiplup"}, +{"West stairs chest", "Forziere delle scale ovest"}, +{"Near entrance", "Vicino all'ingresso"}, +{"Owl statue triple stalfos", "Statua del gufo, tre stalfos"}, +{"Owl statue before slime eel", "Statua del gufo prima della Tallonatrice"}, +{"Facade", "Facciatterra"}, +{"Far northwest", "Estremo nord-ovest"}, +{"Far northeast", "Estremo nord-est"}, +{"Statue line north", "Fila di statue nord"}, +{"Statue line south", "Fila di statue sud"}, +{"Wizzrobe pegs", "Pioli degli sciamanix"}, +{"Canal", "Canale"}, +{"3 wizzrobes", "3 sciamanix"}, +{"Tile room", "Stanza delle piastrelle"}, +{"Gated hallway north", "Corridoio con cancello nord"}, +{"Gated hallway south", "Corridoio con cancello sud"}, +{"Southwest chest", "Forziere sud-ovest"}, +{"Wizzrobes ledge", "Sporgenza degli sciamanix"}, +{"Owl statue ledge", "Statua del gufo, sporgenza"}, +{"Owl statue southeast", "Statua del gufo sud-est"}, +{"Owl statue canal", "Statua del gufo, canale"}, +{"Eagle", "Aquila"}, +{"Like likes", "Like like"}, +{"1f west", "1P ovest"}, +{"3ofakind north", "tris nord"}, +{"2f horseheads", "teste di cavallo 2P"}, +{"Hinox", "Hinox"}, +{"3ofakind south", "tris sud"}, +{"Blue pegs chest", "Forziere dei pioli blu"}, +{"3f horseheads", "teste di cavallo 3P"}, +{"Grim creeper", "Fosco il Nottolatore"}, +{"Owl statue ball", "Statua del gufo, palla"}, +{"Owl statue kirbys", "Statua del gufo, kirby"}, +{"Owl statue hookshot chest", "Statua del gufo, forziere dell'arpione"}, +{"Hothead", "Testa Calda"}, +{"Left exit chest", "Forziere dell'uscita a sinistra"}, +{"Dodongos", "Dodongo"}, +{"Northern ledge", "Sporgenza nord"}, +{"Gibdos", "Ghibdo"}, +{"Beamos chest", "Forziere del beamos"}, +{"Statue", "Statua"}, +{"Torches", "Torce"}, +{"West vire", "Vire ovest"}, +{"West roomba", "Roomba ovest"}, +{"Surrounded by blocks", "Circondato da blocchi"}, +{"Sparks chest", "Forziere degli spark"}, +{"East of pots", "A est dei vasi"}, +{"East roomba", "Roomba est"}, +{"Far southwest", "Estremo sud-ovest"}, +{"Far southeast", "Estremo sud-est"}, +{"Owl statue above smasher", "Statua del gufo sopra lo Smasher"}, +{"Owl statue below gibdos", "Statua del gufo sotto i ghibdo"}, +{"Owl statue eye statue", "Statua del gufo, statua dell'occhio"}, +{"Northern chest", "Forziere nord"}, +{"Zol pots", "Vasi degli zol"}, +{"North orbs", "Sfere nord"}, +{"South orbs", "Sfere sud"}, +{"East color puzzle", "Enigma dei colori est"}, +{"West color puzzle", "Enigma dei colori ovest"}, +{"Putters", "Putter"}, +{"Owl statue nine switches", "Statua del gufo, nove interruttori"}, +{"Owl statue first switches", "Statua del gufo, primi interruttori"}, +{"Owl statue before mini boss", "Statua del gufo prima del miniboss"}, +{"Rupee", "Rupia"}, {"stone beak", "becco di pietra"}, -// spoiler logs +// tracker.py +{"spot above the cave", "sopra la grotta"}, +{"spot above Key Cavern", "sopra la caverna della chiave"}, +{"Sunken item in the bay passage", "Oggetto sommerso nel passaggio della baia"}, +{"Tree on the beach", "Albero sulla spiaggia"}, +{"bonk", "carica"}, +{"spot on the beach", "sulla spiaggia"}, +{"Beside the Seashell Mansion", "Accanto alla magione delle conchiglie"}, +{"spot in Yarna Desert", "nel deserto di Yarna"}, +{"South of Yarna Desert", "A sud del deserto di Yarna"}, +{"BowWow's doghouse", "Cuccia di BauBau"}, +{"dig", "scavo"}, +{"Ghost's grave", "Tomba del fantasma"}, +{"Pot in %s", "Vaso in %s"}, +{"the Ghost's house", "casa del fantasma"}, +{"West of Goponga Swamp", "A ovest della palude Goponga"}, +{"Kanalet moat", "Fossato di Kanalet"}, +{"sunken", "sommerso"}, +{"south", "sud"}, +{"Seashell bush in Mabe Village", "Cespuglio con conchiglia nel villaggio Mabe"}, +{"North of the Moblin cave", "A nord della grotta dei grublin"}, +{"Rock maze in Ukuku Prairie", "Labirinto di rocce nella prateria Ukuku"}, +{"Island in the pond", "Isola nello stagno"}, +{"east island", "isola est"}, +{"south island", "isola sud"}, +{"Cave by the river crossing", "Grotta vicino al guado"}, +{"Rock maze", "Labirinto di rocce"}, +{"Small island off the coast", "Isoletta vicino alla costa"}, +{"South of Martha's Bay", "A sud della baia Martha"}, +{"southwest of Martha's Bay", "a sud-ovest della baia Martha"}, +{"Syrup the witch", "Strega"}, +{"Tree south of Tail Cave", "Albero a sud dell'antro della coda"}, +{"bomb hole", "buca con le bombe"}, +{"east bridge", "ponte est"}, +{"east drop", "caduta est"}, +{"hole", "buca"}, +{"sunken item", "oggetto sommerso"}, +{"under a rock", "sotto una roccia"}, +{"Tarin", "Tarin"}, +{"last prize", "ultimo premio"}, +{"Tree in Ukuku Prairie", "Albero nella prateria Ukuku"}, +{"Under the skull rock", "Sotto la roccia a teschio"}, +{"spot in Tabahl Wasteland", "nella landa di Tabahl"}, +{"Bush", "Cespuglio"}, +{"spot", "nel terreno"}, +{"Pot", "Vaso"}, +{"Apple tree", "Melo"}, +{"Rock", "Roccia"}, +{"the quadruplets' house", "casa dei gemelli"}, +{"the Southern Face Shrine", "tempio del sud"}, +{"the witch's hut", "casa della strega"}, +{"the library", "biblioteca"}, +{"the Seashell Mansion", "magione delle conchiglie"}, +{"a telephone booth", "cabina telefonica"}, +{"the Town Tool Shop", "bottega del villaggio"}, +{"the Dream Shrine", "santuario dei sogni"}, +{"north-west", "nord-ovest"}, +{"north-east", "nord-est"}, +{"south-west", "sud-ovest"}, +{"south-east", "sud-est"}, +{"centre", "centro"}, +{"middle", "al centro"}, +{"inside", "dentro"}, +{"Trendy Game: prize %s", "Gioco alla moda: premio %s"}, +{"Pot (%s)", "Vaso (%s)"}, +{"%s of 3", "%s di 3"}, +{"Owl statue below D8", "Statua del gufo sotto il livello 8"}, +// separators (tools/menu_strings.py) +{", ", ", "}, +{": ", ": "}, +// not used any more +{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Sì: si sposta dove appoggi il pollice, ovunque in basso a sinistra. No: resta dov'è (spostalo in Modifica layout touch)."}, +{"Edit touch layout", "Modifica layout touch"}, +{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Sposta i pulsanti sullo schermo, cambia la dimensione di ognuno o nascondilo, sopra il gioco. Disponibile durante la partita."}, +{"Walkthrough", "Percorso"}, +{"With all eight instruments", "Con tutti e otto gli strumenti"}, +{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "suona la ballata del pesce vento davanti all'uovo sull'altopiano Tal Tal."}, +{"(No walkthrough", "(Nessun percorso"}, +{"this seed has no request.json to recompute it.)", "questo seed non ha un request.json per ricalcolarlo.)"}, +{"door -> interior it now leads into", "porta -> interno in cui conduce ora"}, +{"interior -> where leaving it puts you", "interno -> dove ti porta l'uscita"}, {"boss cutscenes", "scene dei boss"}, {"enemy minibosses", "miniboss tra i nemici"}, {"escape bottle", "ampolla di fuga"}, @@ -1463,8 +1841,6 @@ {"Mabe bushes", "Cespugli di Mabe"}, {"Shop slot3 1st", "Bottega, posto 3, 1° oggetto"}, {"Shop slot3 2nd", "Bottega, posto 3, 2° oggetto"}, -{"Tarin", "Tarin"}, -{"Rock maze", "Labirinto di rocce"}, {"double stalfos", "doppio stalfos"}, {"putters", "putter"}, {"south orbs", "sfere sud"}, @@ -1533,12 +1909,9 @@ {"past master stalfos", "oltre il maestro Stalfos"}, {"right side east", "lato destro, est"}, {"water tunnel", "tunnel d'acqua"}, -{"west chest", "forziere ovest"}, -{"3 wizzrobes", "3 sciamanix"}, {"statue line north", "fila di statue nord"}, {"wizzrobe pegs", "pioli degli sciamanix"}, {"central room", "stanza centrale"}, -{"north chest", "forziere nord"}, {"Stalfos Note", "Biglietto dello stalfos"}, {"south of puzzle", "a sud dell'enigma"}, {"west ledge", "sporgenza ovest"}, @@ -1548,7 +1921,6 @@ {"middle kill chest", "forziere dello scontro centrale"}, {"stalfos chest", "forziere dello stalfos"}, {"angler", "lofio"}, -{"3 of a kind", "tris"}, {"middle ledge", "sporgenza centrale"}, {"moldorm", "Gran Shippo"}, {"west hallway", "corridoio ovest"}, @@ -1557,10 +1929,8 @@ {"tile room", "stanza delle piastrelle"}, {"wizzrobes ledge", "sporgenza degli sciamanix"}, {"Rooster statue", "Statua del gallo"}, -{"Moblin cave", "Grotta dei grublin"}, {"Bow Wow", "BauBau"}, {"like likes", "like like"}, -{"chest", "forziere"}, {"Taltal bomb hole", "Tal Tal, buca con le bombe"}, {"Taltal east bridge", "Tal Tal, ponte est"}, {"Taltal west dig", "Tal Tal, scavo ovest"}, @@ -1578,11 +1948,9 @@ {"west roomba", "roomba ovest"}, {"west vire", "vire ovest"}, {"Squish Trap", "Trappola schiacciamento"}, -{"2f horseheads", "teste di cavallo 2P"}, {"blue pegs chest", "forziere dei pioli blu"}, {"east ledge", "sporgenza est"}, {"grim creeper", "Fosco il Nottolatore"}, -{"3f horseheads", "teste di cavallo 3P"}, {"Shop slot5 3rd", "Bottega, posto 5, 3° oggetto"}, {"Shop slot5 4th", "Bottega, posto 5, 4° oggetto"}, {"Shop slot5 5th", "Bottega, posto 5, 5° oggetto"}, @@ -1591,7 +1959,6 @@ {"final", "finale"}, {"Shop slot6", "Bottega, posto 6"}, {"Taltal east drop", "Tal Tal, caduta est"}, -{"River crossing cave", "Grotta del guado"}, {"South bay sunken", "Baia sud, sommerso"}, {"Kanalet moat north", "Fossato di Kanalet nord"}, {"Rapids south island", "Rapide, isola sud"}, @@ -1599,7 +1966,6 @@ {"north orbs", "sfere nord"}, {"east color puzzle", "enigma dei colori est"}, {"spark chest", "forziere dello spark"}, -{"4 zols chest", "forziere dei 4 zol"}, {"genie", "Genio"}, {"long room west", "stanza lunga ovest"}, {"entrance chest", "forziere dell'ingresso"}, @@ -1607,7 +1973,6 @@ {"peg circle", "cerchio di pioli"}, {"basement north", "seminterrato nord"}, {"east of puzzle", "a est dell'enigma"}, -{"sunken item", "oggetto sommerso"}, {"ledge north", "sporgenza nord"}, {"statues chest", "forziere delle statue"}, {"crystals", "cristalli"}, @@ -1623,10 +1988,7 @@ {"gated hallway south", "corridoio con cancello sud"}, {"southwest chest", "forziere sud-ovest"}, {"eagle", "aquila"}, -{"1f west", "1P ovest"}, -{"3ofakind north", "tris nord"}, {"hinox", "hinox"}, -{"3ofakind south", "tris sud"}, {"hothead", "Testa Calda"}, {"gibdos", "ghibdo"}, {"statue", "statua"}, @@ -1719,18 +2081,14 @@ {"trendsanity", "trendsanity"}, {"Slime Eel", "Tallonatrice"}, {"Evil Orb", "Poonone"}, -{"Genie", "Genio"}, -{"Facade", "Facciatterra"}, {"Evil Eagle", "Malvatros"}, {"Slime Eye", "Melmocchio"}, {"Angler Fish", "Lofio"}, {"Hot Head", "Testa Calda"}, -{"Moldorm", "Gran Shippo"}, {"enemy bosses", "boss tra i nemici"}, {"miniboss souls", "anime dei miniboss"}, {"Blaino", "Blaino"}, {"Grim Creeper", "Fosco il Nottolatore"}, -{"Hinox", "Hinox"}, {"Smasher", "Smasher"}, {"Dodongo Snakes", "Dodongo"}, {"Avalaunch", "Terremodonte"}, @@ -1742,188 +2100,6 @@ {"ghost item", "oggetto del fantasma"}, {"tunic upgrades", "tuniche come potenziamenti"}, {"digs", "scavi"}, -{"Rupee", "Rupia"}, -// tracker.py -{"5 shells", "5 conchiglie"}, -{"15 shells", "15 conchiglie"}, -{"30 shells", "30 conchiglie"}, -{"40 shells", "40 conchiglie"}, -{"50 shells", "50 conchiglie"}, -{"spot above the cave", "sopra la grotta"}, -{"spot above Key Cavern", "sopra la caverna della chiave"}, -{"Ledge above Turtle Rock", "Sporgenza sopra Rocca Tartaruga"}, -{"Cave by Animal Village", "Grotta vicino al villaggio degli animali"}, -{"Northwest of Animal Village", "Nord-ovest del villaggio degli animali"}, -{"Armos Knight", "Grand'Armos"}, -{"Fisherman under the bridge", "Pescatore sotto il ponte"}, -{"Sunken item in the bay passage", "Oggetto sommerso nel passaggio della baia"}, -{"Tree on the beach", "Albero sulla spiaggia"}, -{"bonk", "carica"}, -{"Chest on the beach", "Forziere sulla spiaggia"}, -{"spot on the beach", "sulla spiaggia"}, -{"Beside the Seashell Mansion", "Accanto alla magione delle conchiglie"}, -{"Chef Bear", "Orso cuoco"}, -{"Christine", "Christine"}, -{"thank-you gift", "regalo di ringraziamento"}, -{"trade", "scambio"}, -{"Ciao Ciao", "YapYap"}, -{"Dampe's bottle challenge", "Sfida dell'ampolla di Danpei"}, -{"Dampe's final challenge", "Sfida finale di Danpei"}, -{"Dampe's heart challenge", "Sfida dei cuori di Danpei"}, -{"Dampe", "Danpei"}, -{"first page", "prima pagina"}, -{"second page", "seconda pagina"}, -{"Cave in Yarna Desert", "Grotta nel deserto di Yarna"}, -{"spot in Yarna Desert", "nel deserto di Yarna"}, -{"South of Yarna Desert", "A sud del deserto di Yarna"}, -{"BowWow's doghouse", "Cuccia di BauBau"}, -{"dig", "scavo"}, -{"left", "sinistra"}, -{"right", "destra"}, -{"Fishing pond", "Laghetto"}, -{"100 points", "100 punti"}, -{"150 points", "150 punti"}, -{"50 points", "50 punti"}, -{"Cheep Cheep", "Pesce Smack"}, -{"loose item", "oggetto a terra"}, -{"Ol' Baron", "Il Barone"}, -{"orange fish", "pesce arancione"}, -{"Ghost's grave", "Tomba del fantasma"}, -{"Pot in %s", "Vaso in %s"}, -{"the Ghost's house", "casa del fantasma"}, -{"Ghost's reward", "Ricompensa del fantasma"}, -{"West of Goponga Swamp", "A ovest della palude Goponga"}, -{"Goriya", "Koppi"}, -{"Grandma Yahoo", "Nonna Urrà"}, -{"broom", "scopa"}, -{"Cave under the Cemetery", "Grotta sotto il cimitero"}, -{"Invisible Zora", "Zora invisibile"}, -{"bombed guard", "guardia bombardata"}, -{"crow", "corvo"}, -{"last guard", "ultima guardia"}, -{"fight room", "stanza dello scontro"}, -{"Mad Bomber", "Bombarolo"}, -{"Kanalet moat", "Fossato di Kanalet"}, -{"north", "nord"}, -{"sunken", "sommerso"}, -{"south", "sud"}, -{"Cave south of Kanalet Castle", "Grotta a sud del castello di Kanalet"}, -{"Kiki the monkey", "Kiki la scimmia"}, -{"Seashell bush in Mabe Village", "Cespuglio con conchiglia nel villaggio Mabe"}, -{"Mad Batter", "Pipistrello pazzo"}, -{"Mysterious Forest", "Bosco misterioso"}, -{"song", "canzone"}, -{"Martha the mermaid", "Sirena Martha"}, -{"Mr. Write", "Dr. Wright"}, -{"North of the Moblin cave", "A nord della grotta dei grublin"}, -{"North of Tabahl Wasteland", "A nord della landa di Tabahl"}, -{"Rock maze in Ukuku Prairie", "Labirinto di rocce nella prateria Ukuku"}, -{"Island in the pond", "Isola nello stagno"}, -{"last hole", "ultima buca"}, -{"cave on the climb", "grotta sulla salita"}, -{"east island", "isola est"}, -{"middle island", "isola centrale"}, -{"race under 30 s", "corsa sotto i 30 s"}, -{"race under 35 s", "corsa sotto i 35 s"}, -{"race under 45 s", "corsa sotto i 45 s"}, -{"south island", "isola sud"}, -{"west island", "isola ovest"}, -{"Cave by the river crossing", "Grotta vicino al guado"}, -{"shelf", "scaffale"}, -{"Small island off the coast", "Isoletta vicino alla costa"}, -{"South of Martha's Bay", "A sud della baia Martha"}, -{"southwest of Martha's Bay", "a sud-ovest della baia Martha"}, -{"Chest in Goponga Swamp", "Forziere nella palude Goponga"}, -{"Syrup the witch", "Strega"}, -{"Tree south of Tail Cave", "Albero a sud dell'antro della coda"}, -{"five chest game", "gioco dei cinque forzieri"}, -{"bomb hole", "buca con le bombe"}, -{"crossing cave", "grotta di passaggio"}, -{"east bridge", "ponte est"}, -{"east drop", "caduta est"}, -{"left chest", "forziere a sinistra"}, -{"blocks at the entrance", "blocchi all'ingresso"}, -{"chest at the entrance", "forziere all'ingresso"}, -{"hole", "buca"}, -{"chest on the ledge", "forziere sulla sporgenza"}, -{"cave on the left climb", "grotta della salita a sinistra"}, -{"cave by the rooster", "grotta vicino al gallo"}, -{"way out", "via d'uscita"}, -{"under a rock", "sotto una roccia"}, -{"Tarin at the beehive", "Tarin all'alveare"}, -{"last prize", "ultimo premio"}, -{"Tree in Ukuku Prairie", "Albero nella prateria Ukuku"}, -{"Ukuku cave", "Grotta Ukuku"}, -{"east chest", "forziere est"}, -{"east item", "oggetto est"}, -{"west item", "oggetto ovest"}, -{"Under the skull rock", "Sotto la roccia a teschio"}, -{"Cave by the villa", "Grotta vicino alla villa"}, -{"Washed up on the beach", "Arenato sulla spiaggia"}, -{"spot in Tabahl Wasteland", "nella landa di Tabahl"}, -{"Forest crossing cave", "Grotta di passaggio del bosco"}, -{"item", "oggetto"}, -{"Forest north cave", "Grotta nord del bosco"}, -{"south chest", "forziere sud"}, -{"Bush", "Cespuglio"}, -{"spot", "nel terreno"}, -{"Pot", "Vaso"}, -{"Apple tree", "Melo"}, -{"Rock", "Roccia"}, -{"Marin and Tarin's house", "Casa di Marin e Tarin"}, -{"the quadruplets' house", "casa dei gemelli"}, -{"the Southern Face Shrine", "tempio del sud"}, -{"the witch's hut", "casa della strega"}, -{"the library", "biblioteca"}, -{"the Seashell Mansion", "magione delle conchiglie"}, -{"a telephone booth", "cabina telefonica"}, -{"the Town Tool Shop", "bottega del villaggio"}, -{"the Dream Shrine", "santuario dei sogni"}, -{"north-west", "nord-ovest"}, -{"north-east", "nord-est"}, -{"south-west", "sud-ovest"}, -{"south-east", "sud-est"}, -{"centre", "centro"}, -{"middle", "al centro"}, -{"inside", "dentro"}, -{"Trendy Game: prize %s", "Gioco alla moda: premio %s"}, -{"Pot (%s)", "Vaso (%s)"}, -{"%s of 3", "%s di 3"}, -{"Slime eye", "Melmocchio"}, -{"Angler", "Lofio"}, -{"Slime eel", "Tallonatrice"}, -{"Master stalfos", "Maestro Stalfos"}, -{"Eagle", "Aquila"}, -{"Hothead", "Testa Calda"}, -{"Owl statue long hallway", "Statua del gufo, corridoio lungo"}, -{"Owl statue spinies", "Statua del gufo, koopistrici"}, -{"Owl statue 3 of a kind", "Statua del gufo, tris"}, -{"Owl statue first switch", "Statua del gufo, primo interruttore"}, -{"Owl statue push puzzle", "Statua del gufo, enigma dei blocchi"}, -{"Owl statue past hinox", "Statua del gufo oltre l'hinox"}, -{"Owl statue basement north", "Statua del gufo, seminterrato nord"}, -{"Owl statue arrow", "Statua del gufo, freccia"}, -{"Owl statue northwest", "Statua del gufo nord-ovest"}, -{"Owl statue", "Statua del gufo"}, -{"Owl statue triple stalfos", "Statua del gufo, tre stalfos"}, -{"Owl statue before slime eel", "Statua del gufo prima della Tallonatrice"}, -{"Owl statue ledge", "Statua del gufo, sporgenza"}, -{"Owl statue southeast", "Statua del gufo sud-est"}, -{"Owl statue canal", "Statua del gufo, canale"}, -{"Owl statue ball", "Statua del gufo, palla"}, -{"Owl statue kirbys", "Statua del gufo, kirby"}, -{"Owl statue hookshot chest", "Statua del gufo, forziere dell'arpione"}, -{"Owl statue above smasher", "Statua del gufo sopra lo Smasher"}, -{"Owl statue below gibdos", "Statua del gufo sotto i ghibdo"}, -{"Owl statue eye statue", "Statua del gufo, statua dell'occhio"}, -{"Owl statue nine switches", "Statua del gufo, nove interruttori"}, -{"Owl statue first switches", "Statua del gufo, primi interruttori"}, -{"Owl statue before mini boss", "Statua del gufo prima del miniboss"}, -{"Owl statue below D8", "Statua del gufo sotto il livello 8"}, -// separators (tools/menu_strings.py) -{", ", ", "}, -{": ", ": "}, -// not used any more {"Set the buttons and keys for the game. F1, Esc, Home or Back + Start always open this menu.", "Imposta i pulsanti e i tasti del gioco. F1, Esc, HOME o Back + Start aprono sempre questo menu."}, {"! This folder is synced by OneDrive", "! Questa cartella è sincronizzata con OneDrive"}, {"About %.0f GB of game files will upload to your OneDrive.", "Circa %.0f GB di file di gioco verranno caricati sul tuo OneDrive."}, diff --git a/runtime/ui/lang/ja.inc b/runtime/ui/lang/ja.inc index c2c194d32..d3c7ccfdd 100644 --- a/runtime/ui/lang/ja.inc +++ b/runtime/ui/lang/ja.inc @@ -226,13 +226,9 @@ {"Appearance", "見た目"}, {"Layout", "配置"}, {"Follow thumb", "親指に合わせる"}, -{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "オン: 左下のどこでも、親指を置いた場所に移動します。オフ: その場所に固定されます(「タッチ配置を編集」で移動できます)。"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it with the Layout button).", "オン: 左下のどこでも、親指を置いた場所に移動します。オフ: その場所に固定されます(配置ボタンで移動できます)。"}, {"Layout button", "配置ボタン"}, {"A button at the top, next to the menu button, that lets you move and resize the on-screen buttons.", "画面上部、メニューボタンの隣にあるボタンで、画面上のボタンを移動したり大きさを変えたりできます。"}, -{"Load a save first.", "先にセーブデータをロードしてください。"}, -{"Edit touch layout", "タッチ配置を編集"}, -{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "ゲーム画面の上で、画面上のボタンを動かしたり、大きさを変えたり、隠したりできます。プレイ中に使えます。"}, {"Reset touch layout", "タッチ配置をリセット"}, {"Puts every on-screen button back in its place, at its size, shown.", "画面上のボタンをすべて元の位置と大きさに戻し、表示します。"}, // runtime/ui/difficulty.mm @@ -691,6 +687,7 @@ {"The game's echo in caves, dungeons and big rooms.", "どうくつやダンジョン、広い部屋での響き。"}, {"LAS Recomp menu sounds", "LAS Recompのメニュー音"}, {"Sounds when you move around and pick things in LAS Recomp's menus.", "LAS Recompのメニューで移動したり選んだりしたときの音です。"}, +{"Load a save first.", "先にセーブデータをロードしてください。"}, {"Quit", "終了"}, {"Reset Game", "ゲームをリセット"}, {"Progress since your last save is lost.", "最後にセーブしてからの進行は失われます。"}, @@ -1090,6 +1087,8 @@ {"Reveal spoilers", "ネタバレを表示"}, {"Search items and places", "アイテムと場所を検索"}, {"Search the spoiler log", "スポイラーログを検索"}, +{"Useful items only", "役立つアイテムのみ"}, +{"Hide checked", "済みを隠す"}, // runtime/ui/tracker_overlay.mm {"Seashells", "貝がら"}, {"%d Small Keys", "小さなカギ%d個"}, @@ -1122,7 +1121,6 @@ {"needs %s +%d", "必要: %s +%d"}, {"Filter: %s", "フィルター: %s"}, {"In logic now", "今ロジック内"}, -{"Hide checked", "済みを隠す"}, {"Filters", "フィルター"}, {"Room %c%d", "部屋%c%d"}, {"trick logic", "トリックありのロジック"}, @@ -1177,9 +1175,9 @@ {"This is where Manbo's Mambo drops you. You can't warp here directly.", "マンボウのマンボで出る場所です。ここへ直接はワープできません。"}, {"%d places", "%dか所"}, {"Load a save to warp.", "ワープするにはセーブデータをロードしてください。"}, +{"Places", "場所"}, {"Search", "検索"}, {"Search places...", "場所を検索..."}, -{"Places", "場所"}, {"Link is here", "リンクはここ"}, // warp_data.h {"Dungeons", "ダンジョン"}, @@ -1306,28 +1304,112 @@ {"Building game files (%s tasks)", "ゲームファイルを作成中(タスク %s 個)"}, {"Triforce hunt: %s", "トライフォース集め: %s"}, // spoiler_view.py -{"Settings: %s", "設定: %s"}, -{"Walkthrough", "攻略手順"}, -{"Items by area", "エリア別アイテム"}, -{"Starting items: %s", "最初の持ち物: %s"}, +{"Route", "ルート"}, +{"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "シードをクリアするのに必要なものだけです。各ステップは、それより前のステップで手に入るアイテムで行けます。"}, +{"Finish", "クリア"}, +{"Everything useful step by step", "役立つものを順番にすべて"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "各ステップは、それまでのステップで手に入れたもので進められます(ステップ内の順番は自由)。"}, {"Only items that open things up are listed; rupees", "先へ進むのに必要なアイテムだけを載せています。ルピー"}, {"traps and similar are left out.", "トラップなどは省いています。"}, -{"Finish", "クリア"}, -{"With all eight instruments", "8つの楽器をすべてそろえて"}, -{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "タルタル高地の聖なるタマゴの前でかぜのさかなの歌を演奏する。"}, -{"(No walkthrough", "(攻略手順なし"}, -{"this seed has no request.json to recompute it.)", "このシードには計算し直すための request.json がありません。)"}, +{"Items by area", "エリア別アイテム"}, +{"Dungeon rooms", "ダンジョンの部屋"}, +{"Where each moved room is now and where it came from.", "動かされた部屋の今の場所と、元の場所。"}, {"Entrances", "入口"}, -{"%s entrance leads into %s", "%sの入口は%sにつながっています"}, -{"%s:", "%s:"}, {"Doors", "トビラ"}, -{"door -> interior it now leads into", "トビラ -> 今つながっている屋内"}, +{"each door and where it now leads", "各トビラと今つながっている先"}, +{"Settings: %s", "設定: %s"}, +{"(This seed has no step list.)", "(このシードにはステップ一覧がありません。)"}, +{"%s entrance leads into %s", "%sの入口は%sにつながっています"}, +{"Unchanged (%s)", "変更なし(%s)"}, {"Exits", "出口"}, -{"interior -> where leaving it puts you", "屋内 -> 出たときに着く場所"}, +{"each way out and where it puts you", "各出口と出た先"}, +{"Starting items: %s", "最初の持ち物: %s"}, +{"%s:", "%s:"}, +{"Small items (%s)", "小物(%s)"}, {"%s - enter through %s's entrance", "%s - %sの入口から入る"}, {"%s's Soul", "%sの魂"}, {"%s' Soul", "%sの魂"}, +{"room %s", "部屋%s"}, +{"The last of the %s Triforce pieces you need ends the game.", "必要な%s個のトライフォースのかけらの最後の1つでゲームが終わります。"}, +{"2nd", "2つ目"}, +{"shelf", "棚"}, +{"second item", "2つ目のアイテム"}, +{"third item", "3つ目のアイテム"}, +{"west side door", "西側のトビラ"}, +{"east side door", "東側のトビラ"}, +{"Fire cave", "炎のどうくつ"}, +{"north door", "北のトビラ"}, +{"south door", "南のトビラ"}, +{"Wind Fish's egg", "聖なるタマゴ"}, +{"rooster house", "ニワトリの家"}, +{"Telephone booth by Turtle Rock", "カメイワの電話ボックス"}, +{"Mad Batter well", "小悪魔の井戸"}, +{"Tal Tal crossing cave", "タルタルの通り抜けどうくつ"}, +{"west door", "西のトビラ"}, +{"east door", "東のトビラ"}, +{"Mountain cave", "山のどうくつ"}, +{"bottom door", "一番下のトビラ"}, +{"top door", "一番上のトビラ"}, +{"ledge door", "段差のトビラ"}, +{"Papahl's cave", "パパールのどうくつ"}, +{"lower door", "下のトビラ"}, +{"upper door", "上のトビラ"}, +{"Bird Key cave", "バードのカギのどうくつ"}, +{"Five chest cave", "宝箱5個のどうくつ"}, +{"Five chest game", "宝箱5個のゲーム"}, +{"exit door", "出口のトビラ"}, +{"Rainbow cave", "虹のどうくつ"}, +{"outer west door", "外側の西のトビラ"}, +{"inner west door", "内側の西のトビラ"}, +{"inner east door", "内側の東のトビラ"}, +{"outer east door", "外側の東のトビラ"}, +{"Fairy fountain", "大妖精の泉"}, +{"Tal Tal east", "タルタル東"}, +{"Cave to Eagle's Tower", "オオワシの塔へのどうくつ"}, +{"Cave by Angler's Tunnel", "アングラーの滝ツボのそばのどうくつ"}, +{"Damp cave", "しめったどうくつ"}, +{"Raft cave", "イカダのどうくつ"}, +{"Telephone booth", "電話ボックス"}, +{"Moblin cave", "モリブリンのどうくつ"}, +{"Dampe's house", "ダンペイの小屋"}, +{"Rapids Ride raft shop", "急流すべりのイカダ屋"}, +{"Mysterious Forest", "ふしぎの森"}, +{"north cave", "北のどうくつ"}, +{"Kanalet tunnel", "カナレットのトンネル"}, +{"Telephone booth by Kanalet Castle", "カナレットの城のそばの電話ボックス"}, +{"roof west door", "屋根の西のトビラ"}, +{"roof east door", "屋根の東のトビラ"}, +{"front door", "正面のトビラ"}, +{"Cave south of Kanalet Castle", "カナレットの城の南のどうくつ"}, +{"Forest crossing cave", "森の通り抜けどうくつ"}, +{"forest", "森"}, +{"north side door", "北側のトビラ"}, +{"Ukuku cave", "ウククのどうくつ"}, +{"Ukuku Prairie north", "ウクク草原の北"}, +{"Ukuku Prairie west", "ウクク草原の西"}, +{"Cave to Face Shrine", "顔の神殿へのどうくつ"}, +{"Fairy fountain by the Armos maze", "アモスの迷路のそばの大妖精の泉"}, +{"Flying Rooster's grave", "空飛ぶニワトリのお墓"}, +{"River crossing cave", "川の渡り場のどうくつ"}, +{"Armos maze cave", "アモスの迷路のどうくつ"}, +{"BowWow's kennel", "ワンワンのイヌ小屋"}, +{"Marin and Tarin's house", "マリンとタリンの家"}, +{"Mabe Village library", "メーベの村の図書館"}, +{"Cliff cave by the bay", "入り江の崖のどうくつ"}, +{"plateau door", "高台のトビラ"}, +{"Cave behind Richard's villa", "リチャードの別荘の裏のどうくつ"}, +{"rabbit house", "うさぎの家"}, +{"Zora's house", "ゾーラの家"}, +{"bombed cave", "バクダンで開けたどうくつ"}, +{"Lanmola cave", "ラネモーラのどうくつ"}, +{"east dive spot", "東のもぐりポイント"}, +{"west dive spot", "西のもぐりポイント"}, +{"Sale's banana house", "セールの家"}, +{"bay", "入り江"}, +{"Tunnel to the bay Mad Batter", "入り江の小悪魔へのトンネル"}, +{"Mermaid statue", "人魚像"}, +{"Boomerang cave", "ブーメランのどうくつ"}, +{"Ghost's house", "オバケの家"}, {"Signpost Maze", "カンバンの迷路"}, {"Ancient Ruins", "古代の遺跡"}, {"west", "西"}, @@ -1338,98 +1420,180 @@ {"50 Rupees", "50ルピー"}, {"100 Rupees", "100ルピー"}, {"300 Rupees", "300ルピー"}, +{"1 Rupee", "1ルピー"}, {"Trap!", "トラップ!"}, {"Frog Song of Soul", "カエルのソウル"}, {"Chamber Stone", "パネ石"}, +{"Triforce piece", "トライフォースのかけら"}, {"Beach chest", "浜辺の宝箱"}, +{"Chest on the beach", "浜辺の宝箱"}, {"Taltal entrance chest", "タルタルの入口の宝箱"}, +{"chest at the entrance", "入口の宝箱"}, {"Taltal east left chest", "タルタル東の左の宝箱"}, +{"left chest", "左の宝箱"}, {"Dream shrine right", "夢のほこらの右"}, +{"right", "右"}, {"Armos cave", "アモスのどうくつ"}, {"Goponga cave left", "ゴポンガのどうくつの左"}, +{"left", "左"}, {"Goponga cave right", "ゴポンガのどうくつの右"}, {"Ukuku cave west chest", "ウククのどうくつ西の宝箱"}, +{"west chest", "西の宝箱"}, {"Ukuku cave east chest", "ウククのどうくつ東の宝箱"}, +{"east chest", "東の宝箱"}, {"Kanalet south cave", "カナレットの南のどうくつ"}, {"Swamp chest", "沼の宝箱"}, +{"Chest in Goponga Swamp", "ゴポンガの沼の宝箱"}, {"Taltal left ascent cave", "タルタルの左の登り道のどうくつ"}, +{"cave on the left climb", "左の登り道のどうくつ"}, {"Taltal ledge chest", "タルタルの崖の上の宝箱"}, +{"chest on the ledge", "崖の上の宝箱"}, {"Taltal 5 chest puzzle", "タルタルの5つの宝箱のゲーム"}, +{"five chest game", "5つの宝箱のゲーム"}, {"Taltal west chest", "タルタル西の宝箱"}, {"Villa cave", "別荘のどうくつ"}, +{"Cave by the villa", "別荘そばのどうくつ"}, {"Woods crossing cave chest", "森の通り抜けどうくつの宝箱"}, +{"chest", "宝箱"}, {"Woods north cave chest", "森の北のどうくつの宝箱"}, +{"Forest north cave", "森の北のどうくつ"}, {"Woods south chest", "森の南の宝箱"}, +{"south chest", "南の宝箱"}, {"Woods north chest", "森の北の宝箱"}, +{"north chest", "北の宝箱"}, {"Fishing", "つりぼり"}, +{"Fishing pond", "つりぼり"}, +{"50 points", "50点"}, {"Fishing orange", "つりぼりのオレンジの魚"}, +{"orange fish", "オレンジの魚"}, {"Fishing loose", "つりぼりの落ちているアイテム"}, +{"loose item", "落ちているアイテム"}, +{"100 points", "100点"}, +{"150 points", "150点"}, {"Fishing cheep cheep", "つりぼりのプクプク"}, +{"Cheep Cheep", "プクプク"}, {"Fishing ol baron", "つりぼりのヌシ"}, +{"Ol' Baron", "ヌシ"}, {"Rapids race", "急流すべりのタイムアタック"}, +{"race under 45 s", "タイムアタック45秒以内"}, +{"race under 35 s", "タイムアタック35秒以内"}, +{"race under 30 s", "タイムアタック30秒以内"}, {"Rapids middle island", "急流すべりの真ん中の島"}, +{"middle island", "真ん中の島"}, {"Rapids west island", "急流すべりの西の島"}, +{"west island", "西の島"}, {"Dampe page", "ダンペイさんのページ"}, +{"Dampe", "ダンペイさん"}, +{"first page", "1ページ目"}, {"Dampe heart challenge", "ダンペイさんのハートのお題"}, +{"Dampe's heart challenge", "ダンペイさんのハートのお題"}, +{"second page", "2ページ目"}, {"Dampe bottle challenge", "ダンペイさんのビンのお題"}, +{"Dampe's bottle challenge", "ダンペイさんのビンのお題"}, {"Dampe final", "ダンペイさんの最後のお題"}, +{"Dampe's final challenge", "ダンペイさんの最後のお題"}, {"Walrus", "セイウチ"}, {"Ghost reward", "オバケのお礼"}, +{"Ghost's reward", "オバケのお礼"}, +{"song", "歌"}, {"Manbo", "マンボ"}, {"Mamu", "マムー"}, {"Mad batter bay", "入り江の小悪魔"}, +{"Mad Batter", "小悪魔"}, {"Mad batter taltal", "タルタルの小悪魔"}, {"Mad batter woods", "森の小悪魔"}, {"Invisible zora", "見えないゾーラ"}, +{"Invisible Zora", "見えないゾーラ"}, {"Goriya trader", "ゴーリアとの交換"}, +{"Goriya", "ゴーリア"}, +{"trade", "交換"}, {"Mamasha", "ママーシャ"}, {"Ciao ciao", "キャンキャン"}, +{"Ciao Ciao", "キャンキャン"}, {"Sale", "セール"}, {"Kiki", "サルキッキ"}, +{"Kiki the monkey", "サルキッキ"}, {"Tarin ukuku", "ウククのタリン"}, +{"Tarin at the beehive", "ハチの巣のタリン"}, {"Chef bear", "クマのコック"}, +{"Chef Bear", "クマのコック"}, {"Papahl", "パパール"}, {"Christine trade", "クリスティーヌとの交換"}, +{"Christine", "クリスティーヌ"}, {"Christine grateful", "クリスティーヌのお礼"}, +{"thank-you gift", "お礼"}, {"Mr write", "ライトさま"}, +{"Mr. Write", "ライトさま"}, {"Grandma yahoo", "ヤッホーばあさん"}, +{"Grandma Yahoo", "ヤッホーばあさん"}, +{"broom", "ほうき"}, {"Bay fisherman", "入り江の釣り人"}, +{"Fisherman under the bridge", "橋の下の釣り人"}, {"Mermaid martha", "人魚のマーサ"}, +{"Martha the mermaid", "人魚のマーサ"}, {"Mermaid cave", "人魚のどうくつ"}, {"Lanmola", "ラネモーラ"}, {"Armos knight", "デグアモス"}, +{"Armos Knight", "デグアモス"}, {"Washed up", "打ち上げられたもの"}, +{"Washed up on the beach", "浜辺に打ち上げられたもの"}, {"Dream shrine left", "夢のほこらの左"}, {"Taltal rooster cave", "タルタルのニワトリのどうくつ"}, +{"cave by the rooster", "ニワトリそばのどうくつ"}, {"Woods loose", "森の落ちているアイテム"}, {"Pothole final", "アナボコ畑の最後"}, +{"last hole", "最後の穴"}, {"5 seashell reward", "貝がら5個のごほうび"}, +{"5 shells", "貝がら5個"}, {"15 seashell reward", "貝がら15個のごほうび"}, +{"15 shells", "貝がら15個"}, {"30 seashell reward", "貝がら30個のごほうび"}, +{"30 shells", "貝がら30個"}, {"40 seashell reward", "貝がら40個のごほうび"}, +{"40 shells", "貝がら40個"}, {"50 seashell reward", "貝がら50個のごほうび"}, +{"50 shells", "貝がら50個"}, {"Animal village northwest", "どうぶつ村の北西"}, +{"Northwest of Animal Village", "どうぶつ村の北西"}, {"Animal village cave", "どうぶつ村のどうくつ"}, +{"Cave by Animal Village", "どうぶつ村そばのどうくつ"}, {"Taltal entrance blocks", "タルタルの入口のブロック"}, +{"blocks at the entrance", "入口のブロック"}, {"North wasteland", "林の北"}, +{"North of Tabahl Wasteland", "タバールの林の北"}, {"Desert cave", "砂漠のどうくつ"}, +{"Cave in Yarna Desert", "ヤーナ砂漠のどうくつ"}, {"Graveyard cave", "墓地のどうくつ"}, +{"Cave under the Cemetery", "墓地の下のどうくつ"}, {"Mabe well", "メーベの井戸"}, {"Ukuku cave west loose", "ウククのどうくつ西の落ちているアイテム"}, +{"west item", "西のアイテム"}, {"Ukuku cave east loose", "ウククのどうくつ東の落ちているアイテム"}, +{"east item", "東のアイテム"}, {"Rapids ascent cave", "急流の登り道のどうくつ"}, +{"cave on the climb", "登り道のどうくつ"}, {"Taltal crossing cave", "タルタルの通り抜けどうくつ"}, +{"crossing cave", "通り抜けどうくつ"}, {"Taltal west escape", "タルタル西の脱出路"}, +{"way out", "脱出路"}, {"Above turtle rock", "カメイワの上"}, +{"Ledge above Turtle Rock", "カメイワの上の崖"}, {"Pothole north", "アナボコ畑の北"}, +{"north", "北"}, {"Woods crossing cave loose", "森の通り抜けどうくつの落ちているアイテム"}, +{"item", "アイテム"}, {"Woods north cave loose", "森の北のどうくつの落ちているアイテム"}, {"Diamond island", "ひし形の島"}, {"Kanalet crow", "カナレットのカラス"}, +{"crow", "カラス"}, {"Kanalet mad bomber", "カナレットのボム兵"}, +{"Mad Bomber", "ボム兵"}, {"Kanalet kill room", "カナレットの戦闘部屋"}, +{"fight room", "戦闘部屋"}, {"Kanalet bombed guard", "カナレットの爆破した兵士"}, +{"bombed guard", "爆破した兵士"}, {"Kanalet final guard", "カナレットの最後の兵士"}, +{"last guard", "最後の兵士"}, {"Owl statue moblin cave", "フクロウの石像 モリブリンのどうくつ"}, {"Owl statue pothole", "フクロウの石像 アナボコ畑"}, {"Owl statue above cave", "フクロウの石像 どうくつの上"}, @@ -1438,8 +1602,222 @@ {"Owl statue maze", "フクロウの石像 迷路"}, {"Owl statue rapids", "フクロウの石像 急流すべり"}, {"Owl statue taltal east", "フクロウの石像 タルタル東"}, +{"Instrument", "楽器"}, +{"Moldorm", "デグテール"}, +{"West hallway", "西の通路"}, +{"Middle ledge", "中央の段差"}, +{"3 of a kind", "ベガス"}, +{"Bomb room", "バクダンの部屋"}, +{"Middle kill chest", "中央の敵を倒す宝箱"}, +{"Spark chest", "スパークの宝箱"}, +{"Button chest", "スイッチの宝箱"}, +{"Stalfos chest", "スタルフォスの宝箱"}, +{"4 zols chest", "ゾル4体の宝箱"}, +{"Beetles", "ゾロゾロ"}, +{"Owl statue long hallway", "フクロウの石像 長い通路"}, +{"Owl statue spinies", "フクロウの石像 トゲゾー"}, +{"Owl statue 3 of a kind", "フクロウの石像 ベガス"}, +{"Genie", "ツボ魔王"}, +{"Boos", "テレサ"}, +{"Long room west", "長い部屋の西"}, +{"Long room east", "長い部屋の東"}, +{"Vacuum mouth room", "吸い込み口の部屋"}, +{"Kill puzzle", "敵を倒すパズル"}, +{"West chest", "西の宝箱"}, +{"Double stalfos", "スタルフォス2体"}, +{"Double shy guys", "ヘイホー2体"}, +{"Entrance chest", "入口の宝箱"}, +{"Single shy guy", "ヘイホー1体"}, +{"Peg circle", "杭の円"}, +{"Owl statue first switch", "フクロウの石像 最初のスイッチ"}, +{"Owl statue push puzzle", "フクロウの石像 押すパズル"}, +{"Owl statue past hinox", "フクロウの石像 ヒノックスの先"}, +{"Slime eye", "デグゾル"}, +{"Pre boss", "ボスの手前"}, +{"Triple bombites", "ボマー3体"}, +{"North chest", "北の宝箱"}, +{"Central ledge", "中央の段差"}, +{"Central chest", "中央の宝箱"}, +{"East ledge", "東の段差"}, +{"Pairodds", "キョロボー"}, +{"Five zols", "ゾル5体"}, +{"Basement north", "地下の北"}, +{"Basement west", "地下の西"}, +{"Basement south", "地下の南"}, +{"Hallway", "通路"}, +{"Hallway side room", "通路の脇部屋"}, +{"Vacuum mouth", "吸い込み口"}, +{"Owl statue basement north", "フクロウの石像 地下の北"}, +{"Owl statue arrow", "フクロウの石像 矢"}, +{"Owl statue northwest", "フクロウの石像 北西"}, +{"Angler", "アングラー"}, +{"East side north", "東側の北"}, +{"East side south", "東側の南"}, +{"West ledge", "西の段差"}, +{"East of puzzle", "パズルの東"}, +{"South of puzzle", "パズルの南"}, +{"Sunken item", "水中のアイテム"}, +{"Central room", "中央の部屋"}, +{"Small island", "小島"}, +{"Ledge north", "段差の北"}, +{"Statues chest", "像の宝箱"}, +{"Lobby", "ロビー"}, +{"Crystals", "クリスタル"}, +{"Owl statue", "フクロウの石像"}, +{"Slime eel", "フッカー"}, +{"Master stalfos", "マスタースタルフォン"}, +{"Crystal blocks", "クリスタルブロック"}, +{"Past master stalfos", "マスタースタルフォンの先"}, +{"Water tunnel", "水中トンネル"}, +{"Right side north", "右側の北"}, +{"Right side middle", "右側の中央"}, +{"Right side east", "右側の東"}, +{"Helmasaurs", "ヒップループ"}, +{"West stairs chest", "西の階段の宝箱"}, +{"Near entrance", "入口の近く"}, +{"Owl statue triple stalfos", "フクロウの石像 スタルフォス3体"}, +{"Owl statue before slime eel", "フクロウの石像 フッカーの手前"}, +{"Facade", "マットフェイス"}, +{"Far northwest", "北西の奥"}, +{"Far northeast", "北東の奥"}, +{"Statue line north", "像の列の北"}, +{"Statue line south", "像の列の南"}, +{"Wizzrobe pegs", "ウィズローブと杭"}, +{"Canal", "水路"}, +{"3 wizzrobes", "ウィズローブ3体"}, +{"Tile room", "タイルの部屋"}, +{"Gated hallway north", "柵の通路の北"}, +{"Gated hallway south", "柵の通路の南"}, +{"Southwest chest", "南西の宝箱"}, +{"Wizzrobes ledge", "ウィズローブの段差"}, +{"Owl statue ledge", "フクロウの石像 段差"}, +{"Owl statue southeast", "フクロウの石像 南東"}, +{"Owl statue canal", "フクロウの石像 水路"}, +{"Eagle", "アルバトス"}, +{"Like likes", "ライクライク"}, +{"1f west", "1階の西"}, +{"3ofakind north", "ベガスの北"}, +{"2f horseheads", "2階の馬の頭"}, +{"Hinox", "ヒノックス"}, +{"3ofakind south", "ベガスの南"}, +{"Blue pegs chest", "青い杭の宝箱"}, +{"3f horseheads", "3階の馬の頭"}, +{"Grim creeper", "ピッコロ使い"}, +{"Owl statue ball", "フクロウの石像 鉄球"}, +{"Owl statue kirbys", "フクロウの石像 カービィ"}, +{"Owl statue hookshot chest", "フクロウの石像 フックショットの宝箱"}, +{"Hothead", "デグフレム"}, +{"Left exit chest", "左の出口の宝箱"}, +{"Dodongos", "ドドンゴ"}, +{"Northern ledge", "北の段差"}, +{"Gibdos", "ギブド"}, +{"Beamos chest", "ビーモスの宝箱"}, +{"Statue", "像"}, +{"Torches", "燭台"}, +{"West vire", "西のバイア"}, +{"West roomba", "西のローラ"}, +{"Surrounded by blocks", "ブロックに囲まれた場所"}, +{"Sparks chest", "スパークの宝箱"}, +{"East of pots", "ツボの東"}, +{"East roomba", "東のローラ"}, +{"Far southwest", "南西の奥"}, +{"Far southeast", "南東の奥"}, +{"Owl statue above smasher", "フクロウの石像 スマッシャーの上"}, +{"Owl statue below gibdos", "フクロウの石像 ギブドの下"}, +{"Owl statue eye statue", "フクロウの石像 目の像"}, +{"Northern chest", "北の宝箱"}, +{"Zol pots", "ゾルのツボ"}, +{"North orbs", "北のオーブ"}, +{"South orbs", "南のオーブ"}, +{"East color puzzle", "東の色パズル"}, +{"West color puzzle", "西の色パズル"}, +{"Putters", "パター"}, +{"Owl statue nine switches", "フクロウの石像 9つのスイッチ"}, +{"Owl statue first switches", "フクロウの石像 最初のスイッチ群"}, +{"Owl statue before mini boss", "フクロウの石像 中ボスの手前"}, +{"Rupee", "ルピー"}, {"stone beak", "石像のクチバシ"}, -// spoiler logs +// tracker.py +{"spot above the cave", "どうくつの上の地点"}, +{"spot above Key Cavern", "カギの穴ぐらの上の地点"}, +{"Sunken item in the bay passage", "入り江の抜け道の水中のアイテム"}, +{"Tree on the beach", "浜辺の木"}, +{"bonk", "体当たり"}, +{"spot on the beach", "浜辺の地点"}, +{"Beside the Seashell Mansion", "貝がらの館の横"}, +{"spot in Yarna Desert", "ヤーナ砂漠の地点"}, +{"South of Yarna Desert", "ヤーナ砂漠の南"}, +{"BowWow's doghouse", "ワンワンのイヌ小屋"}, +{"dig", "穴掘り"}, +{"Ghost's grave", "オバケのお墓"}, +{"Pot in %s", "%sのツボ"}, +{"the Ghost's house", "オバケの家"}, +{"West of Goponga Swamp", "ゴポンガの沼の西"}, +{"Kanalet moat", "カナレットの堀"}, +{"sunken", "水中"}, +{"south", "南"}, +{"Seashell bush in Mabe Village", "メーベの村の貝がらの茂み"}, +{"North of the Moblin cave", "モリブリンのどうくつの北"}, +{"Rock maze in Ukuku Prairie", "ウクク草原の岩の迷路"}, +{"Island in the pond", "池の島"}, +{"east island", "東の島"}, +{"south island", "南の島"}, +{"Cave by the river crossing", "川の渡り場そばのどうくつ"}, +{"Rock maze", "岩の迷路"}, +{"Small island off the coast", "海岸沖の小島"}, +{"South of Martha's Bay", "マーサの入り江の南"}, +{"southwest of Martha's Bay", "マーサの入り江の南西"}, +{"Syrup the witch", "魔法おばば"}, +{"Tree south of Tail Cave", "テールのほらあなの南の木"}, +{"bomb hole", "バクダンの穴"}, +{"east bridge", "東の橋"}, +{"east drop", "東の飛び降り"}, +{"hole", "穴"}, +{"sunken item", "水中のアイテム"}, +{"under a rock", "岩の下"}, +{"Tarin", "タリン"}, +{"last prize", "最後の景品"}, +{"Tree in Ukuku Prairie", "ウクク草原の木"}, +{"Under the skull rock", "ドクロ岩の下"}, +{"spot in Tabahl Wasteland", "タバールの林の地点"}, +{"Bush", "草むら"}, +{"spot", "地点"}, +{"Pot", "ツボ"}, +{"Apple tree", "リンゴの木"}, +{"Rock", "岩"}, +{"the quadruplets' house", "四つ子の家"}, +{"the Southern Face Shrine", "南の神殿"}, +{"the witch's hut", "魔法おばばの家"}, +{"the library", "図書館"}, +{"the Seashell Mansion", "貝がらの館"}, +{"a telephone booth", "電話ボックス"}, +{"the Town Tool Shop", "村の道具屋さん"}, +{"the Dream Shrine", "夢のほこら"}, +{"north-west", "北西"}, +{"north-east", "北東"}, +{"south-west", "南西"}, +{"south-east", "南東"}, +{"centre", "中央"}, +{"middle", "真ん中"}, +{"inside", "屋内"}, +{"Trendy Game: prize %s", "今はやりのゲーム: 景品%s"}, +{"Pot (%s)", "ツボ(%s)"}, +{"%s of 3", "%s/3"}, +{"Owl statue below D8", "フクロウの石像 レベル8の下"}, +// separators (tools/menu_strings.py) +{", ", "、"}, +{": ", ":"}, +// not used any more +{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "オン: 左下のどこでも、親指を置いた場所に移動します。オフ: その場所に固定されます(「タッチ配置を編集」で移動できます)。"}, +{"Edit touch layout", "タッチ配置を編集"}, +{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "ゲーム画面の上で、画面上のボタンを動かしたり、大きさを変えたり、隠したりできます。プレイ中に使えます。"}, +{"Walkthrough", "攻略手順"}, +{"With all eight instruments", "8つの楽器をすべてそろえて"}, +{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "タルタル高地の聖なるタマゴの前でかぜのさかなの歌を演奏する。"}, +{"(No walkthrough", "(攻略手順なし"}, +{"this seed has no request.json to recompute it.)", "このシードには計算し直すための request.json がありません。)"}, +{"door -> interior it now leads into", "トビラ -> 今つながっている屋内"}, +{"interior -> where leaving it puts you", "屋内 -> 出たときに着く場所"}, {"boss cutscenes", "ボスのイベントシーン"}, {"enemy minibosses", "敵に中ボス"}, {"escape bottle", "ビンで脱出"}, @@ -1463,8 +1841,6 @@ {"Mabe bushes", "メーベの草むら"}, {"Shop slot3 1st", "お店の棚3 1つ目"}, {"Shop slot3 2nd", "お店の棚3 2つ目"}, -{"Tarin", "タリン"}, -{"Rock maze", "岩の迷路"}, {"double stalfos", "スタルフォス2体"}, {"putters", "パター"}, {"south orbs", "南のオーブ"}, @@ -1533,12 +1909,9 @@ {"past master stalfos", "マスタースタルフォンの先"}, {"right side east", "右側の東"}, {"water tunnel", "水中トンネル"}, -{"west chest", "西の宝箱"}, -{"3 wizzrobes", "ウィズローブ3体"}, {"statue line north", "像の列の北"}, {"wizzrobe pegs", "ウィズローブと杭"}, {"central room", "中央の部屋"}, -{"north chest", "北の宝箱"}, {"Stalfos Note", "スタルフォンの手紙"}, {"south of puzzle", "パズルの南"}, {"west ledge", "西の段差"}, @@ -1548,7 +1921,6 @@ {"middle kill chest", "中央の敵を倒す宝箱"}, {"stalfos chest", "スタルフォスの宝箱"}, {"angler", "アングラー"}, -{"3 of a kind", "ベガス"}, {"middle ledge", "中央の段差"}, {"moldorm", "デグテール"}, {"west hallway", "西の通路"}, @@ -1557,10 +1929,8 @@ {"tile room", "タイルの部屋"}, {"wizzrobes ledge", "ウィズローブの段差"}, {"Rooster statue", "ニワトリの像"}, -{"Moblin cave", "モリブリンのどうくつ"}, {"Bow Wow", "ワンワン"}, {"like likes", "ライクライク"}, -{"chest", "宝箱"}, {"Taltal bomb hole", "タルタルのバクダンの穴"}, {"Taltal east bridge", "タルタル東の橋"}, {"Taltal west dig", "タルタル西の穴掘り"}, @@ -1578,11 +1948,9 @@ {"west roomba", "西のローラ"}, {"west vire", "西のバイア"}, {"Squish Trap", "ペシャンコトラップ"}, -{"2f horseheads", "2階の馬の頭"}, {"blue pegs chest", "青い杭の宝箱"}, {"east ledge", "東の段差"}, {"grim creeper", "ピッコロ使い"}, -{"3f horseheads", "3階の馬の頭"}, {"Shop slot5 3rd", "お店の棚5 3つ目"}, {"Shop slot5 4th", "お店の棚5 4つ目"}, {"Shop slot5 5th", "お店の棚5 5つ目"}, @@ -1591,7 +1959,6 @@ {"final", "最後"}, {"Shop slot6", "お店の棚6"}, {"Taltal east drop", "タルタル東の飛び降り"}, -{"River crossing cave", "川の渡り場のどうくつ"}, {"South bay sunken", "入り江南の水中"}, {"Kanalet moat north", "カナレットの堀の北"}, {"Rapids south island", "急流すべりの南の島"}, @@ -1599,7 +1966,6 @@ {"north orbs", "北のオーブ"}, {"east color puzzle", "東の色パズル"}, {"spark chest", "スパークの宝箱"}, -{"4 zols chest", "ゾル4体の宝箱"}, {"genie", "ツボ魔王"}, {"long room west", "長い部屋の西"}, {"entrance chest", "入口の宝箱"}, @@ -1607,7 +1973,6 @@ {"peg circle", "杭の円"}, {"basement north", "地下の北"}, {"east of puzzle", "パズルの東"}, -{"sunken item", "水中のアイテム"}, {"ledge north", "段差の北"}, {"statues chest", "像の宝箱"}, {"crystals", "クリスタル"}, @@ -1623,10 +1988,7 @@ {"gated hallway south", "柵の通路の南"}, {"southwest chest", "南西の宝箱"}, {"eagle", "アルバトス"}, -{"1f west", "1階の西"}, -{"3ofakind north", "ベガスの北"}, {"hinox", "ヒノックス"}, -{"3ofakind south", "ベガスの南"}, {"hothead", "デグフレム"}, {"gibdos", "ギブド"}, {"statue", "像"}, @@ -1719,18 +2081,14 @@ {"trendsanity", "今はやりサニティ"}, {"Slime Eel", "フッカー"}, {"Evil Orb", "ド・ポーン"}, -{"Genie", "ツボ魔王"}, -{"Facade", "マットフェイス"}, {"Evil Eagle", "アルバトス"}, {"Slime Eye", "デグゾル"}, {"Angler Fish", "アングラー"}, {"Hot Head", "デグフレム"}, -{"Moldorm", "デグテール"}, {"enemy bosses", "敵にボス"}, {"miniboss souls", "中ボスの魂"}, {"Blaino", "マイトパンチ"}, {"Grim Creeper", "ピッコロ使い"}, -{"Hinox", "ヒノックス"}, {"Smasher", "スマッシャー"}, {"Dodongo Snakes", "ドドンゴ"}, {"Avalaunch", "デグドン"}, @@ -1742,188 +2100,6 @@ {"ghost item", "オバケのアイテム"}, {"tunic upgrades", "服をアップグレード扱い"}, {"digs", "穴掘り"}, -{"Rupee", "ルピー"}, -// tracker.py -{"5 shells", "貝がら5個"}, -{"15 shells", "貝がら15個"}, -{"30 shells", "貝がら30個"}, -{"40 shells", "貝がら40個"}, -{"50 shells", "貝がら50個"}, -{"spot above the cave", "どうくつの上の地点"}, -{"spot above Key Cavern", "カギの穴ぐらの上の地点"}, -{"Ledge above Turtle Rock", "カメイワの上の崖"}, -{"Cave by Animal Village", "どうぶつ村そばのどうくつ"}, -{"Northwest of Animal Village", "どうぶつ村の北西"}, -{"Armos Knight", "デグアモス"}, -{"Fisherman under the bridge", "橋の下の釣り人"}, -{"Sunken item in the bay passage", "入り江の抜け道の水中のアイテム"}, -{"Tree on the beach", "浜辺の木"}, -{"bonk", "体当たり"}, -{"Chest on the beach", "浜辺の宝箱"}, -{"spot on the beach", "浜辺の地点"}, -{"Beside the Seashell Mansion", "貝がらの館の横"}, -{"Chef Bear", "クマのコック"}, -{"Christine", "クリスティーヌ"}, -{"thank-you gift", "お礼"}, -{"trade", "交換"}, -{"Ciao Ciao", "キャンキャン"}, -{"Dampe's bottle challenge", "ダンペイさんのビンのお題"}, -{"Dampe's final challenge", "ダンペイさんの最後のお題"}, -{"Dampe's heart challenge", "ダンペイさんのハートのお題"}, -{"Dampe", "ダンペイさん"}, -{"first page", "1ページ目"}, -{"second page", "2ページ目"}, -{"Cave in Yarna Desert", "ヤーナ砂漠のどうくつ"}, -{"spot in Yarna Desert", "ヤーナ砂漠の地点"}, -{"South of Yarna Desert", "ヤーナ砂漠の南"}, -{"BowWow's doghouse", "ワンワンのイヌ小屋"}, -{"dig", "穴掘り"}, -{"left", "左"}, -{"right", "右"}, -{"Fishing pond", "つりぼり"}, -{"100 points", "100点"}, -{"150 points", "150点"}, -{"50 points", "50点"}, -{"Cheep Cheep", "プクプク"}, -{"loose item", "落ちているアイテム"}, -{"Ol' Baron", "ヌシ"}, -{"orange fish", "オレンジの魚"}, -{"Ghost's grave", "オバケのお墓"}, -{"Pot in %s", "%sのツボ"}, -{"the Ghost's house", "オバケの家"}, -{"Ghost's reward", "オバケのお礼"}, -{"West of Goponga Swamp", "ゴポンガの沼の西"}, -{"Goriya", "ゴーリア"}, -{"Grandma Yahoo", "ヤッホーばあさん"}, -{"broom", "ほうき"}, -{"Cave under the Cemetery", "墓地の下のどうくつ"}, -{"Invisible Zora", "見えないゾーラ"}, -{"bombed guard", "爆破した兵士"}, -{"crow", "カラス"}, -{"last guard", "最後の兵士"}, -{"fight room", "戦闘部屋"}, -{"Mad Bomber", "ボム兵"}, -{"Kanalet moat", "カナレットの堀"}, -{"north", "北"}, -{"sunken", "水中"}, -{"south", "南"}, -{"Cave south of Kanalet Castle", "カナレットの城の南のどうくつ"}, -{"Kiki the monkey", "サルキッキ"}, -{"Seashell bush in Mabe Village", "メーベの村の貝がらの茂み"}, -{"Mad Batter", "小悪魔"}, -{"Mysterious Forest", "ふしぎの森"}, -{"song", "歌"}, -{"Martha the mermaid", "人魚のマーサ"}, -{"Mr. Write", "ライトさま"}, -{"North of the Moblin cave", "モリブリンのどうくつの北"}, -{"North of Tabahl Wasteland", "タバールの林の北"}, -{"Rock maze in Ukuku Prairie", "ウクク草原の岩の迷路"}, -{"Island in the pond", "池の島"}, -{"last hole", "最後の穴"}, -{"cave on the climb", "登り道のどうくつ"}, -{"east island", "東の島"}, -{"middle island", "真ん中の島"}, -{"race under 30 s", "タイムアタック30秒以内"}, -{"race under 35 s", "タイムアタック35秒以内"}, -{"race under 45 s", "タイムアタック45秒以内"}, -{"south island", "南の島"}, -{"west island", "西の島"}, -{"Cave by the river crossing", "川の渡り場そばのどうくつ"}, -{"shelf", "棚"}, -{"Small island off the coast", "海岸沖の小島"}, -{"South of Martha's Bay", "マーサの入り江の南"}, -{"southwest of Martha's Bay", "マーサの入り江の南西"}, -{"Chest in Goponga Swamp", "ゴポンガの沼の宝箱"}, -{"Syrup the witch", "魔法おばば"}, -{"Tree south of Tail Cave", "テールのほらあなの南の木"}, -{"five chest game", "5つの宝箱のゲーム"}, -{"bomb hole", "バクダンの穴"}, -{"crossing cave", "通り抜けどうくつ"}, -{"east bridge", "東の橋"}, -{"east drop", "東の飛び降り"}, -{"left chest", "左の宝箱"}, -{"blocks at the entrance", "入口のブロック"}, -{"chest at the entrance", "入口の宝箱"}, -{"hole", "穴"}, -{"chest on the ledge", "崖の上の宝箱"}, -{"cave on the left climb", "左の登り道のどうくつ"}, -{"cave by the rooster", "ニワトリそばのどうくつ"}, -{"way out", "脱出路"}, -{"under a rock", "岩の下"}, -{"Tarin at the beehive", "ハチの巣のタリン"}, -{"last prize", "最後の景品"}, -{"Tree in Ukuku Prairie", "ウクク草原の木"}, -{"Ukuku cave", "ウククのどうくつ"}, -{"east chest", "東の宝箱"}, -{"east item", "東のアイテム"}, -{"west item", "西のアイテム"}, -{"Under the skull rock", "ドクロ岩の下"}, -{"Cave by the villa", "別荘そばのどうくつ"}, -{"Washed up on the beach", "浜辺に打ち上げられたもの"}, -{"spot in Tabahl Wasteland", "タバールの林の地点"}, -{"Forest crossing cave", "森の通り抜けどうくつ"}, -{"item", "アイテム"}, -{"Forest north cave", "森の北のどうくつ"}, -{"south chest", "南の宝箱"}, -{"Bush", "草むら"}, -{"spot", "地点"}, -{"Pot", "ツボ"}, -{"Apple tree", "リンゴの木"}, -{"Rock", "岩"}, -{"Marin and Tarin's house", "マリンとタリンの家"}, -{"the quadruplets' house", "四つ子の家"}, -{"the Southern Face Shrine", "南の神殿"}, -{"the witch's hut", "魔法おばばの家"}, -{"the library", "図書館"}, -{"the Seashell Mansion", "貝がらの館"}, -{"a telephone booth", "電話ボックス"}, -{"the Town Tool Shop", "村の道具屋さん"}, -{"the Dream Shrine", "夢のほこら"}, -{"north-west", "北西"}, -{"north-east", "北東"}, -{"south-west", "南西"}, -{"south-east", "南東"}, -{"centre", "中央"}, -{"middle", "真ん中"}, -{"inside", "屋内"}, -{"Trendy Game: prize %s", "今はやりのゲーム: 景品%s"}, -{"Pot (%s)", "ツボ(%s)"}, -{"%s of 3", "%s/3"}, -{"Slime eye", "デグゾル"}, -{"Angler", "アングラー"}, -{"Slime eel", "フッカー"}, -{"Master stalfos", "マスタースタルフォン"}, -{"Eagle", "アルバトス"}, -{"Hothead", "デグフレム"}, -{"Owl statue long hallway", "フクロウの石像 長い通路"}, -{"Owl statue spinies", "フクロウの石像 トゲゾー"}, -{"Owl statue 3 of a kind", "フクロウの石像 ベガス"}, -{"Owl statue first switch", "フクロウの石像 最初のスイッチ"}, -{"Owl statue push puzzle", "フクロウの石像 押すパズル"}, -{"Owl statue past hinox", "フクロウの石像 ヒノックスの先"}, -{"Owl statue basement north", "フクロウの石像 地下の北"}, -{"Owl statue arrow", "フクロウの石像 矢"}, -{"Owl statue northwest", "フクロウの石像 北西"}, -{"Owl statue", "フクロウの石像"}, -{"Owl statue triple stalfos", "フクロウの石像 スタルフォス3体"}, -{"Owl statue before slime eel", "フクロウの石像 フッカーの手前"}, -{"Owl statue ledge", "フクロウの石像 段差"}, -{"Owl statue southeast", "フクロウの石像 南東"}, -{"Owl statue canal", "フクロウの石像 水路"}, -{"Owl statue ball", "フクロウの石像 鉄球"}, -{"Owl statue kirbys", "フクロウの石像 カービィ"}, -{"Owl statue hookshot chest", "フクロウの石像 フックショットの宝箱"}, -{"Owl statue above smasher", "フクロウの石像 スマッシャーの上"}, -{"Owl statue below gibdos", "フクロウの石像 ギブドの下"}, -{"Owl statue eye statue", "フクロウの石像 目の像"}, -{"Owl statue nine switches", "フクロウの石像 9つのスイッチ"}, -{"Owl statue first switches", "フクロウの石像 最初のスイッチ群"}, -{"Owl statue before mini boss", "フクロウの石像 中ボスの手前"}, -{"Owl statue below D8", "フクロウの石像 レベル8の下"}, -// separators (tools/menu_strings.py) -{", ", "、"}, -{": ", ":"}, -// not used any more {"Set the buttons and keys for the game. F1, Esc, Home or Back + Start always open this menu.", "ゲームのボタンとキーを設定します。F1、Esc、HOME、または「戻る」+「スタート」でいつでもこのメニューを開けます。"}, {"! This folder is synced by OneDrive", "! このフォルダはOneDriveで同期されています"}, {"About %.0f GB of game files will upload to your OneDrive.", "約%.0f GBのゲームファイルがOneDriveにアップロードされます。"}, diff --git a/runtime/ui/lang/ko.inc b/runtime/ui/lang/ko.inc index 2dd35ee26..6b57e3171 100644 --- a/runtime/ui/lang/ko.inc +++ b/runtime/ui/lang/ko.inc @@ -226,13 +226,9 @@ {"Appearance", "모양"}, {"Layout", "배치"}, {"Follow thumb", "엄지 따라가기"}, -{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "켜기: 왼쪽 아래 어디든 엄지를 대는 곳으로 옵니다. 끄기: 제자리에 있습니다(터치 배치 편집에서 옮길 수 있음)."}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it with the Layout button).", "켜기: 왼쪽 아래 어디든 엄지를 대는 곳으로 옵니다. 끄기: 제자리에 있습니다(배치 버튼으로 옮길 수 있음)."}, {"Layout button", "배치 버튼"}, {"A button at the top, next to the menu button, that lets you move and resize the on-screen buttons.", "화면 위쪽 메뉴 버튼 옆에 있는 버튼으로, 화면 버튼을 옮기거나 크기를 바꿀 수 있습니다."}, -{"Load a save first.", "먼저 세이브 데이터를 불러오세요."}, -{"Edit touch layout", "터치 배치 편집"}, -{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "게임 화면 위에서 화면 버튼을 옮기거나, 크기를 바꾸거나, 숨깁니다. 플레이 중에 쓸 수 있습니다."}, {"Reset touch layout", "터치 배치 초기화"}, {"Puts every on-screen button back in its place, at its size, shown.", "화면 버튼을 모두 원래 위치와 크기로 되돌리고 다시 표시합니다."}, // runtime/ui/difficulty.mm @@ -691,6 +687,7 @@ {"The game's echo in caves, dungeons and big rooms.", "동굴, 던전, 큰 방에서 울리는 소리입니다."}, {"LAS Recomp menu sounds", "LAS Recomp 메뉴 소리"}, {"Sounds when you move around and pick things in LAS Recomp's menus.", "LAS Recomp 메뉴에서 이동하고 고를 때 나는 소리입니다."}, +{"Load a save first.", "먼저 세이브 데이터를 불러오세요."}, {"Quit", "종료"}, {"Reset Game", "게임 리셋"}, {"Progress since your last save is lost.", "마지막으로 저장한 후의 진행 상황은 사라집니다."}, @@ -1090,6 +1087,8 @@ {"Reveal spoilers", "스포일러 보기"}, {"Search items and places", "아이템과 장소 검색"}, {"Search the spoiler log", "스포일러 로그 검색"}, +{"Useful items only", "유용한 아이템만"}, +{"Hide checked", "체크 끝난 곳 숨기기"}, // runtime/ui/tracker_overlay.mm {"Seashells", "소라껍데기"}, {"%d Small Keys", "작은 열쇠 %d개"}, @@ -1122,7 +1121,6 @@ {"needs %s +%d", "%s +%d 필요"}, {"Filter: %s", "필터: %s"}, {"In logic now", "지금 로직 내"}, -{"Hide checked", "체크 끝난 곳 숨기기"}, {"Filters", "필터"}, {"Room %c%d", "방 %c%d"}, {"trick logic", "테크닉 로직"}, @@ -1177,9 +1175,9 @@ {"This is where Manbo's Mambo drops you. You can't warp here directly.", "개복치의 맘보로 도착하는 곳입니다. 여기로 바로 워프할 수는 없습니다."}, {"%d places", "%d곳"}, {"Load a save to warp.", "워프하려면 세이브 데이터를 불러오세요."}, +{"Places", "장소"}, {"Search", "검색"}, {"Search places...", "장소 검색..."}, -{"Places", "장소"}, {"Link is here", "링크가 있는 곳"}, // warp_data.h {"Dungeons", "던전"}, @@ -1306,28 +1304,112 @@ {"Building game files (%s tasks)", "게임 파일 만드는 중 (작업 %s개)"}, {"Triforce hunt: %s", "트라이포스 찾기: %s"}, // spoiler_view.py -{"Settings: %s", "설정: %s"}, -{"Walkthrough", "공략"}, -{"Items by area", "지역별 아이템"}, -{"Starting items: %s", "시작 아이템: %s"}, +{"Route", "경로"}, +{"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "시드를 클리어하는 데 필요한 것만 보여 줍니다. 각 단계는 앞선 단계에서 얻은 아이템으로 갈 수 있습니다."}, +{"Finish", "마무리"}, +{"Everything useful step by step", "유용한 것 전부, 단계별로"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "각 단계는 이전 단계까지 얻은 것으로 진행할 수 있습니다 (단계 안에서는 순서 자유)."}, {"Only items that open things up are listed; rupees", "길을 여는 아이템만 표시합니다. 루피"}, {"traps and similar are left out.", "함정 등은 뺐습니다."}, -{"Finish", "마무리"}, -{"With all eight instruments", "악기 8개를 모두 모았으면"}, -{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "타르타르 고지의 알 앞에서 바람의 물고기의 노래를 연주합니다."}, -{"(No walkthrough", "(공략 없음"}, -{"this seed has no request.json to recompute it.)", "이 시드에는 다시 계산할 request.json이 없습니다.)"}, +{"Items by area", "지역별 아이템"}, +{"Dungeon rooms", "던전 방"}, +{"Where each moved room is now and where it came from.", "옮겨진 방이 지금 어디에 있고 원래 어디였는지 보여 줍니다."}, {"Entrances", "입구"}, -{"%s entrance leads into %s", "%s 입구 → %s"}, -{"%s:", "%s:"}, {"Doors", "문"}, -{"door -> interior it now leads into", "문 -> 지금 이어지는 내부"}, +{"each door and where it now leads", "각 문과 지금 이어지는 곳"}, +{"Settings: %s", "설정: %s"}, +{"(This seed has no step list.)", "(이 시드에는 단계 목록이 없습니다.)"}, +{"%s entrance leads into %s", "%s 입구 → %s"}, +{"Unchanged (%s)", "변경 없음 (%s)"}, {"Exits", "출구"}, -{"interior -> where leaving it puts you", "내부 -> 나오면 도착하는 곳"}, +{"each way out and where it puts you", "각 출구와 도착하는 곳"}, +{"Starting items: %s", "시작 아이템: %s"}, +{"%s:", "%s:"}, +{"Small items (%s)", "작은 아이템 (%s)"}, {"%s - enter through %s's entrance", "%s - %s의 입구로 들어감"}, {"%s's Soul", "%s의 소울"}, {"%s' Soul", "%s의 소울"}, +{"room %s", "방 %s"}, +{"The last of the %s Triforce pieces you need ends the game.", "필요한 트라이포스 조각 %s개 중 마지막 조각을 얻으면 게임이 끝납니다."}, +{"2nd", "두 번째"}, +{"shelf", "선반"}, +{"second item", "두 번째 아이템"}, +{"third item", "세 번째 아이템"}, +{"west side door", "서쪽 측면 문"}, +{"east side door", "동쪽 측면 문"}, +{"Fire cave", "불의 동굴"}, +{"north door", "북쪽 문"}, +{"south door", "남쪽 문"}, +{"Wind Fish's egg", "성스러운 알"}, +{"rooster house", "닭의 집"}, +{"Telephone booth by Turtle Rock", "거북바위 옆 전화 부스"}, +{"Mad Batter well", "작은 악마의 우물"}, +{"Tal Tal crossing cave", "타르타르 연결 동굴"}, +{"west door", "서쪽 문"}, +{"east door", "동쪽 문"}, +{"Mountain cave", "산 동굴"}, +{"bottom door", "맨 아래 문"}, +{"top door", "맨 위 문"}, +{"ledge door", "턱 위의 문"}, +{"Papahl's cave", "파파르의 동굴"}, +{"lower door", "아래쪽 문"}, +{"upper door", "위쪽 문"}, +{"Bird Key cave", "버드의 열쇠 동굴"}, +{"Five chest cave", "보물상자 5개 동굴"}, +{"Five chest game", "보물상자 5개 게임"}, +{"exit door", "출구 문"}, +{"Rainbow cave", "무지개 동굴"}, +{"outer west door", "바깥쪽 서쪽 문"}, +{"inner west door", "안쪽 서쪽 문"}, +{"inner east door", "안쪽 동쪽 문"}, +{"outer east door", "바깥쪽 동쪽 문"}, +{"Fairy fountain", "대요정의 샘"}, +{"Tal Tal east", "타르타르 동쪽"}, +{"Cave to Eagle's Tower", "참수리의 탑으로 가는 동굴"}, +{"Cave by Angler's Tunnel", "앵글러의 용소 옆 동굴"}, +{"Damp cave", "눅눅한 동굴"}, +{"Raft cave", "뗏목 동굴"}, +{"Telephone booth", "전화 부스"}, +{"Moblin cave", "모리블린 동굴"}, +{"Dampe's house", "단페이의 오두막"}, +{"Rapids Ride raft shop", "급류 타기 뗏목 가게"}, +{"Mysterious Forest", "신비한 숲"}, +{"north cave", "북쪽 동굴"}, +{"Kanalet tunnel", "카나렛 터널"}, +{"Telephone booth by Kanalet Castle", "카나렛 성 옆 전화 부스"}, +{"roof west door", "지붕 서쪽 문"}, +{"roof east door", "지붕 동쪽 문"}, +{"front door", "정문"}, +{"Cave south of Kanalet Castle", "카나렛 성 남쪽 동굴"}, +{"Forest crossing cave", "숲 연결 동굴"}, +{"forest", "숲"}, +{"north side door", "북쪽 측면 문"}, +{"Ukuku cave", "우쿠쿠 동굴"}, +{"Ukuku Prairie north", "우쿠쿠 초원 북쪽"}, +{"Ukuku Prairie west", "우쿠쿠 초원 서쪽"}, +{"Cave to Face Shrine", "얼굴의 신전으로 가는 동굴"}, +{"Fairy fountain by the Armos maze", "아모스 미로 옆 대요정의 샘"}, +{"Flying Rooster's grave", "하늘을 나는 닭의 무덤"}, +{"River crossing cave", "강 건너는 동굴"}, +{"Armos maze cave", "아모스 미로 동굴"}, +{"BowWow's kennel", "멍멍이의 개집"}, +{"Marin and Tarin's house", "마린과 타린의 집"}, +{"Mabe Village library", "메베의 마을 도서관"}, +{"Cliff cave by the bay", "만 옆 절벽 동굴"}, +{"plateau door", "고원 문"}, +{"Cave behind Richard's villa", "리차드의 별장 뒤 동굴"}, +{"rabbit house", "토끼의 집"}, +{"Zora's house", "조라의 집"}, +{"bombed cave", "폭탄으로 연 동굴"}, +{"Lanmola cave", "라네몰라 동굴"}, +{"east dive spot", "동쪽 다이빙 지점"}, +{"west dive spot", "서쪽 다이빙 지점"}, +{"Sale's banana house", "세일의 집"}, +{"bay", "만"}, +{"Tunnel to the bay Mad Batter", "만의 작은 악마로 가는 터널"}, +{"Mermaid statue", "인어상"}, +{"Boomerang cave", "부메랑 동굴"}, +{"Ghost's house", "유령의 집"}, {"Signpost Maze", "간판 미로"}, {"Ancient Ruins", "남쪽 신전"}, {"west", "서쪽"}, @@ -1338,98 +1420,180 @@ {"50 Rupees", "50루피"}, {"100 Rupees", "100루피"}, {"300 Rupees", "300루피"}, +{"1 Rupee", "1루피"}, {"Trap!", "함정!"}, {"Frog Song of Soul", "개구리의 소울"}, {"Chamber Stone", "패널석"}, +{"Triforce piece", "트라이포스 조각"}, {"Beach chest", "해변 보물상자"}, +{"Chest on the beach", "해변의 보물상자"}, {"Taltal entrance chest", "타르타르 입구 보물상자"}, +{"chest at the entrance", "입구 보물상자"}, {"Taltal east left chest", "타르타르 동쪽 왼쪽 보물상자"}, +{"left chest", "왼쪽 보물상자"}, {"Dream shrine right", "꿈의 사당 오른쪽"}, +{"right", "오른쪽"}, {"Armos cave", "아모스 동굴"}, {"Goponga cave left", "고퐁가 동굴 왼쪽"}, +{"left", "왼쪽"}, {"Goponga cave right", "고퐁가 동굴 오른쪽"}, {"Ukuku cave west chest", "우쿠쿠 동굴 서쪽 보물상자"}, +{"west chest", "서쪽 보물상자"}, {"Ukuku cave east chest", "우쿠쿠 동굴 동쪽 보물상자"}, +{"east chest", "동쪽 보물상자"}, {"Kanalet south cave", "카나렛 남쪽 동굴"}, {"Swamp chest", "늪 보물상자"}, +{"Chest in Goponga Swamp", "고퐁가 늪 보물상자"}, {"Taltal left ascent cave", "타르타르 왼쪽 오르막 동굴"}, +{"cave on the left climb", "왼쪽 오르막 동굴"}, {"Taltal ledge chest", "타르타르 절벽 보물상자"}, +{"chest on the ledge", "턱 위 보물상자"}, {"Taltal 5 chest puzzle", "타르타르 보물상자 5개 퍼즐"}, +{"five chest game", "보물상자 5개 게임"}, {"Taltal west chest", "타르타르 서쪽 보물상자"}, {"Villa cave", "별장 동굴"}, +{"Cave by the villa", "별장 옆 동굴"}, {"Woods crossing cave chest", "숲 연결 동굴 보물상자"}, +{"chest", "보물상자"}, {"Woods north cave chest", "숲 북쪽 동굴 보물상자"}, +{"Forest north cave", "숲 북쪽 동굴"}, {"Woods south chest", "숲 남쪽 보물상자"}, +{"south chest", "남쪽 보물상자"}, {"Woods north chest", "숲 북쪽 보물상자"}, +{"north chest", "북쪽 보물상자"}, {"Fishing", "낚시"}, +{"Fishing pond", "낚시터"}, +{"50 points", "50점"}, {"Fishing orange", "낚시 주황 물고기"}, +{"orange fish", "주황 물고기"}, {"Fishing loose", "낚시터 바닥 아이템"}, +{"loose item", "바닥 아이템"}, +{"100 points", "100점"}, +{"150 points", "150점"}, {"Fishing cheep cheep", "낚시 뽀꾸뽀꾸"}, +{"Cheep Cheep", "뽀꾸뽀꾸"}, {"Fishing ol baron", "낚시 주인"}, +{"Ol' Baron", "주인"}, {"Rapids race", "급류 타기 레이스"}, +{"race under 45 s", "레이스 45초 이내"}, +{"race under 35 s", "레이스 35초 이내"}, +{"race under 30 s", "레이스 30초 이내"}, {"Rapids middle island", "급류 가운데 섬"}, +{"middle island", "가운데 섬"}, {"Rapids west island", "급류 서쪽 섬"}, +{"west island", "서쪽 섬"}, {"Dampe page", "단페이 첫 보상"}, +{"Dampe", "단페이"}, +{"first page", "첫 페이지"}, {"Dampe heart challenge", "단페이 하트 과제"}, +{"Dampe's heart challenge", "단페이의 하트 과제"}, +{"second page", "두 번째 페이지"}, {"Dampe bottle challenge", "단페이 병 과제"}, +{"Dampe's bottle challenge", "단페이의 병 과제"}, {"Dampe final", "단페이 마지막 보상"}, +{"Dampe's final challenge", "단페이의 마지막 과제"}, {"Walrus", "바다코끼리"}, {"Ghost reward", "유령 보상"}, +{"Ghost's reward", "유령의 보상"}, +{"song", "노래"}, {"Manbo", "만복이"}, {"Mamu", "마무"}, {"Mad batter bay", "작은 악마 (만)"}, +{"Mad Batter", "작은 악마"}, {"Mad batter taltal", "작은 악마 (타르타르)"}, {"Mad batter woods", "작은 악마 (숲)"}, {"Invisible zora", "숨은 조라"}, +{"Invisible Zora", "숨은 조라"}, {"Goriya trader", "고리아 교환"}, +{"Goriya", "고리아"}, +{"trade", "교환"}, {"Mamasha", "마마샤"}, {"Ciao ciao", "왈왈이"}, +{"Ciao Ciao", "왈왈이"}, {"Sale", "세일"}, {"Kiki", "몽키키"}, +{"Kiki the monkey", "몽키키"}, {"Tarin ukuku", "타린 (우쿠쿠)"}, +{"Tarin at the beehive", "벌집 앞의 타린"}, {"Chef bear", "요리사 곰"}, +{"Chef Bear", "요리사 곰"}, {"Papahl", "파파르"}, {"Christine trade", "크리스틴 교환"}, +{"Christine", "크리스틴"}, {"Christine grateful", "크리스틴 답례"}, +{"thank-you gift", "답례 선물"}, {"Mr write", "라이트"}, +{"Mr. Write", "라이트"}, {"Grandma yahoo", "야호 할머니"}, +{"Grandma Yahoo", "야호 할머니"}, +{"broom", "빗자루"}, {"Bay fisherman", "만의 낚시꾼"}, +{"Fisherman under the bridge", "다리 밑 낚시꾼"}, {"Mermaid martha", "마사의 인어"}, +{"Martha the mermaid", "인어 마사"}, {"Mermaid cave", "인어 동굴"}, {"Lanmola", "라네몰라"}, {"Armos knight", "거대아모스"}, +{"Armos Knight", "거대아모스"}, {"Washed up", "해변에 떠밀려 온 검"}, +{"Washed up on the beach", "해변에 떠밀려 온 것"}, {"Dream shrine left", "꿈의 사당 왼쪽"}, {"Taltal rooster cave", "타르타르 닭 동굴"}, +{"cave by the rooster", "닭 옆 동굴"}, {"Woods loose", "숲 바닥 아이템"}, {"Pothole final", "구멍 밭 마지막"}, +{"last hole", "마지막 구멍"}, {"5 seashell reward", "소라껍데기 5개 보상"}, +{"5 shells", "소라껍데기 5개"}, {"15 seashell reward", "소라껍데기 15개 보상"}, +{"15 shells", "소라껍데기 15개"}, {"30 seashell reward", "소라껍데기 30개 보상"}, +{"30 shells", "소라껍데기 30개"}, {"40 seashell reward", "소라껍데기 40개 보상"}, +{"40 shells", "소라껍데기 40개"}, {"50 seashell reward", "소라껍데기 50개 보상"}, +{"50 shells", "소라껍데기 50개"}, {"Animal village northwest", "동물 마을 북서쪽"}, +{"Northwest of Animal Village", "동물 마을 북서쪽"}, {"Animal village cave", "동물 마을 동굴"}, +{"Cave by Animal Village", "동물 마을 옆 동굴"}, {"Taltal entrance blocks", "타르타르 입구 블록"}, +{"blocks at the entrance", "입구 블록"}, {"North wasteland", "황야 북쪽"}, +{"North of Tabahl Wasteland", "타발 숲 북쪽"}, {"Desert cave", "사막 동굴"}, +{"Cave in Yarna Desert", "야나 사막 동굴"}, {"Graveyard cave", "묘지 동굴"}, +{"Cave under the Cemetery", "묘지 밑 동굴"}, {"Mabe well", "메베 우물"}, {"Ukuku cave west loose", "우쿠쿠 동굴 서쪽 바닥 아이템"}, +{"west item", "서쪽 아이템"}, {"Ukuku cave east loose", "우쿠쿠 동굴 동쪽 바닥 아이템"}, +{"east item", "동쪽 아이템"}, {"Rapids ascent cave", "급류 오르막 동굴"}, +{"cave on the climb", "오르막 동굴"}, {"Taltal crossing cave", "타르타르 연결 동굴"}, +{"crossing cave", "연결 동굴"}, {"Taltal west escape", "타르타르 서쪽 탈출로"}, +{"way out", "탈출로"}, {"Above turtle rock", "거북바위 위"}, +{"Ledge above Turtle Rock", "거북바위 위 턱"}, {"Pothole north", "구멍 밭 북쪽"}, +{"north", "북쪽"}, {"Woods crossing cave loose", "숲 연결 동굴 바닥 아이템"}, +{"item", "아이템"}, {"Woods north cave loose", "숲 북쪽 동굴 바닥 아이템"}, {"Diamond island", "다이아몬드 섬"}, {"Kanalet crow", "카나렛 까마귀"}, +{"crow", "까마귀"}, {"Kanalet mad bomber", "카나렛 폭탄 병사"}, +{"Mad Bomber", "폭탄 병사"}, {"Kanalet kill room", "카나렛 적 처치 방"}, +{"fight room", "전투 방"}, {"Kanalet bombed guard", "카나렛 폭탄 맞은 병사"}, +{"bombed guard", "폭탄 맞은 병사"}, {"Kanalet final guard", "카나렛 마지막 병사"}, +{"last guard", "마지막 병사"}, {"Owl statue moblin cave", "부엉이 석상 (모리블린 동굴)"}, {"Owl statue pothole", "부엉이 석상 (구멍 밭)"}, {"Owl statue above cave", "부엉이 석상 (동굴 위)"}, @@ -1438,8 +1602,222 @@ {"Owl statue maze", "부엉이 석상 (미로)"}, {"Owl statue rapids", "부엉이 석상 (급류)"}, {"Owl statue taltal east", "부엉이 석상 (타르타르 동쪽)"}, +{"Instrument", "악기"}, +{"Moldorm", "거대꼬리리"}, +{"West hallway", "서쪽 복도"}, +{"Middle ledge", "가운데 턱"}, +{"3 of a kind", "베가스"}, +{"Bomb room", "폭탄 방"}, +{"Middle kill chest", "가운데 적 처치 보물상자"}, +{"Spark chest", "스파크 보물상자"}, +{"Button chest", "스위치 보물상자"}, +{"Stalfos chest", "스탈포스 보물상자"}, +{"4 zols chest", "졸 4마리 보물상자"}, +{"Beetles", "꾸물"}, +{"Owl statue long hallway", "부엉이 석상 (긴 복도)"}, +{"Owl statue spinies", "부엉이 석상 (가시돌이)"}, +{"Owl statue 3 of a kind", "부엉이 석상 (베가스)"}, +{"Genie", "항아리 마왕"}, +{"Boos", "부끄부끄"}, +{"Long room west", "긴 방 서쪽"}, +{"Long room east", "긴 방 동쪽"}, +{"Vacuum mouth room", "흡입구 방"}, +{"Kill puzzle", "적 처치 퍼즐"}, +{"West chest", "서쪽 보물상자"}, +{"Double stalfos", "스탈포스 2마리"}, +{"Double shy guys", "헤이호 2마리"}, +{"Entrance chest", "입구 보물상자"}, +{"Single shy guy", "헤이호 1마리"}, +{"Peg circle", "말뚝 원"}, +{"Owl statue first switch", "부엉이 석상 (첫 스위치)"}, +{"Owl statue push puzzle", "부엉이 석상 (밀기 퍼즐)"}, +{"Owl statue past hinox", "부엉이 석상 (히녹스 다음)"}, +{"Slime eye", "거대졸"}, +{"Pre boss", "보스 직전"}, +{"Triple bombites", "보머 3마리"}, +{"North chest", "북쪽 보물상자"}, +{"Central ledge", "가운데 턱"}, +{"Central chest", "가운데 보물상자"}, +{"East ledge", "동쪽 턱"}, +{"Pairodds", "반짹"}, +{"Five zols", "졸 5마리"}, +{"Basement north", "지하 북쪽"}, +{"Basement west", "지하 서쪽"}, +{"Basement south", "지하 남쪽"}, +{"Hallway", "복도"}, +{"Hallway side room", "복도 옆방"}, +{"Vacuum mouth", "흡입구"}, +{"Owl statue basement north", "부엉이 석상 (지하 북쪽)"}, +{"Owl statue arrow", "부엉이 석상 (화살)"}, +{"Owl statue northwest", "부엉이 석상 (북서쪽)"}, +{"Angler", "앵글러"}, +{"East side north", "동쪽 북부"}, +{"East side south", "동쪽 남부"}, +{"West ledge", "서쪽 턱"}, +{"East of puzzle", "퍼즐 동쪽"}, +{"South of puzzle", "퍼즐 남쪽"}, +{"Sunken item", "물속 아이템"}, +{"Central room", "가운데 방"}, +{"Small island", "작은 섬"}, +{"Ledge north", "턱 북쪽"}, +{"Statues chest", "석상 보물상자"}, +{"Lobby", "로비"}, +{"Crystals", "크리스털"}, +{"Owl statue", "부엉이 석상"}, +{"Slime eel", "후커"}, +{"Master stalfos", "마스터 스탈폰"}, +{"Crystal blocks", "크리스털 블록"}, +{"Past master stalfos", "마스터 스탈폰 다음"}, +{"Water tunnel", "물속 터널"}, +{"Right side north", "오른쪽 북부"}, +{"Right side middle", "오른쪽 중앙"}, +{"Right side east", "오른쪽 동부"}, +{"Helmasaurs", "히프루프"}, +{"West stairs chest", "서쪽 계단 보물상자"}, +{"Near entrance", "입구 근처"}, +{"Owl statue triple stalfos", "부엉이 석상 (스탈포스 3마리)"}, +{"Owl statue before slime eel", "부엉이 석상 (후커 앞)"}, +{"Facade", "매트페이스"}, +{"Far northwest", "가장 북서쪽"}, +{"Far northeast", "가장 북동쪽"}, +{"Statue line north", "석상 줄 북쪽"}, +{"Statue line south", "석상 줄 남쪽"}, +{"Wizzrobe pegs", "위즈로브 말뚝"}, +{"Canal", "수로"}, +{"3 wizzrobes", "위즈로브 3마리"}, +{"Tile room", "타일 방"}, +{"Gated hallway north", "문 달린 복도 북쪽"}, +{"Gated hallway south", "문 달린 복도 남쪽"}, +{"Southwest chest", "남서쪽 보물상자"}, +{"Wizzrobes ledge", "위즈로브 턱"}, +{"Owl statue ledge", "부엉이 석상 (턱)"}, +{"Owl statue southeast", "부엉이 석상 (남동쪽)"}, +{"Owl statue canal", "부엉이 석상 (수로)"}, +{"Eagle", "알바트로스"}, +{"Like likes", "조아조아"}, +{"1f west", "1층 서쪽"}, +{"3ofakind north", "베가스 북쪽"}, +{"2f horseheads", "2층 말머리"}, +{"Hinox", "히녹스"}, +{"3ofakind south", "베가스 남쪽"}, +{"Blue pegs chest", "파란 말뚝 보물상자"}, +{"3f horseheads", "3층 말머리"}, +{"Grim creeper", "피코로술사"}, +{"Owl statue ball", "부엉이 석상 (철구)"}, +{"Owl statue kirbys", "부엉이 석상 (커비)"}, +{"Owl statue hookshot chest", "부엉이 석상 (후크샷 보물상자)"}, +{"Hothead", "거대플레임"}, +{"Left exit chest", "왼쪽 출구 보물상자"}, +{"Dodongos", "도동고"}, +{"Northern ledge", "북쪽 턱"}, +{"Gibdos", "기브도"}, +{"Beamos chest", "비모스 보물상자"}, +{"Statue", "석상"}, +{"Torches", "촛대"}, +{"West vire", "서쪽 바이어"}, +{"West roomba", "서쪽 롤러"}, +{"Surrounded by blocks", "블록으로 둘러싸인 곳"}, +{"Sparks chest", "스파크 보물상자"}, +{"East of pots", "항아리 동쪽"}, +{"East roomba", "동쪽 롤러"}, +{"Far southwest", "가장 남서쪽"}, +{"Far southeast", "가장 남동쪽"}, +{"Owl statue above smasher", "부엉이 석상 (스매셔 위)"}, +{"Owl statue below gibdos", "부엉이 석상 (기브도 아래)"}, +{"Owl statue eye statue", "부엉이 석상 (눈 석상)"}, +{"Northern chest", "북쪽 보물상자"}, +{"Zol pots", "졸 항아리"}, +{"North orbs", "북쪽 구슬"}, +{"South orbs", "남쪽 구슬"}, +{"East color puzzle", "동쪽 색 퍼즐"}, +{"West color puzzle", "서쪽 색 퍼즐"}, +{"Putters", "졸 무리"}, +{"Owl statue nine switches", "부엉이 석상 (스위치 9개)"}, +{"Owl statue first switches", "부엉이 석상 (첫 스위치들)"}, +{"Owl statue before mini boss", "부엉이 석상 (중간 보스 앞)"}, +{"Rupee", "루피"}, {"stone beak", "석상의 부리"}, -// spoiler logs +// tracker.py +{"spot above the cave", "동굴 위 지점"}, +{"spot above Key Cavern", "열쇠의 동굴 위 지점"}, +{"Sunken item in the bay passage", "만 통로 물속 아이템"}, +{"Tree on the beach", "해변의 나무"}, +{"bonk", "박치기"}, +{"spot on the beach", "해변 지점"}, +{"Beside the Seashell Mansion", "소라껍데기의 저택 옆"}, +{"spot in Yarna Desert", "야나 사막 지점"}, +{"South of Yarna Desert", "야나 사막 남쪽"}, +{"BowWow's doghouse", "멍멍이의 개집"}, +{"dig", "땅파기"}, +{"Ghost's grave", "유령의 무덤"}, +{"Pot in %s", "%s 항아리"}, +{"the Ghost's house", "유령의 집"}, +{"West of Goponga Swamp", "고퐁가 늪 서쪽"}, +{"Kanalet moat", "카나렛 해자"}, +{"sunken", "물속"}, +{"south", "남쪽"}, +{"Seashell bush in Mabe Village", "메베의 마을 소라껍데기 풀숲"}, +{"North of the Moblin cave", "모리블린 동굴 북쪽"}, +{"Rock maze in Ukuku Prairie", "우쿠쿠 초원 바위 미로"}, +{"Island in the pond", "연못의 섬"}, +{"east island", "동쪽 섬"}, +{"south island", "남쪽 섬"}, +{"Cave by the river crossing", "강 건너는 곳 옆 동굴"}, +{"Rock maze", "바위 미로"}, +{"Small island off the coast", "앞바다의 작은 섬"}, +{"South of Martha's Bay", "마사의 만 남쪽"}, +{"southwest of Martha's Bay", "마사의 만 남서쪽"}, +{"Syrup the witch", "마법 할머니"}, +{"Tree south of Tail Cave", "꼬리리의 동굴 남쪽 나무"}, +{"bomb hole", "폭탄 구멍"}, +{"east bridge", "동쪽 다리"}, +{"east drop", "동쪽 낙하"}, +{"hole", "구멍"}, +{"sunken item", "물속 아이템"}, +{"under a rock", "바위 밑"}, +{"Tarin", "타린"}, +{"last prize", "마지막 상품"}, +{"Tree in Ukuku Prairie", "우쿠쿠 초원의 나무"}, +{"Under the skull rock", "해골 바위 밑"}, +{"spot in Tabahl Wasteland", "타발 숲 지점"}, +{"Bush", "풀숲"}, +{"spot", "지점"}, +{"Pot", "항아리"}, +{"Apple tree", "사과나무"}, +{"Rock", "바위"}, +{"the quadruplets' house", "네쌍둥이의 집"}, +{"the Southern Face Shrine", "남쪽 신전"}, +{"the witch's hut", "마법 할머니의 집"}, +{"the library", "도서관"}, +{"the Seashell Mansion", "소라껍데기의 저택"}, +{"a telephone booth", "전화 부스"}, +{"the Town Tool Shop", "마을 도구점"}, +{"the Dream Shrine", "꿈의 사당"}, +{"north-west", "북서쪽"}, +{"north-east", "북동쪽"}, +{"south-west", "남서쪽"}, +{"south-east", "남동쪽"}, +{"centre", "중앙"}, +{"middle", "가운데"}, +{"inside", "안쪽"}, +{"Trendy Game: prize %s", "최신 유행 게임: 상품 %s"}, +{"Pot (%s)", "항아리 (%s)"}, +{"%s of 3", "3개 중 %s번째"}, +{"Owl statue below D8", "부엉이 석상 (D8 아래)"}, +// separators (tools/menu_strings.py) +{", ", ", "}, +{": ", ": "}, +// not used any more +{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "켜기: 왼쪽 아래 어디든 엄지를 대는 곳으로 옵니다. 끄기: 제자리에 있습니다(터치 배치 편집에서 옮길 수 있음)."}, +{"Edit touch layout", "터치 배치 편집"}, +{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "게임 화면 위에서 화면 버튼을 옮기거나, 크기를 바꾸거나, 숨깁니다. 플레이 중에 쓸 수 있습니다."}, +{"Walkthrough", "공략"}, +{"With all eight instruments", "악기 8개를 모두 모았으면"}, +{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "타르타르 고지의 알 앞에서 바람의 물고기의 노래를 연주합니다."}, +{"(No walkthrough", "(공략 없음"}, +{"this seed has no request.json to recompute it.)", "이 시드에는 다시 계산할 request.json이 없습니다.)"}, +{"door -> interior it now leads into", "문 -> 지금 이어지는 내부"}, +{"interior -> where leaving it puts you", "내부 -> 나오면 도착하는 곳"}, {"boss cutscenes", "보스 등장 장면"}, {"enemy minibosses", "중간 보스 적"}, {"escape bottle", "탈출용 병"}, @@ -1463,8 +1841,6 @@ {"Mabe bushes", "메베 풀숲"}, {"Shop slot3 1st", "가게 3번 칸 첫 번째"}, {"Shop slot3 2nd", "가게 3번 칸 두 번째"}, -{"Tarin", "타린"}, -{"Rock maze", "바위 미로"}, {"double stalfos", "스탈포스 2마리"}, {"putters", "졸 무리"}, {"south orbs", "남쪽 구슬"}, @@ -1533,12 +1909,9 @@ {"past master stalfos", "마스터 스탈폰 다음"}, {"right side east", "오른쪽 동부"}, {"water tunnel", "물속 터널"}, -{"west chest", "서쪽 보물상자"}, -{"3 wizzrobes", "위즈로브 3마리"}, {"statue line north", "석상 줄 북쪽"}, {"wizzrobe pegs", "위즈로브 말뚝"}, {"central room", "가운데 방"}, -{"north chest", "북쪽 보물상자"}, {"Stalfos Note", "스탈포스의 쪽지"}, {"south of puzzle", "퍼즐 남쪽"}, {"west ledge", "서쪽 턱"}, @@ -1548,7 +1921,6 @@ {"middle kill chest", "가운데 적 처치 보물상자"}, {"stalfos chest", "스탈포스 보물상자"}, {"angler", "앵글러"}, -{"3 of a kind", "베가스"}, {"middle ledge", "가운데 턱"}, {"moldorm", "거대꼬리리"}, {"west hallway", "서쪽 복도"}, @@ -1557,10 +1929,8 @@ {"tile room", "타일 방"}, {"wizzrobes ledge", "위즈로브 턱"}, {"Rooster statue", "닭 석상"}, -{"Moblin cave", "모리블린 동굴"}, {"Bow Wow", "멍멍이"}, {"like likes", "조아조아"}, -{"chest", "보물상자"}, {"Taltal bomb hole", "타르타르 폭탄 구멍"}, {"Taltal east bridge", "타르타르 동쪽 다리"}, {"Taltal west dig", "타르타르 서쪽 땅파기"}, @@ -1578,11 +1948,9 @@ {"west roomba", "서쪽 롤러"}, {"west vire", "서쪽 바이어"}, {"Squish Trap", "압사 함정"}, -{"2f horseheads", "2층 말머리"}, {"blue pegs chest", "파란 말뚝 보물상자"}, {"east ledge", "동쪽 턱"}, {"grim creeper", "피코로술사"}, -{"3f horseheads", "3층 말머리"}, {"Shop slot5 3rd", "가게 5번 칸 세 번째"}, {"Shop slot5 4th", "가게 5번 칸 네 번째"}, {"Shop slot5 5th", "가게 5번 칸 다섯 번째"}, @@ -1591,7 +1959,6 @@ {"final", "마지막"}, {"Shop slot6", "가게 6번 칸"}, {"Taltal east drop", "타르타르 동쪽 낙하"}, -{"River crossing cave", "강 건너는 동굴"}, {"South bay sunken", "만 남쪽 물속"}, {"Kanalet moat north", "카나렛 해자 북쪽"}, {"Rapids south island", "급류 남쪽 섬"}, @@ -1599,7 +1966,6 @@ {"north orbs", "북쪽 구슬"}, {"east color puzzle", "동쪽 색 퍼즐"}, {"spark chest", "스파크 보물상자"}, -{"4 zols chest", "졸 4마리 보물상자"}, {"genie", "항아리 마왕"}, {"long room west", "긴 방 서쪽"}, {"entrance chest", "입구 보물상자"}, @@ -1607,7 +1973,6 @@ {"peg circle", "말뚝 원"}, {"basement north", "지하 북쪽"}, {"east of puzzle", "퍼즐 동쪽"}, -{"sunken item", "물속 아이템"}, {"ledge north", "턱 북쪽"}, {"statues chest", "석상 보물상자"}, {"crystals", "크리스털"}, @@ -1623,10 +1988,7 @@ {"gated hallway south", "문 달린 복도 남쪽"}, {"southwest chest", "남서쪽 보물상자"}, {"eagle", "알바트로스"}, -{"1f west", "1층 서쪽"}, -{"3ofakind north", "베가스 북쪽"}, {"hinox", "히녹스"}, -{"3ofakind south", "베가스 남쪽"}, {"hothead", "거대플레임"}, {"gibdos", "기브도"}, {"statue", "석상"}, @@ -1719,18 +2081,14 @@ {"trendsanity", "최신 유행 게임 체크"}, {"Slime Eel", "후커"}, {"Evil Orb", "이블 오브"}, -{"Genie", "항아리 마왕"}, -{"Facade", "매트페이스"}, {"Evil Eagle", "알바트로스"}, {"Slime Eye", "거대졸"}, {"Angler Fish", "앵글러"}, {"Hot Head", "거대플레임"}, -{"Moldorm", "거대꼬리리"}, {"enemy bosses", "보스 적"}, {"miniboss souls", "중간 보스 소울"}, {"Blaino", "마이트 펀치"}, {"Grim Creeper", "피코로술사"}, -{"Hinox", "히녹스"}, {"Smasher", "스매셔"}, {"Dodongo Snakes", "도동고"}, {"Avalaunch", "거대동"}, @@ -1742,188 +2100,6 @@ {"ghost item", "유령 아이템"}, {"tunic upgrades", "옷 효과 중첩"}, {"digs", "땅파기"}, -{"Rupee", "루피"}, -// tracker.py -{"5 shells", "소라껍데기 5개"}, -{"15 shells", "소라껍데기 15개"}, -{"30 shells", "소라껍데기 30개"}, -{"40 shells", "소라껍데기 40개"}, -{"50 shells", "소라껍데기 50개"}, -{"spot above the cave", "동굴 위 지점"}, -{"spot above Key Cavern", "열쇠의 동굴 위 지점"}, -{"Ledge above Turtle Rock", "거북바위 위 턱"}, -{"Cave by Animal Village", "동물 마을 옆 동굴"}, -{"Northwest of Animal Village", "동물 마을 북서쪽"}, -{"Armos Knight", "거대아모스"}, -{"Fisherman under the bridge", "다리 밑 낚시꾼"}, -{"Sunken item in the bay passage", "만 통로 물속 아이템"}, -{"Tree on the beach", "해변의 나무"}, -{"bonk", "박치기"}, -{"Chest on the beach", "해변의 보물상자"}, -{"spot on the beach", "해변 지점"}, -{"Beside the Seashell Mansion", "소라껍데기의 저택 옆"}, -{"Chef Bear", "요리사 곰"}, -{"Christine", "크리스틴"}, -{"thank-you gift", "답례 선물"}, -{"trade", "교환"}, -{"Ciao Ciao", "왈왈이"}, -{"Dampe's bottle challenge", "단페이의 병 과제"}, -{"Dampe's final challenge", "단페이의 마지막 과제"}, -{"Dampe's heart challenge", "단페이의 하트 과제"}, -{"Dampe", "단페이"}, -{"first page", "첫 페이지"}, -{"second page", "두 번째 페이지"}, -{"Cave in Yarna Desert", "야나 사막 동굴"}, -{"spot in Yarna Desert", "야나 사막 지점"}, -{"South of Yarna Desert", "야나 사막 남쪽"}, -{"BowWow's doghouse", "멍멍이의 개집"}, -{"dig", "땅파기"}, -{"left", "왼쪽"}, -{"right", "오른쪽"}, -{"Fishing pond", "낚시터"}, -{"100 points", "100점"}, -{"150 points", "150점"}, -{"50 points", "50점"}, -{"Cheep Cheep", "뽀꾸뽀꾸"}, -{"loose item", "바닥 아이템"}, -{"Ol' Baron", "주인"}, -{"orange fish", "주황 물고기"}, -{"Ghost's grave", "유령의 무덤"}, -{"Pot in %s", "%s 항아리"}, -{"the Ghost's house", "유령의 집"}, -{"Ghost's reward", "유령의 보상"}, -{"West of Goponga Swamp", "고퐁가 늪 서쪽"}, -{"Goriya", "고리아"}, -{"Grandma Yahoo", "야호 할머니"}, -{"broom", "빗자루"}, -{"Cave under the Cemetery", "묘지 밑 동굴"}, -{"Invisible Zora", "숨은 조라"}, -{"bombed guard", "폭탄 맞은 병사"}, -{"crow", "까마귀"}, -{"last guard", "마지막 병사"}, -{"fight room", "전투 방"}, -{"Mad Bomber", "폭탄 병사"}, -{"Kanalet moat", "카나렛 해자"}, -{"north", "북쪽"}, -{"sunken", "물속"}, -{"south", "남쪽"}, -{"Cave south of Kanalet Castle", "카나렛 성 남쪽 동굴"}, -{"Kiki the monkey", "몽키키"}, -{"Seashell bush in Mabe Village", "메베의 마을 소라껍데기 풀숲"}, -{"Mad Batter", "작은 악마"}, -{"Mysterious Forest", "신비한 숲"}, -{"song", "노래"}, -{"Martha the mermaid", "인어 마사"}, -{"Mr. Write", "라이트"}, -{"North of the Moblin cave", "모리블린 동굴 북쪽"}, -{"North of Tabahl Wasteland", "타발 숲 북쪽"}, -{"Rock maze in Ukuku Prairie", "우쿠쿠 초원 바위 미로"}, -{"Island in the pond", "연못의 섬"}, -{"last hole", "마지막 구멍"}, -{"cave on the climb", "오르막 동굴"}, -{"east island", "동쪽 섬"}, -{"middle island", "가운데 섬"}, -{"race under 30 s", "레이스 30초 이내"}, -{"race under 35 s", "레이스 35초 이내"}, -{"race under 45 s", "레이스 45초 이내"}, -{"south island", "남쪽 섬"}, -{"west island", "서쪽 섬"}, -{"Cave by the river crossing", "강 건너는 곳 옆 동굴"}, -{"shelf", "선반"}, -{"Small island off the coast", "앞바다의 작은 섬"}, -{"South of Martha's Bay", "마사의 만 남쪽"}, -{"southwest of Martha's Bay", "마사의 만 남서쪽"}, -{"Chest in Goponga Swamp", "고퐁가 늪 보물상자"}, -{"Syrup the witch", "마법 할머니"}, -{"Tree south of Tail Cave", "꼬리리의 동굴 남쪽 나무"}, -{"five chest game", "보물상자 5개 게임"}, -{"bomb hole", "폭탄 구멍"}, -{"crossing cave", "연결 동굴"}, -{"east bridge", "동쪽 다리"}, -{"east drop", "동쪽 낙하"}, -{"left chest", "왼쪽 보물상자"}, -{"blocks at the entrance", "입구 블록"}, -{"chest at the entrance", "입구 보물상자"}, -{"hole", "구멍"}, -{"chest on the ledge", "턱 위 보물상자"}, -{"cave on the left climb", "왼쪽 오르막 동굴"}, -{"cave by the rooster", "닭 옆 동굴"}, -{"way out", "탈출로"}, -{"under a rock", "바위 밑"}, -{"Tarin at the beehive", "벌집 앞의 타린"}, -{"last prize", "마지막 상품"}, -{"Tree in Ukuku Prairie", "우쿠쿠 초원의 나무"}, -{"Ukuku cave", "우쿠쿠 동굴"}, -{"east chest", "동쪽 보물상자"}, -{"east item", "동쪽 아이템"}, -{"west item", "서쪽 아이템"}, -{"Under the skull rock", "해골 바위 밑"}, -{"Cave by the villa", "별장 옆 동굴"}, -{"Washed up on the beach", "해변에 떠밀려 온 것"}, -{"spot in Tabahl Wasteland", "타발 숲 지점"}, -{"Forest crossing cave", "숲 연결 동굴"}, -{"item", "아이템"}, -{"Forest north cave", "숲 북쪽 동굴"}, -{"south chest", "남쪽 보물상자"}, -{"Bush", "풀숲"}, -{"spot", "지점"}, -{"Pot", "항아리"}, -{"Apple tree", "사과나무"}, -{"Rock", "바위"}, -{"Marin and Tarin's house", "마린과 타린의 집"}, -{"the quadruplets' house", "네쌍둥이의 집"}, -{"the Southern Face Shrine", "남쪽 신전"}, -{"the witch's hut", "마법 할머니의 집"}, -{"the library", "도서관"}, -{"the Seashell Mansion", "소라껍데기의 저택"}, -{"a telephone booth", "전화 부스"}, -{"the Town Tool Shop", "마을 도구점"}, -{"the Dream Shrine", "꿈의 사당"}, -{"north-west", "북서쪽"}, -{"north-east", "북동쪽"}, -{"south-west", "남서쪽"}, -{"south-east", "남동쪽"}, -{"centre", "중앙"}, -{"middle", "가운데"}, -{"inside", "안쪽"}, -{"Trendy Game: prize %s", "최신 유행 게임: 상품 %s"}, -{"Pot (%s)", "항아리 (%s)"}, -{"%s of 3", "3개 중 %s번째"}, -{"Slime eye", "거대졸"}, -{"Angler", "앵글러"}, -{"Slime eel", "후커"}, -{"Master stalfos", "마스터 스탈폰"}, -{"Eagle", "알바트로스"}, -{"Hothead", "거대플레임"}, -{"Owl statue long hallway", "부엉이 석상 (긴 복도)"}, -{"Owl statue spinies", "부엉이 석상 (가시돌이)"}, -{"Owl statue 3 of a kind", "부엉이 석상 (베가스)"}, -{"Owl statue first switch", "부엉이 석상 (첫 스위치)"}, -{"Owl statue push puzzle", "부엉이 석상 (밀기 퍼즐)"}, -{"Owl statue past hinox", "부엉이 석상 (히녹스 다음)"}, -{"Owl statue basement north", "부엉이 석상 (지하 북쪽)"}, -{"Owl statue arrow", "부엉이 석상 (화살)"}, -{"Owl statue northwest", "부엉이 석상 (북서쪽)"}, -{"Owl statue", "부엉이 석상"}, -{"Owl statue triple stalfos", "부엉이 석상 (스탈포스 3마리)"}, -{"Owl statue before slime eel", "부엉이 석상 (후커 앞)"}, -{"Owl statue ledge", "부엉이 석상 (턱)"}, -{"Owl statue southeast", "부엉이 석상 (남동쪽)"}, -{"Owl statue canal", "부엉이 석상 (수로)"}, -{"Owl statue ball", "부엉이 석상 (철구)"}, -{"Owl statue kirbys", "부엉이 석상 (커비)"}, -{"Owl statue hookshot chest", "부엉이 석상 (후크샷 보물상자)"}, -{"Owl statue above smasher", "부엉이 석상 (스매셔 위)"}, -{"Owl statue below gibdos", "부엉이 석상 (기브도 아래)"}, -{"Owl statue eye statue", "부엉이 석상 (눈 석상)"}, -{"Owl statue nine switches", "부엉이 석상 (스위치 9개)"}, -{"Owl statue first switches", "부엉이 석상 (첫 스위치들)"}, -{"Owl statue before mini boss", "부엉이 석상 (중간 보스 앞)"}, -{"Owl statue below D8", "부엉이 석상 (D8 아래)"}, -// separators (tools/menu_strings.py) -{", ", ", "}, -{": ", ": "}, -// not used any more {"Set the buttons and keys for the game. F1, Esc, Home or Back + Start always open this menu.", "게임에 쓸 버튼과 키를 설정합니다. F1, Esc, Home 또는 Back + Start로 언제든 이 메뉴를 열 수 있습니다."}, {"! This folder is synced by OneDrive", "! 이 폴더는 OneDrive와 동기화됩니다"}, {"About %.0f GB of game files will upload to your OneDrive.", "게임 파일 약 %.0fGB가 OneDrive에 업로드됩니다."}, diff --git a/runtime/ui/lang/nl.inc b/runtime/ui/lang/nl.inc index 9fce906df..50c05e72f 100644 --- a/runtime/ui/lang/nl.inc +++ b/runtime/ui/lang/nl.inc @@ -226,13 +226,9 @@ {"Appearance", "Uiterlijk"}, {"Layout", "Indeling"}, {"Follow thumb", "Volg duim"}, -{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Aan: hij komt waar je duim neerkomt, overal linksonder. Uit: hij blijft waar hij is (verplaats hem in Touch-indeling bewerken)."}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it with the Layout button).", "Aan: hij komt waar je duim neerkomt, overal linksonder. Uit: hij blijft waar hij is (verplaats hem met de indelingsknop)."}, {"Layout button", "Indelingsknop"}, {"A button at the top, next to the menu button, that lets you move and resize the on-screen buttons.", "Een knop bovenaan, naast de menuknop, waarmee je de knoppen op het scherm verplaatst en van grootte verandert."}, -{"Load a save first.", "Laad eerst een opslagbestand."}, -{"Edit touch layout", "Touch-indeling bewerken"}, -{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Verplaats de knoppen op het scherm, wijzig van elke knop de grootte of verberg hem, boven op het spel. Beschikbaar tijdens het spelen."}, {"Reset touch layout", "Touch-indeling herstellen"}, {"Puts every on-screen button back in its place, at its size, shown.", "Zet elke knop op het scherm terug op zijn plek en grootte, en weer zichtbaar."}, // runtime/ui/difficulty.mm @@ -691,6 +687,7 @@ {"The game's echo in caves, dungeons and big rooms.", "De echo van het spel in grotten, kerkers en grote ruimtes."}, {"LAS Recomp menu sounds", "Menugeluiden LAS Recomp"}, {"Sounds when you move around and pick things in LAS Recomp's menus.", "Geluiden als je beweegt en kiest in de menu's van LAS Recomp."}, +{"Load a save first.", "Laad eerst een opslagbestand."}, {"Quit", "Afsluiten"}, {"Reset Game", "Spel resetten"}, {"Progress since your last save is lost.", "Voortgang sinds je laatste keer opslaan gaat verloren."}, @@ -1090,6 +1087,8 @@ {"Reveal spoilers", "Spoilers tonen"}, {"Search items and places", "Zoek voorwerpen en plaatsen"}, {"Search the spoiler log", "Zoek in de spoilerlog"}, +{"Useful items only", "Alleen nuttige voorwerpen"}, +{"Hide checked", "Gedane verbergen"}, // runtime/ui/tracker_overlay.mm {"Seashells", "Schelpen"}, {"%d Small Keys", "%d kleine sleutels"}, @@ -1122,7 +1121,6 @@ {"needs %s +%d", "vereist %s +%d"}, {"Filter: %s", "Filter: %s"}, {"In logic now", "Nu in logica"}, -{"Hide checked", "Gedane verbergen"}, {"Filters", "Filters"}, {"Room %c%d", "Kamer %c%d"}, {"trick logic", "tricklogica"}, @@ -1177,9 +1175,9 @@ {"This is where Manbo's Mambo drops you. You can't warp here directly.", "Hier zet Manbo's mambo je neer. Je kunt hier niet direct naartoe teleporteren."}, {"%d places", "%d plekken"}, {"Load a save to warp.", "Laad een opslagbestand om te teleporteren."}, +{"Places", "Plaatsen"}, {"Search", "Zoeken"}, {"Search places...", "Zoek plaatsen..."}, -{"Places", "Plaatsen"}, {"Link is here", "Link is hier"}, // warp_data.h {"Dungeons", "Kerkers"}, @@ -1306,28 +1304,112 @@ {"Building game files (%s tasks)", "Spelbestanden bouwen (%s taken)"}, {"Triforce hunt: %s", "Triforce-jacht: %s"}, // spoiler_view.py -{"Settings: %s", "Instellingen: %s"}, -{"Walkthrough", "Walkthrough"}, -{"Items by area", "Voorwerpen per gebied"}, -{"Starting items: %s", "Startvoorwerpen: %s"}, +{"Route", "Route"}, +{"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Alleen wat je nodig hebt om de seed uit te spelen. Elke stop is te bereiken met de voorwerpen van de stops ervoor."}, +{"Finish", "Einde"}, +{"Everything useful step by step", "Alles wat nuttig is, stap voor stap"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Elke stap kun je doen met wat je na de vorige stappen had (binnen een stap in elke volgorde)."}, {"Only items that open things up are listed; rupees", "Alleen voorwerpen die iets openen staan erbij; rupees"}, {"traps and similar are left out.", "vallen en dergelijke zijn weggelaten."}, -{"Finish", "Einde"}, -{"With all eight instruments", "Met alle acht instrumenten"}, -{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "speel je de Ballade van de Windvis bij het ei op de Tal Tal-hoogvlakte."}, -{"(No walkthrough", "(Geen walkthrough"}, -{"this seed has no request.json to recompute it.)", "deze seed heeft geen request.json om hem opnieuw te berekenen.)"}, +{"Items by area", "Voorwerpen per gebied"}, +{"Dungeon rooms", "Kerkerkamers"}, +{"Where each moved room is now and where it came from.", "Waar elke verplaatste kamer nu is en waar hij vandaan komt."}, {"Entrances", "Ingangen"}, -{"%s entrance leads into %s", "Ingang %s leidt naar %s"}, -{"%s:", "%s:"}, {"Doors", "Deuren"}, -{"door -> interior it now leads into", "deur -> binnenruimte waar die nu naartoe leidt"}, +{"each door and where it now leads", "elke deur en waar die nu naartoe leidt"}, +{"Settings: %s", "Instellingen: %s"}, +{"(This seed has no step list.)", "(Deze seed heeft geen stappenlijst.)"}, +{"%s entrance leads into %s", "Ingang %s leidt naar %s"}, +{"Unchanged (%s)", "Ongewijzigd (%s)"}, {"Exits", "Uitgangen"}, -{"interior -> where leaving it puts you", "binnenruimte -> waar je uitkomt als je die verlaat"}, +{"each way out and where it puts you", "elke uitgang en waar je uitkomt"}, +{"Starting items: %s", "Startvoorwerpen: %s"}, +{"%s:", "%s:"}, +{"Small items (%s)", "Kleine voorwerpen (%s)"}, {"%s - enter through %s's entrance", "%s - ga naar binnen via de ingang van %s"}, {"%s's Soul", "Ziel van %s"}, {"%s' Soul", "Ziel van %s"}, +{"room %s", "kamer %s"}, +{"The last of the %s Triforce pieces you need ends the game.", "Het laatste van de %s Triforce-stukken die je nodig hebt, beëindigt het spel."}, +{"2nd", "2e"}, +{"shelf", "plank"}, +{"second item", "tweede voorwerp"}, +{"third item", "derde voorwerp"}, +{"west side door", "deur aan de westkant"}, +{"east side door", "deur aan de oostkant"}, +{"Fire cave", "Vuurgrot"}, +{"north door", "noordelijke deur"}, +{"south door", "zuidelijke deur"}, +{"Wind Fish's egg", "Windvis-ei"}, +{"rooster house", "huis van de haan"}, +{"Telephone booth by Turtle Rock", "Telefoonboom bij Schildpadrots"}, +{"Mad Batter well", "Put van het Duiveltje"}, +{"Tal Tal crossing cave", "Doorgangsgrot Tal Tal"}, +{"west door", "westelijke deur"}, +{"east door", "oostelijke deur"}, +{"Mountain cave", "Berggrot"}, +{"bottom door", "deur onderaan"}, +{"top door", "deur bovenaan"}, +{"ledge door", "deur bij de richel"}, +{"Papahl's cave", "Grot van Papahl"}, +{"lower door", "onderste deur"}, +{"upper door", "bovenste deur"}, +{"Bird Key cave", "Arendssleutelgrot"}, +{"Five chest cave", "Grot met vijf kisten"}, +{"Five chest game", "Spel met vijf kisten"}, +{"exit door", "uitgangsdeur"}, +{"Rainbow cave", "Regenboog-grot"}, +{"outer west door", "buitenste westelijke deur"}, +{"inner west door", "binnenste westelijke deur"}, +{"inner east door", "binnenste oostelijke deur"}, +{"outer east door", "buitenste oostelijke deur"}, +{"Fairy fountain", "Bron van de Grote fee"}, +{"Tal Tal east", "Tal Tal-oost"}, +{"Cave to Eagle's Tower", "Grot naar Arendstoren"}, +{"Cave by Angler's Tunnel", "Grot bij Vistunnel"}, +{"Damp cave", "Vochtige grot"}, +{"Raft cave", "Vlotgrot"}, +{"Telephone booth", "Telefoonboom"}, +{"Moblin cave", "Moblin-grot"}, +{"Dampe's house", "Dampé's werkplaats"}, +{"Rapids Ride raft shop", "Vlotverhuur Wilde wateren"}, +{"Mysterious Forest", "Dwaalwoud"}, +{"north cave", "noordelijke grot"}, +{"Kanalet tunnel", "Kanalet-tunnel"}, +{"Telephone booth by Kanalet Castle", "Telefoonboom bij kasteel Kanalet"}, +{"roof west door", "westelijke deur op het dak"}, +{"roof east door", "oostelijke deur op het dak"}, +{"front door", "voordeur"}, +{"Cave south of Kanalet Castle", "Grot ten zuiden van kasteel Kanalet"}, +{"Forest crossing cave", "Doorgangsgrot Dwaalwoud"}, +{"forest", "bos"}, +{"north side door", "deur aan de noordkant"}, +{"Ukuku cave", "Ukuku-grot"}, +{"Ukuku Prairie north", "Ukuku-prairie noord"}, +{"Ukuku Prairie west", "Ukuku-prairie west"}, +{"Cave to Face Shrine", "Grot naar Maskerburcht"}, +{"Fairy fountain by the Armos maze", "Bron van de Grote fee bij het Armos-doolhof"}, +{"Flying Rooster's grave", "Graf van de vliegende haan"}, +{"River crossing cave", "Grot bij de rivierovergang"}, +{"Armos maze cave", "Grot Armos-doolhof"}, +{"BowWow's kennel", "Hondenhok van BowWow"}, +{"Marin and Tarin's house", "het huis van Marin en Tarin"}, +{"Mabe Village library", "Bibliotheek van Meeuwendorp"}, +{"Cliff cave by the bay", "Klifgrot bij de baai"}, +{"plateau door", "deur op het plateau"}, +{"Cave behind Richard's villa", "Grot achter het huis van Richard"}, +{"rabbit house", "huis van de konijnen"}, +{"Zora's house", "Huis van de Zora"}, +{"bombed cave", "opgeblazen grot"}, +{"Lanmola cave", "Lanmola-grot"}, +{"east dive spot", "oostelijke duikplek"}, +{"west dive spot", "westelijke duikplek"}, +{"Sale's banana house", "Bananenboetiek"}, +{"bay", "baai"}, +{"Tunnel to the bay Mad Batter", "Tunnel naar het Duiveltje bij de baai"}, +{"Mermaid statue", "Zeemeerminstandbeeld"}, +{"Boomerang cave", "Boemeranggrot"}, +{"Ghost's house", "Huis van het spook"}, {"Signpost Maze", "Bordjesbos"}, {"Ancient Ruins", "Oude ruïnes"}, {"west", "west"}, @@ -1338,98 +1420,180 @@ {"50 Rupees", "50 rupees"}, {"100 Rupees", "100 rupees"}, {"300 Rupees", "300 rupees"}, +{"1 Rupee", "1 rupee"}, {"Trap!", "Val!"}, {"Frog Song of Soul", "Opkikkerlied"}, {"Chamber Stone", "Kamersteen"}, +{"Triforce piece", "Triforce-stuk"}, {"Beach chest", "Kist strand"}, +{"Chest on the beach", "Kist op het strand"}, {"Taltal entrance chest", "Kist ingang Tal Tal"}, +{"chest at the entrance", "kist bij de ingang"}, {"Taltal east left chest", "Linkerkist Tal Tal-oost"}, +{"left chest", "linkerkist"}, {"Dream shrine right", "Droomtempel rechts"}, +{"right", "rechts"}, {"Armos cave", "Armos-grot"}, {"Goponga cave left", "Goponga-grot links"}, +{"left", "links"}, {"Goponga cave right", "Goponga-grot rechts"}, {"Ukuku cave west chest", "Kist westelijke Ukuku-grot"}, +{"west chest", "westelijke kist"}, {"Ukuku cave east chest", "Kist oostelijke Ukuku-grot"}, +{"east chest", "oostelijke kist"}, {"Kanalet south cave", "Zuidelijke grot Kanalet"}, {"Swamp chest", "Kist moeras"}, +{"Chest in Goponga Swamp", "Kist in het Goponga-moeras"}, {"Taltal left ascent cave", "Linker klimgrot Tal Tal"}, +{"cave on the left climb", "grot op de linkerklim"}, {"Taltal ledge chest", "Kist richel Tal Tal"}, +{"chest on the ledge", "kist op de richel"}, {"Taltal 5 chest puzzle", "Puzzel met 5 kisten Tal Tal"}, +{"five chest game", "spel met vijf kisten"}, {"Taltal west chest", "Kist Tal Tal-west"}, {"Villa cave", "Grot bij huis van Richard"}, +{"Cave by the villa", "Grot bij het huis van Richard"}, {"Woods crossing cave chest", "Kist doorgangsgrot Dwaalwoud"}, +{"chest", "kist"}, {"Woods north cave chest", "Kist noordelijke grot Dwaalwoud"}, +{"Forest north cave", "Noordelijke grot Dwaalwoud"}, {"Woods south chest", "Kist Dwaalwoud-zuid"}, +{"south chest", "zuidelijke kist"}, {"Woods north chest", "Kist Dwaalwoud-noord"}, +{"north chest", "noordelijke kist"}, {"Fishing", "Vissen"}, +{"Fishing pond", "Visvijver"}, +{"50 points", "50 punten"}, {"Fishing orange", "Vissen oranje"}, +{"orange fish", "oranje vis"}, {"Fishing loose", "Vissen los voorwerp"}, +{"loose item", "los voorwerp"}, +{"100 points", "100 punten"}, +{"150 points", "150 punten"}, {"Fishing cheep cheep", "Vissen Cheep Cheep"}, +{"Cheep Cheep", "Cheep Cheep"}, {"Fishing ol baron", "Vissen baronvis"}, +{"Ol' Baron", "Baronvis"}, {"Rapids race", "Wildwaterrace"}, +{"race under 45 s", "race onder 45 s"}, +{"race under 35 s", "race onder 35 s"}, +{"race under 30 s", "race onder 30 s"}, {"Rapids middle island", "Middelste eiland wilde wateren"}, +{"middle island", "middelste eiland"}, {"Rapids west island", "Westelijk eiland wilde wateren"}, +{"west island", "westelijk eiland"}, {"Dampe page", "Dampé pagina"}, +{"Dampe", "Dampé"}, +{"first page", "eerste pagina"}, {"Dampe heart challenge", "Dampé hartjesuitdaging"}, +{"Dampe's heart challenge", "Dampé's hartjesuitdaging"}, +{"second page", "tweede pagina"}, {"Dampe bottle challenge", "Dampé flesuitdaging"}, +{"Dampe's bottle challenge", "Dampé's flesuitdaging"}, {"Dampe final", "Dampé laatste"}, +{"Dampe's final challenge", "Dampé's laatste uitdaging"}, {"Walrus", "Walrus"}, {"Ghost reward", "Beloning spook"}, +{"Ghost's reward", "Beloning van het spook"}, +{"song", "liedje"}, {"Manbo", "Manbo"}, {"Mamu", "Wart"}, {"Mad batter bay", "Duiveltje baai"}, +{"Mad Batter", "Duiveltje"}, {"Mad batter taltal", "Duiveltje Tal Tal"}, {"Mad batter woods", "Duiveltje Dwaalwoud"}, {"Invisible zora", "Onzichtbare Zora"}, +{"Invisible Zora", "Onzichtbare Zora"}, {"Goriya trader", "Goriya ruilen"}, +{"Goriya", "Goriya"}, +{"trade", "ruilen"}, {"Mamasha", "Mamasha"}, {"Ciao ciao", "CiaoCiao"}, +{"Ciao Ciao", "CiaoCiao"}, {"Sale", "Sale"}, {"Kiki", "Kiki"}, +{"Kiki the monkey", "Kiki"}, {"Tarin ukuku", "Tarin Ukuku"}, +{"Tarin at the beehive", "Tarin bij de bijenkorf"}, {"Chef bear", "Beer"}, +{"Chef Bear", "Beer"}, {"Papahl", "Papahl"}, {"Christine trade", "Christine ruilen"}, +{"Christine", "Christine"}, {"Christine grateful", "Christine dankbaar"}, +{"thank-you gift", "bedankje"}, {"Mr write", "Dr. Write"}, +{"Mr. Write", "Dr. Write"}, {"Grandma yahoo", "Oma Ulrira"}, +{"Grandma Yahoo", "Oma Ulrira"}, +{"broom", "bezem"}, {"Bay fisherman", "Visser in de baai"}, +{"Fisherman under the bridge", "Visser onder de brug"}, {"Mermaid martha", "Zeemeermin Martha"}, +{"Martha the mermaid", "Zeemeermin Martha"}, {"Mermaid cave", "Zeemeerminnengrot"}, {"Lanmola", "Lanmola"}, {"Armos knight", "Reuzen-Armos"}, +{"Armos Knight", "Reuzen-Armos"}, {"Washed up", "Aangespoeld"}, +{"Washed up on the beach", "Aangespoeld op het strand"}, {"Dream shrine left", "Droomtempel links"}, {"Taltal rooster cave", "Grot vliegende haan Tal Tal"}, +{"cave by the rooster", "grot bij de haan"}, {"Woods loose", "Los voorwerp Dwaalwoud"}, {"Pothole final", "Valkuilveld laatste"}, +{"last hole", "laatste gat"}, {"5 seashell reward", "Beloning 5 schelpen"}, +{"5 shells", "5 schelpen"}, {"15 seashell reward", "Beloning 15 schelpen"}, +{"15 shells", "15 schelpen"}, {"30 seashell reward", "Beloning 30 schelpen"}, +{"30 shells", "30 schelpen"}, {"40 seashell reward", "Beloning 40 schelpen"}, +{"40 shells", "40 schelpen"}, {"50 seashell reward", "Beloning 50 schelpen"}, +{"50 shells", "50 schelpen"}, {"Animal village northwest", "Dierendorp noordwest"}, +{"Northwest of Animal Village", "Ten noordwesten van Dierendorp"}, {"Animal village cave", "Grot Dierendorp"}, +{"Cave by Animal Village", "Grot bij Dierendorp"}, {"Taltal entrance blocks", "Blokken ingang Tal Tal"}, +{"blocks at the entrance", "blokken bij de ingang"}, {"North wasteland", "Noordelijk Tabahl-bos"}, +{"North of Tabahl Wasteland", "Ten noorden van het Tabahl-bos"}, {"Desert cave", "Woestijngrot"}, +{"Cave in Yarna Desert", "Grot in de Yarna-woestijn"}, {"Graveyard cave", "Grot begraafplaats"}, +{"Cave under the Cemetery", "Grot onder de begraafplaats"}, {"Mabe well", "Put Meeuwendorp"}, {"Ukuku cave west loose", "Los voorwerp westelijke Ukuku-grot"}, +{"west item", "westelijk voorwerp"}, {"Ukuku cave east loose", "Los voorwerp oostelijke Ukuku-grot"}, +{"east item", "oostelijk voorwerp"}, {"Rapids ascent cave", "Klimgrot wilde wateren"}, +{"cave on the climb", "grot op de klim"}, {"Taltal crossing cave", "Doorgangsgrot Tal Tal"}, +{"crossing cave", "doorgangsgrot"}, {"Taltal west escape", "Ontsnapping Tal Tal-west"}, +{"way out", "uitweg"}, {"Above turtle rock", "Boven Schildpadrots"}, +{"Ledge above Turtle Rock", "Richel boven Schildpadrots"}, {"Pothole north", "Valkuilveld noord"}, +{"north", "noord"}, {"Woods crossing cave loose", "Los voorwerp doorgangsgrot Dwaalwoud"}, +{"item", "voorwerp"}, {"Woods north cave loose", "Los voorwerp noordelijke grot Dwaalwoud"}, {"Diamond island", "Ruiteiland"}, {"Kanalet crow", "Kanalet kraai"}, +{"crow", "kraai"}, {"Kanalet mad bomber", "Kanalet gekke bommengooier"}, +{"Mad Bomber", "Gekke bommengooier"}, {"Kanalet kill room", "Kanalet vechtkamer"}, +{"fight room", "vechtkamer"}, {"Kanalet bombed guard", "Kanalet opgeblazen wachter"}, +{"bombed guard", "opgeblazen wachter"}, {"Kanalet final guard", "Kanalet laatste wachter"}, +{"last guard", "laatste wachter"}, {"Owl statue moblin cave", "Uilenbeeld Moblin-grot"}, {"Owl statue pothole", "Uilenbeeld Valkuilveld"}, {"Owl statue above cave", "Uilenbeeld boven grot"}, @@ -1438,8 +1602,222 @@ {"Owl statue maze", "Uilenbeeld Bordjesbos"}, {"Owl statue rapids", "Uilenbeeld wilde wateren"}, {"Owl statue taltal east", "Uilenbeeld Tal Tal-oost"}, +{"Instrument", "Instrument"}, +{"Moldorm", "Moldorm"}, +{"West hallway", "Westelijke gang"}, +{"Middle ledge", "Middelste richel"}, +{"3 of a kind", "Vegas"}, +{"Bomb room", "Bommenkamer"}, +{"Middle kill chest", "Middelste vechtkist"}, +{"Spark chest", "Spark-kist"}, +{"Button chest", "Knopkist"}, +{"Stalfos chest", "Stalfos-kist"}, +{"4 zols chest", "kist 4 Zols"}, +{"Beetles", "Torren"}, +{"Owl statue long hallway", "Uilenbeeld lange gang"}, +{"Owl statue spinies", "Uilenbeeld Spiny's"}, +{"Owl statue 3 of a kind", "Uilenbeeld Vegas"}, +{"Genie", "Djinn"}, +{"Boos", "Boo's"}, +{"Long room west", "Lange kamer west"}, +{"Long room east", "Lange kamer oost"}, +{"Vacuum mouth room", "Kamer met zuigmond"}, +{"Kill puzzle", "Vechtpuzzel"}, +{"West chest", "Westelijke kist"}, +{"Double stalfos", "Dubbele Stalfos"}, +{"Double shy guys", "Dubbele Shy Guys"}, +{"Entrance chest", "Kist bij ingang"}, +{"Single shy guy", "Enkele Shy Guy"}, +{"Peg circle", "Paaltjescirkel"}, +{"Owl statue first switch", "Uilenbeeld eerste schakelaar"}, +{"Owl statue push puzzle", "Uilenbeeld duwpuzzel"}, +{"Owl statue past hinox", "Uilenbeeld voorbij Hinox"}, +{"Slime eye", "Reuzen-Zol"}, +{"Pre boss", "Voor de eindbaas"}, +{"Triple bombites", "Drie Bombites"}, +{"North chest", "Noordelijke kist"}, +{"Central ledge", "Middelste richel"}, +{"Central chest", "Middelste kist"}, +{"East ledge", "Oostelijke richel"}, +{"Pairodds", "Pairodds"}, +{"Five zols", "Vijf Zols"}, +{"Basement north", "Kelder noord"}, +{"Basement west", "Kelder west"}, +{"Basement south", "Kelder zuid"}, +{"Hallway", "Gang"}, +{"Hallway side room", "Zijkamer van de gang"}, +{"Vacuum mouth", "Zuigmond"}, +{"Owl statue basement north", "Uilenbeeld kelder noord"}, +{"Owl statue arrow", "Uilenbeeld pijl"}, +{"Owl statue northwest", "Uilenbeeld noordwest"}, +{"Angler", "Schemervis"}, +{"East side north", "Oostkant noord"}, +{"East side south", "Oostkant zuid"}, +{"West ledge", "Westelijke richel"}, +{"East of puzzle", "Ten oosten van puzzel"}, +{"South of puzzle", "Ten zuiden van puzzel"}, +{"Sunken item", "Gezonken voorwerp"}, +{"Central room", "Middelste kamer"}, +{"Small island", "Klein eiland"}, +{"Ledge north", "Richel noord"}, +{"Statues chest", "Beeldenkist"}, +{"Lobby", "Hal"}, +{"Crystals", "Kristallen"}, +{"Owl statue", "Uilenbeeld"}, +{"Slime eel", "Duivelsmurene"}, +{"Master stalfos", "Stalfos-leider"}, +{"Crystal blocks", "Kristalblokken"}, +{"Past master stalfos", "Voorbij Stalfos-leider"}, +{"Water tunnel", "Watertunnel"}, +{"Right side north", "Rechterkant noord"}, +{"Right side middle", "Rechterkant midden"}, +{"Right side east", "Rechterkant oost"}, +{"Helmasaurs", "Helmasaurs"}, +{"West stairs chest", "Kist westelijke trap"}, +{"Near entrance", "Bij de ingang"}, +{"Owl statue triple stalfos", "Uilenbeeld drie Stalfos"}, +{"Owl statue before slime eel", "Uilenbeeld voor Duivelsmurene"}, +{"Facade", "Façade"}, +{"Far northwest", "Uiterste noordwesten"}, +{"Far northeast", "Uiterste noordoosten"}, +{"Statue line north", "Beeldenrij noord"}, +{"Statue line south", "Beeldenrij zuid"}, +{"Wizzrobe pegs", "Wizzrobe-paaltjes"}, +{"Canal", "Kanaal"}, +{"3 wizzrobes", "3 Wizzrobes"}, +{"Tile room", "Tegelkamer"}, +{"Gated hallway north", "Afgesloten gang noord"}, +{"Gated hallway south", "Afgesloten gang zuid"}, +{"Southwest chest", "Zuidwestelijke kist"}, +{"Wizzrobes ledge", "Richel Wizzrobes"}, +{"Owl statue ledge", "Uilenbeeld richel"}, +{"Owl statue southeast", "Uilenbeeld zuidoost"}, +{"Owl statue canal", "Uilenbeeld kanaal"}, +{"Eagle", "Stormarend"}, +{"Like likes", "Like Likes"}, +{"1f west", "1V west"}, +{"3ofakind north", "Vegas noord"}, +{"2f horseheads", "paardenhoofden 2V"}, +{"Hinox", "Hinox"}, +{"3ofakind south", "Vegas zuid"}, +{"Blue pegs chest", "Kist blauwe paaltjes"}, +{"3f horseheads", "paardenhoofden 3V"}, +{"Grim creeper", "Grim Creeper"}, +{"Owl statue ball", "Uilenbeeld bal"}, +{"Owl statue kirbys", "Uilenbeeld Kirby's"}, +{"Owl statue hookshot chest", "Uilenbeeld grijphaakkist"}, +{"Hothead", "Inferno"}, +{"Left exit chest", "Kist linkeruitgang"}, +{"Dodongos", "Dodongo's"}, +{"Northern ledge", "Noordelijke richel"}, +{"Gibdos", "Gibdo's"}, +{"Beamos chest", "Beamos-kist"}, +{"Statue", "Beeld"}, +{"Torches", "Fakkels"}, +{"West vire", "Westelijke Vire"}, +{"West roomba", "Westelijke Roomba"}, +{"Surrounded by blocks", "Omringd door blokken"}, +{"Sparks chest", "Spark-kist"}, +{"East of pots", "Ten oosten van potten"}, +{"East roomba", "Oostelijke Roomba"}, +{"Far southwest", "Uiterste zuidwesten"}, +{"Far southeast", "Uiterste zuidoosten"}, +{"Owl statue above smasher", "Uilenbeeld boven Smasher"}, +{"Owl statue below gibdos", "Uilenbeeld onder Gibdo's"}, +{"Owl statue eye statue", "Uilenbeeld oogbeeld"}, +{"Northern chest", "Noordelijke kist"}, +{"Zol pots", "Zol-potten"}, +{"North orbs", "Noordelijke bollen"}, +{"South orbs", "Zuidelijke bollen"}, +{"East color puzzle", "Oostelijke kleurenpuzzel"}, +{"West color puzzle", "Westelijke kleurenpuzzel"}, +{"Putters", "Putters"}, +{"Owl statue nine switches", "Uilenbeeld negen schakelaars"}, +{"Owl statue first switches", "Uilenbeeld eerste schakelaars"}, +{"Owl statue before mini boss", "Uilenbeeld voor tussenbaas"}, +{"Rupee", "Rupee"}, {"stone beak", "stenen snavel"}, -// spoiler logs +// tracker.py +{"spot above the cave", "plek boven de grot"}, +{"spot above Key Cavern", "plek boven het Sleutelfort"}, +{"Sunken item in the bay passage", "Gezonken voorwerp in de doorgang bij de baai"}, +{"Tree on the beach", "Boom op het strand"}, +{"bonk", "rammen"}, +{"spot on the beach", "plek op het strand"}, +{"Beside the Seashell Mansion", "Naast het Schelpenpaleis"}, +{"spot in Yarna Desert", "plek in de Yarna-woestijn"}, +{"South of Yarna Desert", "Ten zuiden van de Yarna-woestijn"}, +{"BowWow's doghouse", "Hondenhok van BowWow"}, +{"dig", "graven"}, +{"Ghost's grave", "Graf van het spook"}, +{"Pot in %s", "Pot in %s"}, +{"the Ghost's house", "het huis van het spook"}, +{"West of Goponga Swamp", "Ten westen van het Goponga-moeras"}, +{"Kanalet moat", "Slotgracht Kanalet"}, +{"sunken", "gezonken"}, +{"south", "zuid"}, +{"Seashell bush in Mabe Village", "Schelpenstruik in Meeuwendorp"}, +{"North of the Moblin cave", "Ten noorden van de Moblin-grot"}, +{"Rock maze in Ukuku Prairie", "Stenendoolhof op de Ukuku-prairie"}, +{"Island in the pond", "Eiland in de vijver"}, +{"east island", "oostelijk eiland"}, +{"south island", "zuidelijk eiland"}, +{"Cave by the river crossing", "Grot bij de rivierovergang"}, +{"Rock maze", "Stenendoolhof"}, +{"Small island off the coast", "Klein eiland voor de kust"}, +{"South of Martha's Bay", "Ten zuiden van Martha's baai"}, +{"southwest of Martha's Bay", "ten zuidwesten van Martha's baai"}, +{"Syrup the witch", "De heks"}, +{"Tree south of Tail Cave", "Boom ten zuiden van de Staartspelonk"}, +{"bomb hole", "bomgat"}, +{"east bridge", "oostelijke brug"}, +{"east drop", "oostelijke afgrond"}, +{"hole", "gat"}, +{"sunken item", "gezonken voorwerp"}, +{"under a rock", "onder een steen"}, +{"Tarin", "Tarin"}, +{"last prize", "laatste prijs"}, +{"Tree in Ukuku Prairie", "Boom op de Ukuku-prairie"}, +{"Under the skull rock", "Onder de schedelrots"}, +{"spot in Tabahl Wasteland", "plek in het Tabahl-bos"}, +{"Bush", "Struik"}, +{"spot", "plek"}, +{"Pot", "Pot"}, +{"Apple tree", "Appelboom"}, +{"Rock", "Steen"}, +{"the quadruplets' house", "het huis van de vierling"}, +{"the Southern Face Shrine", "de zuidelijke Maskerburcht"}, +{"the witch's hut", "het heksenhol"}, +{"the library", "de bibliotheek"}, +{"the Seashell Mansion", "het Schelpenpaleis"}, +{"a telephone booth", "een telefoonboom"}, +{"the Town Tool Shop", "de dorpswinkel"}, +{"the Dream Shrine", "de Droomtempel"}, +{"north-west", "noordwest"}, +{"north-east", "noordoost"}, +{"south-west", "zuidwest"}, +{"south-east", "zuidoost"}, +{"centre", "midden"}, +{"middle", "midden"}, +{"inside", "binnen"}, +{"Trendy Game: prize %s", "Speelhal: prijs %s"}, +{"Pot (%s)", "Pot (%s)"}, +{"%s of 3", "%s van 3"}, +{"Owl statue below D8", "Uilenbeeld onder K8"}, +// separators (tools/menu_strings.py) +{", ", ", "}, +{": ", ": "}, +// not used any more +{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Aan: hij komt waar je duim neerkomt, overal linksonder. Uit: hij blijft waar hij is (verplaats hem in Touch-indeling bewerken)."}, +{"Edit touch layout", "Touch-indeling bewerken"}, +{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Verplaats de knoppen op het scherm, wijzig van elke knop de grootte of verberg hem, boven op het spel. Beschikbaar tijdens het spelen."}, +{"Walkthrough", "Walkthrough"}, +{"With all eight instruments", "Met alle acht instrumenten"}, +{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "speel je de Ballade van de Windvis bij het ei op de Tal Tal-hoogvlakte."}, +{"(No walkthrough", "(Geen walkthrough"}, +{"this seed has no request.json to recompute it.)", "deze seed heeft geen request.json om hem opnieuw te berekenen.)"}, +{"door -> interior it now leads into", "deur -> binnenruimte waar die nu naartoe leidt"}, +{"interior -> where leaving it puts you", "binnenruimte -> waar je uitkomt als je die verlaat"}, {"boss cutscenes", "scènes eindbazen"}, {"enemy minibosses", "tussenbazen als vijanden"}, {"escape bottle", "ontsnappingsfles"}, @@ -1463,8 +1841,6 @@ {"Mabe bushes", "Struiken Meeuwendorp"}, {"Shop slot3 1st", "Winkelplek 3, 1e voorwerp"}, {"Shop slot3 2nd", "Winkelplek 3, 2e voorwerp"}, -{"Tarin", "Tarin"}, -{"Rock maze", "Stenendoolhof"}, {"double stalfos", "dubbele Stalfos"}, {"putters", "putters"}, {"south orbs", "zuidelijke bollen"}, @@ -1533,12 +1909,9 @@ {"past master stalfos", "voorbij Stalfos-leider"}, {"right side east", "rechterkant oost"}, {"water tunnel", "watertunnel"}, -{"west chest", "westelijke kist"}, -{"3 wizzrobes", "3 Wizzrobes"}, {"statue line north", "beeldenrij noord"}, {"wizzrobe pegs", "Wizzrobe-paaltjes"}, {"central room", "middelste kamer"}, -{"north chest", "noordelijke kist"}, {"Stalfos Note", "Briefje Stalfos"}, {"south of puzzle", "ten zuiden van puzzel"}, {"west ledge", "westelijke richel"}, @@ -1548,7 +1921,6 @@ {"middle kill chest", "middelste vechtkist"}, {"stalfos chest", "Stalfos-kist"}, {"angler", "schemervis"}, -{"3 of a kind", "Vegas"}, {"middle ledge", "middelste richel"}, {"moldorm", "Moldorm"}, {"west hallway", "westelijke gang"}, @@ -1557,10 +1929,8 @@ {"tile room", "tegelkamer"}, {"wizzrobes ledge", "richel Wizzrobes"}, {"Rooster statue", "Beeld vliegende haan"}, -{"Moblin cave", "Moblin-grot"}, {"Bow Wow", "BowWow"}, {"like likes", "Like Likes"}, -{"chest", "kist"}, {"Taltal bomb hole", "Bomgat Tal Tal"}, {"Taltal east bridge", "Oostelijke brug Tal Tal"}, {"Taltal west dig", "Graafplek Tal Tal-west"}, @@ -1578,11 +1948,9 @@ {"west roomba", "westelijke Roomba"}, {"west vire", "westelijke Vire"}, {"Squish Trap", "Pletval"}, -{"2f horseheads", "paardenhoofden 2V"}, {"blue pegs chest", "kist blauwe paaltjes"}, {"east ledge", "oostelijke richel"}, {"grim creeper", "Grim Creeper"}, -{"3f horseheads", "paardenhoofden 3V"}, {"Shop slot5 3rd", "Winkelplek 5, 3e voorwerp"}, {"Shop slot5 4th", "Winkelplek 5, 4e voorwerp"}, {"Shop slot5 5th", "Winkelplek 5, 5e voorwerp"}, @@ -1591,7 +1959,6 @@ {"final", "laatste"}, {"Shop slot6", "Winkelplek 6"}, {"Taltal east drop", "Afgrond Tal Tal-oost"}, -{"River crossing cave", "Grot bij de rivierovergang"}, {"South bay sunken", "Zuidelijke baai, gezonken"}, {"Kanalet moat north", "Slotgracht Kanalet noord"}, {"Rapids south island", "Zuidelijk eiland wilde wateren"}, @@ -1599,7 +1966,6 @@ {"north orbs", "noordelijke bollen"}, {"east color puzzle", "oostelijke kleurenpuzzel"}, {"spark chest", "Spark-kist"}, -{"4 zols chest", "kist 4 Zols"}, {"genie", "Djinn"}, {"long room west", "lange kamer west"}, {"entrance chest", "kist bij ingang"}, @@ -1607,7 +1973,6 @@ {"peg circle", "paaltjescirkel"}, {"basement north", "kelder noord"}, {"east of puzzle", "ten oosten van puzzel"}, -{"sunken item", "gezonken voorwerp"}, {"ledge north", "richel noord"}, {"statues chest", "beeldenkist"}, {"crystals", "kristallen"}, @@ -1623,10 +1988,7 @@ {"gated hallway south", "afgesloten gang zuid"}, {"southwest chest", "zuidwestelijke kist"}, {"eagle", "Stormarend"}, -{"1f west", "1V west"}, -{"3ofakind north", "Vegas noord"}, {"hinox", "Hinox"}, -{"3ofakind south", "Vegas zuid"}, {"hothead", "Inferno"}, {"gibdos", "Gibdo's"}, {"statue", "beeld"}, @@ -1719,18 +2081,14 @@ {"trendsanity", "trendsanity"}, {"Slime Eel", "Duivelsmurene"}, {"Evil Orb", "Kwade bol"}, -{"Genie", "Djinn"}, -{"Facade", "Façade"}, {"Evil Eagle", "Stormarend"}, {"Slime Eye", "Reuzen-Zol"}, {"Angler Fish", "Schemervis"}, {"Hot Head", "Inferno"}, -{"Moldorm", "Moldorm"}, {"enemy bosses", "eindbazen als vijanden"}, {"miniboss souls", "zielen tussenbazen"}, {"Blaino", "Blaino"}, {"Grim Creeper", "Grim Creeper"}, -{"Hinox", "Hinox"}, {"Smasher", "Smasher"}, {"Dodongo Snakes", "Dodongo's"}, {"Avalaunch", "Avalaunch"}, @@ -1742,188 +2100,6 @@ {"ghost item", "spook als voorwerp"}, {"tunic upgrades", "outfits als upgrades"}, {"digs", "graafplekken"}, -{"Rupee", "Rupee"}, -// tracker.py -{"5 shells", "5 schelpen"}, -{"15 shells", "15 schelpen"}, -{"30 shells", "30 schelpen"}, -{"40 shells", "40 schelpen"}, -{"50 shells", "50 schelpen"}, -{"spot above the cave", "plek boven de grot"}, -{"spot above Key Cavern", "plek boven het Sleutelfort"}, -{"Ledge above Turtle Rock", "Richel boven Schildpadrots"}, -{"Cave by Animal Village", "Grot bij Dierendorp"}, -{"Northwest of Animal Village", "Ten noordwesten van Dierendorp"}, -{"Armos Knight", "Reuzen-Armos"}, -{"Fisherman under the bridge", "Visser onder de brug"}, -{"Sunken item in the bay passage", "Gezonken voorwerp in de doorgang bij de baai"}, -{"Tree on the beach", "Boom op het strand"}, -{"bonk", "rammen"}, -{"Chest on the beach", "Kist op het strand"}, -{"spot on the beach", "plek op het strand"}, -{"Beside the Seashell Mansion", "Naast het Schelpenpaleis"}, -{"Chef Bear", "Beer"}, -{"Christine", "Christine"}, -{"thank-you gift", "bedankje"}, -{"trade", "ruilen"}, -{"Ciao Ciao", "CiaoCiao"}, -{"Dampe's bottle challenge", "Dampé's flesuitdaging"}, -{"Dampe's final challenge", "Dampé's laatste uitdaging"}, -{"Dampe's heart challenge", "Dampé's hartjesuitdaging"}, -{"Dampe", "Dampé"}, -{"first page", "eerste pagina"}, -{"second page", "tweede pagina"}, -{"Cave in Yarna Desert", "Grot in de Yarna-woestijn"}, -{"spot in Yarna Desert", "plek in de Yarna-woestijn"}, -{"South of Yarna Desert", "Ten zuiden van de Yarna-woestijn"}, -{"BowWow's doghouse", "Hondenhok van BowWow"}, -{"dig", "graven"}, -{"left", "links"}, -{"right", "rechts"}, -{"Fishing pond", "Visvijver"}, -{"100 points", "100 punten"}, -{"150 points", "150 punten"}, -{"50 points", "50 punten"}, -{"Cheep Cheep", "Cheep Cheep"}, -{"loose item", "los voorwerp"}, -{"Ol' Baron", "Baronvis"}, -{"orange fish", "oranje vis"}, -{"Ghost's grave", "Graf van het spook"}, -{"Pot in %s", "Pot in %s"}, -{"the Ghost's house", "het huis van het spook"}, -{"Ghost's reward", "Beloning van het spook"}, -{"West of Goponga Swamp", "Ten westen van het Goponga-moeras"}, -{"Goriya", "Goriya"}, -{"Grandma Yahoo", "Oma Ulrira"}, -{"broom", "bezem"}, -{"Cave under the Cemetery", "Grot onder de begraafplaats"}, -{"Invisible Zora", "Onzichtbare Zora"}, -{"bombed guard", "opgeblazen wachter"}, -{"crow", "kraai"}, -{"last guard", "laatste wachter"}, -{"fight room", "vechtkamer"}, -{"Mad Bomber", "Gekke bommengooier"}, -{"Kanalet moat", "Slotgracht Kanalet"}, -{"north", "noord"}, -{"sunken", "gezonken"}, -{"south", "zuid"}, -{"Cave south of Kanalet Castle", "Grot ten zuiden van kasteel Kanalet"}, -{"Kiki the monkey", "Kiki"}, -{"Seashell bush in Mabe Village", "Schelpenstruik in Meeuwendorp"}, -{"Mad Batter", "Duiveltje"}, -{"Mysterious Forest", "Dwaalwoud"}, -{"song", "liedje"}, -{"Martha the mermaid", "Zeemeermin Martha"}, -{"Mr. Write", "Dr. Write"}, -{"North of the Moblin cave", "Ten noorden van de Moblin-grot"}, -{"North of Tabahl Wasteland", "Ten noorden van het Tabahl-bos"}, -{"Rock maze in Ukuku Prairie", "Stenendoolhof op de Ukuku-prairie"}, -{"Island in the pond", "Eiland in de vijver"}, -{"last hole", "laatste gat"}, -{"cave on the climb", "grot op de klim"}, -{"east island", "oostelijk eiland"}, -{"middle island", "middelste eiland"}, -{"race under 30 s", "race onder 30 s"}, -{"race under 35 s", "race onder 35 s"}, -{"race under 45 s", "race onder 45 s"}, -{"south island", "zuidelijk eiland"}, -{"west island", "westelijk eiland"}, -{"Cave by the river crossing", "Grot bij de rivierovergang"}, -{"shelf", "plank"}, -{"Small island off the coast", "Klein eiland voor de kust"}, -{"South of Martha's Bay", "Ten zuiden van Martha's baai"}, -{"southwest of Martha's Bay", "ten zuidwesten van Martha's baai"}, -{"Chest in Goponga Swamp", "Kist in het Goponga-moeras"}, -{"Syrup the witch", "De heks"}, -{"Tree south of Tail Cave", "Boom ten zuiden van de Staartspelonk"}, -{"five chest game", "spel met vijf kisten"}, -{"bomb hole", "bomgat"}, -{"crossing cave", "doorgangsgrot"}, -{"east bridge", "oostelijke brug"}, -{"east drop", "oostelijke afgrond"}, -{"left chest", "linkerkist"}, -{"blocks at the entrance", "blokken bij de ingang"}, -{"chest at the entrance", "kist bij de ingang"}, -{"hole", "gat"}, -{"chest on the ledge", "kist op de richel"}, -{"cave on the left climb", "grot op de linkerklim"}, -{"cave by the rooster", "grot bij de haan"}, -{"way out", "uitweg"}, -{"under a rock", "onder een steen"}, -{"Tarin at the beehive", "Tarin bij de bijenkorf"}, -{"last prize", "laatste prijs"}, -{"Tree in Ukuku Prairie", "Boom op de Ukuku-prairie"}, -{"Ukuku cave", "Ukuku-grot"}, -{"east chest", "oostelijke kist"}, -{"east item", "oostelijk voorwerp"}, -{"west item", "westelijk voorwerp"}, -{"Under the skull rock", "Onder de schedelrots"}, -{"Cave by the villa", "Grot bij het huis van Richard"}, -{"Washed up on the beach", "Aangespoeld op het strand"}, -{"spot in Tabahl Wasteland", "plek in het Tabahl-bos"}, -{"Forest crossing cave", "Doorgangsgrot Dwaalwoud"}, -{"item", "voorwerp"}, -{"Forest north cave", "Noordelijke grot Dwaalwoud"}, -{"south chest", "zuidelijke kist"}, -{"Bush", "Struik"}, -{"spot", "plek"}, -{"Pot", "Pot"}, -{"Apple tree", "Appelboom"}, -{"Rock", "Steen"}, -{"Marin and Tarin's house", "het huis van Marin en Tarin"}, -{"the quadruplets' house", "het huis van de vierling"}, -{"the Southern Face Shrine", "de zuidelijke Maskerburcht"}, -{"the witch's hut", "het heksenhol"}, -{"the library", "de bibliotheek"}, -{"the Seashell Mansion", "het Schelpenpaleis"}, -{"a telephone booth", "een telefoonboom"}, -{"the Town Tool Shop", "de dorpswinkel"}, -{"the Dream Shrine", "de Droomtempel"}, -{"north-west", "noordwest"}, -{"north-east", "noordoost"}, -{"south-west", "zuidwest"}, -{"south-east", "zuidoost"}, -{"centre", "midden"}, -{"middle", "midden"}, -{"inside", "binnen"}, -{"Trendy Game: prize %s", "Speelhal: prijs %s"}, -{"Pot (%s)", "Pot (%s)"}, -{"%s of 3", "%s van 3"}, -{"Slime eye", "Reuzen-Zol"}, -{"Angler", "Schemervis"}, -{"Slime eel", "Duivelsmurene"}, -{"Master stalfos", "Stalfos-leider"}, -{"Eagle", "Stormarend"}, -{"Hothead", "Inferno"}, -{"Owl statue long hallway", "Uilenbeeld lange gang"}, -{"Owl statue spinies", "Uilenbeeld Spiny's"}, -{"Owl statue 3 of a kind", "Uilenbeeld Vegas"}, -{"Owl statue first switch", "Uilenbeeld eerste schakelaar"}, -{"Owl statue push puzzle", "Uilenbeeld duwpuzzel"}, -{"Owl statue past hinox", "Uilenbeeld voorbij Hinox"}, -{"Owl statue basement north", "Uilenbeeld kelder noord"}, -{"Owl statue arrow", "Uilenbeeld pijl"}, -{"Owl statue northwest", "Uilenbeeld noordwest"}, -{"Owl statue", "Uilenbeeld"}, -{"Owl statue triple stalfos", "Uilenbeeld drie Stalfos"}, -{"Owl statue before slime eel", "Uilenbeeld voor Duivelsmurene"}, -{"Owl statue ledge", "Uilenbeeld richel"}, -{"Owl statue southeast", "Uilenbeeld zuidoost"}, -{"Owl statue canal", "Uilenbeeld kanaal"}, -{"Owl statue ball", "Uilenbeeld bal"}, -{"Owl statue kirbys", "Uilenbeeld Kirby's"}, -{"Owl statue hookshot chest", "Uilenbeeld grijphaakkist"}, -{"Owl statue above smasher", "Uilenbeeld boven Smasher"}, -{"Owl statue below gibdos", "Uilenbeeld onder Gibdo's"}, -{"Owl statue eye statue", "Uilenbeeld oogbeeld"}, -{"Owl statue nine switches", "Uilenbeeld negen schakelaars"}, -{"Owl statue first switches", "Uilenbeeld eerste schakelaars"}, -{"Owl statue before mini boss", "Uilenbeeld voor tussenbaas"}, -{"Owl statue below D8", "Uilenbeeld onder K8"}, -// separators (tools/menu_strings.py) -{", ", ", "}, -{": ", ": "}, -// not used any more {"Set the buttons and keys for the game. F1, Esc, Home or Back + Start always open this menu.", "Stel de knoppen en toetsen voor het spel in. F1, Esc, HOME of Back + Start openen dit menu altijd."}, {"! This folder is synced by OneDrive", "! Deze map wordt gesynchroniseerd door OneDrive"}, {"About %.0f GB of game files will upload to your OneDrive.", "Ongeveer %.0f GB aan spelbestanden wordt naar je OneDrive geüpload."}, diff --git a/runtime/ui/lang/pt-BR.inc b/runtime/ui/lang/pt-BR.inc index a0b67c90e..2094831d2 100644 --- a/runtime/ui/lang/pt-BR.inc +++ b/runtime/ui/lang/pt-BR.inc @@ -226,13 +226,9 @@ {"Appearance", "Aparência"}, {"Layout", "Layout"}, {"Follow thumb", "Seguir o polegar"}, -{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Ativado: ele vai para onde seu polegar tocar, em qualquer ponto da parte inferior esquerda. Desligado: ele fica onde está (mova-o em Editar layout de toque)."}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it with the Layout button).", "Ativado: ele vai para onde seu polegar tocar, em qualquer ponto da parte inferior esquerda. Desligado: ele fica onde está (mova-o com o botão de layout)."}, {"Layout button", "Botão de layout"}, {"A button at the top, next to the menu button, that lets you move and resize the on-screen buttons.", "Um botão no topo, ao lado do botão do menu, para mover e redimensionar os botões na tela."}, -{"Load a save first.", "Carregue um arquivo salvo primeiro."}, -{"Edit touch layout", "Editar layout de toque"}, -{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Mova os botões na tela, mude o tamanho de cada um ou oculte-os, sobre o jogo. Disponível durante o jogo."}, {"Reset touch layout", "Redefinir layout de toque"}, {"Puts every on-screen button back in its place, at its size, shown.", "Volta cada botão na tela ao seu lugar e tamanho, visível."}, // runtime/ui/difficulty.mm @@ -691,6 +687,7 @@ {"The game's echo in caves, dungeons and big rooms.", "O eco do jogo em cavernas, masmorras e salas grandes."}, {"LAS Recomp menu sounds", "Sons do menu do LAS Recomp"}, {"Sounds when you move around and pick things in LAS Recomp's menus.", "Sons ao navegar e escolher nos menus do LAS Recomp."}, +{"Load a save first.", "Carregue um arquivo salvo primeiro."}, {"Quit", "Sair"}, {"Reset Game", "Reiniciar jogo"}, {"Progress since your last save is lost.", "Você vai perder o progresso desde a última vez que salvou."}, @@ -1090,6 +1087,8 @@ {"Reveal spoilers", "Mostrar spoilers"}, {"Search items and places", "Buscar itens e lugares"}, {"Search the spoiler log", "Buscar no registro de spoilers"}, +{"Useful items only", "Só itens úteis"}, +{"Hide checked", "Ocultar verificados"}, // runtime/ui/tracker_overlay.mm {"Seashells", "Conchas"}, {"%d Small Keys", "%d Chaves Pequenas"}, @@ -1122,7 +1121,6 @@ {"needs %s +%d", "precisa de %s +%d"}, {"Filter: %s", "Filtro: %s"}, {"In logic now", "Na lógica agora"}, -{"Hide checked", "Ocultar verificados"}, {"Filters", "Filtros"}, {"Room %c%d", "Sala %c%d"}, {"trick logic", "lógica com truques"}, @@ -1177,9 +1175,9 @@ {"This is where Manbo's Mambo drops you. You can't warp here directly.", "É aqui que o Mambo do Manbo te deixa. Não dá para se teleportar direto para cá."}, {"%d places", "%d lugares"}, {"Load a save to warp.", "Carregue um arquivo salvo para se teleportar."}, +{"Places", "Lugares"}, {"Search", "Buscar"}, {"Search places...", "Buscar lugares..."}, -{"Places", "Lugares"}, {"Link is here", "Link está aqui"}, // warp_data.h {"Dungeons", "Masmorras"}, @@ -1306,28 +1304,112 @@ {"Building game files (%s tasks)", "Criando arquivos do jogo (%s tarefas)"}, {"Triforce hunt: %s", "Caça à Triforce: %s"}, // spoiler_view.py -{"Settings: %s", "Configurações: %s"}, -{"Walkthrough", "Rota"}, -{"Items by area", "Itens por área"}, -{"Starting items: %s", "Itens iniciais: %s"}, +{"Route", "Rota"}, +{"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Só o necessário para concluir a seed. Cada parada pode ser alcançada com os itens das paradas anteriores."}, +{"Finish", "Final"}, +{"Everything useful step by step", "Tudo o que é útil, passo a passo"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Cada etapa pode ser feita com o que você tinha após as etapas anteriores (em qualquer ordem dentro de uma etapa)."}, {"Only items that open things up are listed; rupees", "Só aparecem itens que abrem caminho; rupias"}, {"traps and similar are left out.", "armadilhas e similares ficam de fora."}, -{"Finish", "Final"}, -{"With all eight instruments", "Com os oito instrumentos"}, -{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "toque a Balada do Peixe do Vento diante do ovo nas Montanhas Tal Tal."}, -{"(No walkthrough", "(Sem rota"}, -{"this seed has no request.json to recompute it.)", "esta seed não tem request.json para recalcular.)"}, +{"Items by area", "Itens por área"}, +{"Dungeon rooms", "Salas das masmorras"}, +{"Where each moved room is now and where it came from.", "Onde cada sala movida está agora e de onde ela veio."}, {"Entrances", "Entradas"}, -{"%s entrance leads into %s", "A entrada de %s leva a %s"}, -{"%s:", "%s:"}, {"Doors", "Portas"}, -{"door -> interior it now leads into", "porta -> interior para onde ela leva agora"}, +{"each door and where it now leads", "cada porta e para onde ela leva agora"}, +{"Settings: %s", "Configurações: %s"}, +{"(This seed has no step list.)", "(Esta seed não tem lista de passos.)"}, +{"%s entrance leads into %s", "A entrada de %s leva a %s"}, +{"Unchanged (%s)", "Inalteradas (%s)"}, {"Exits", "Saídas"}, -{"interior -> where leaving it puts you", "interior -> onde você aparece ao sair"}, +{"each way out and where it puts you", "cada saída e onde ela te leva"}, +{"Starting items: %s", "Itens iniciais: %s"}, +{"%s:", "%s:"}, +{"Small items (%s)", "Itens pequenos (%s)"}, {"%s - enter through %s's entrance", "%s - entre pela entrada de %s"}, {"%s's Soul", "Alma de %s"}, {"%s' Soul", "Alma de %s"}, +{"room %s", "sala %s"}, +{"The last of the %s Triforce pieces you need ends the game.", "O último dos %s pedaços da Triforce necessários termina o jogo."}, +{"2nd", "2º"}, +{"shelf", "prateleira"}, +{"second item", "segundo item"}, +{"third item", "terceiro item"}, +{"west side door", "porta do lado oeste"}, +{"east side door", "porta do lado leste"}, +{"Fire cave", "Caverna do fogo"}, +{"north door", "porta norte"}, +{"south door", "porta sul"}, +{"Wind Fish's egg", "Ovo do Peixe do Vento"}, +{"rooster house", "casa do galo"}, +{"Telephone booth by Turtle Rock", "Cabine telefônica perto da Rocha da Tartaruga"}, +{"Mad Batter well", "Poço do Morcego Maluco"}, +{"Tal Tal crossing cave", "Caverna de travessia de Tal Tal"}, +{"west door", "porta oeste"}, +{"east door", "porta leste"}, +{"Mountain cave", "Caverna da montanha"}, +{"bottom door", "porta do fundo"}, +{"top door", "porta do topo"}, +{"ledge door", "porta da plataforma"}, +{"Papahl's cave", "Caverna do Papahl"}, +{"lower door", "porta inferior"}, +{"upper door", "porta superior"}, +{"Bird Key cave", "Caverna da Chave do Pássaro"}, +{"Five chest cave", "Caverna dos cinco baús"}, +{"Five chest game", "Jogo dos cinco baús"}, +{"exit door", "porta de saída"}, +{"Rainbow cave", "Caverna do arco-íris"}, +{"outer west door", "porta oeste externa"}, +{"inner west door", "porta oeste interna"}, +{"inner east door", "porta leste interna"}, +{"outer east door", "porta leste externa"}, +{"Fairy fountain", "Fonte da Grande Fada"}, +{"Tal Tal east", "Tal Tal leste"}, +{"Cave to Eagle's Tower", "Caverna para a Torre da Águia"}, +{"Cave by Angler's Tunnel", "Caverna ao lado do Túnel do Pescador"}, +{"Damp cave", "Caverna úmida"}, +{"Raft cave", "Caverna da balsa"}, +{"Telephone booth", "Cabine telefônica"}, +{"Moblin cave", "Caverna dos Moblins"}, +{"Dampe's house", "Casa do Dampé"}, +{"Rapids Ride raft shop", "Loja de balsas das Corredeiras"}, +{"Mysterious Forest", "Floresta Misteriosa"}, +{"north cave", "caverna do norte"}, +{"Kanalet tunnel", "Túnel de Kanalet"}, +{"Telephone booth by Kanalet Castle", "Cabine telefônica perto do Castelo Kanalet"}, +{"roof west door", "porta oeste do telhado"}, +{"roof east door", "porta leste do telhado"}, +{"front door", "porta da frente"}, +{"Cave south of Kanalet Castle", "Caverna ao sul do Castelo Kanalet"}, +{"Forest crossing cave", "Caverna de travessia da floresta"}, +{"forest", "floresta"}, +{"north side door", "porta do lado norte"}, +{"Ukuku cave", "Caverna de Ukuku"}, +{"Ukuku Prairie north", "Pradaria Ukuku norte"}, +{"Ukuku Prairie west", "Pradaria Ukuku oeste"}, +{"Cave to Face Shrine", "Caverna para o Santuário da Face"}, +{"Fairy fountain by the Armos maze", "Fonte da Grande Fada perto do Labirinto dos Armos"}, +{"Flying Rooster's grave", "Túmulo do Galo Voador"}, +{"River crossing cave", "Caverna da travessia do rio"}, +{"Armos maze cave", "Caverna do Labirinto dos Armos"}, +{"BowWow's kennel", "Casinha do Bow-wow"}, +{"Marin and Tarin's house", "Casa de Marin e Tarin"}, +{"Mabe Village library", "Biblioteca da Vila Mabe"}, +{"Cliff cave by the bay", "Caverna do penhasco perto da baía"}, +{"plateau door", "porta do planalto"}, +{"Cave behind Richard's villa", "Caverna atrás do Casarão do Richard"}, +{"rabbit house", "casa dos coelhos"}, +{"Zora's house", "Casa do Zora"}, +{"bombed cave", "caverna aberta com bomba"}, +{"Lanmola cave", "Caverna do Lanmola"}, +{"east dive spot", "ponto de mergulho leste"}, +{"west dive spot", "ponto de mergulho oeste"}, +{"Sale's banana house", "Casa das Bananas do Sale"}, +{"bay", "baía"}, +{"Tunnel to the bay Mad Batter", "Túnel para o Morcego Maluco da baía"}, +{"Mermaid statue", "Estátua da sereia"}, +{"Boomerang cave", "Caverna do Bumerangue"}, +{"Ghost's house", "Casa do fantasma"}, {"Signpost Maze", "Labirinto de Placas"}, {"Ancient Ruins", "Ruínas Antigas"}, {"west", "oeste"}, @@ -1338,98 +1420,180 @@ {"50 Rupees", "50 Rupias"}, {"100 Rupees", "100 Rupias"}, {"300 Rupees", "300 Rupias"}, +{"1 Rupee", "1 Rupia"}, {"Trap!", "Armadilha!"}, {"Frog Song of Soul", "Canção da Alma do Sapo"}, {"Chamber Stone", "Pedra de Câmara"}, +{"Triforce piece", "Pedaço da Triforce"}, {"Beach chest", "Baú da praia"}, +{"Chest on the beach", "Baú na praia"}, {"Taltal entrance chest", "Baú da entrada de Tal Tal"}, +{"chest at the entrance", "baú da entrada"}, {"Taltal east left chest", "Baú esquerdo do leste de Tal Tal"}, +{"left chest", "baú esquerdo"}, {"Dream shrine right", "Santuário dos Sonhos, direita"}, +{"right", "direita"}, {"Armos cave", "Caverna dos Armos"}, {"Goponga cave left", "Caverna de Goponga, esquerda"}, +{"left", "esquerda"}, {"Goponga cave right", "Caverna de Goponga, direita"}, {"Ukuku cave west chest", "Baú oeste da caverna de Ukuku"}, +{"west chest", "baú oeste"}, {"Ukuku cave east chest", "Baú leste da caverna de Ukuku"}, +{"east chest", "baú leste"}, {"Kanalet south cave", "Caverna ao sul de Kanalet"}, {"Swamp chest", "Baú do pântano"}, +{"Chest in Goponga Swamp", "Baú no Pântano Goponga"}, {"Taltal left ascent cave", "Caverna da subida esquerda de Tal Tal"}, +{"cave on the left climb", "caverna da subida esquerda"}, {"Taltal ledge chest", "Baú da plataforma de Tal Tal"}, +{"chest on the ledge", "baú na plataforma"}, {"Taltal 5 chest puzzle", "Desafio dos 5 baús de Tal Tal"}, +{"five chest game", "jogo dos cinco baús"}, {"Taltal west chest", "Baú oeste de Tal Tal"}, {"Villa cave", "Caverna da vila"}, +{"Cave by the villa", "Caverna perto da vila"}, {"Woods crossing cave chest", "Baú da caverna de travessia da floresta"}, +{"chest", "baú"}, {"Woods north cave chest", "Baú da caverna norte da floresta"}, +{"Forest north cave", "Caverna norte da floresta"}, {"Woods south chest", "Baú sul da floresta"}, +{"south chest", "baú sul"}, {"Woods north chest", "Baú norte da floresta"}, +{"north chest", "baú norte"}, {"Fishing", "Pesca"}, +{"Fishing pond", "Lago de pesca"}, +{"50 points", "50 pontos"}, {"Fishing orange", "Pesca: peixe laranja"}, +{"orange fish", "peixe laranja"}, {"Fishing loose", "Pesca: item solto"}, +{"loose item", "item solto"}, +{"100 points", "100 pontos"}, +{"150 points", "150 pontos"}, {"Fishing cheep cheep", "Pesca: Cheep Cheep"}, +{"Cheep Cheep", "Cheep Cheep"}, {"Fishing ol baron", "Pesca: Ol' Baron"}, +{"Ol' Baron", "Ol' Baron"}, {"Rapids race", "Corrida das corredeiras"}, +{"race under 45 s", "corrida em menos de 45 s"}, +{"race under 35 s", "corrida em menos de 35 s"}, +{"race under 30 s", "corrida em menos de 30 s"}, {"Rapids middle island", "Ilha central das corredeiras"}, +{"middle island", "ilha central"}, {"Rapids west island", "Ilha oeste das corredeiras"}, +{"west island", "ilha oeste"}, {"Dampe page", "Página do Dampe"}, +{"Dampe", "Dampe"}, +{"first page", "primeira página"}, {"Dampe heart challenge", "Desafio dos corações do Dampe"}, +{"Dampe's heart challenge", "Desafio dos corações do Dampe"}, +{"second page", "segunda página"}, {"Dampe bottle challenge", "Desafio do frasco do Dampe"}, +{"Dampe's bottle challenge", "Desafio do frasco do Dampe"}, {"Dampe final", "Desafio final do Dampe"}, +{"Dampe's final challenge", "Desafio final do Dampe"}, {"Walrus", "Morsa"}, {"Ghost reward", "Recompensa do fantasma"}, +{"Ghost's reward", "Recompensa do fantasma"}, +{"song", "canção"}, {"Manbo", "Manbo"}, {"Mamu", "Mamu"}, {"Mad batter bay", "Morcego Maluco da baía"}, +{"Mad Batter", "Morcego Maluco"}, {"Mad batter taltal", "Morcego Maluco de Tal Tal"}, {"Mad batter woods", "Morcego Maluco da floresta"}, {"Invisible zora", "Zora invisível"}, +{"Invisible Zora", "Zora invisível"}, {"Goriya trader", "Troca com o Goriya"}, +{"Goriya", "Goriya"}, +{"trade", "troca"}, {"Mamasha", "Mamasha"}, {"Ciao ciao", "Ciao Ciao"}, +{"Ciao Ciao", "Ciao Ciao"}, {"Sale", "Sale"}, {"Kiki", "Kiki"}, +{"Kiki the monkey", "Kiki, o macaco"}, {"Tarin ukuku", "Tarin em Ukuku"}, +{"Tarin at the beehive", "Tarin na colmeia"}, {"Chef bear", "Chef Urso"}, +{"Chef Bear", "Chef Urso"}, {"Papahl", "Papahl"}, {"Christine trade", "Troca com a Christine"}, +{"Christine", "Christine"}, {"Christine grateful", "Presente da Christine"}, +{"thank-you gift", "presente de agradecimento"}, {"Mr write", "Mr. Write"}, +{"Mr. Write", "Mr. Write"}, {"Grandma yahoo", "Vovó Yahoo"}, +{"Grandma Yahoo", "Vovó Yahoo"}, +{"broom", "vassoura"}, {"Bay fisherman", "Pescador da baía"}, +{"Fisherman under the bridge", "Pescador embaixo da ponte"}, {"Mermaid martha", "Sereia Martha"}, +{"Martha the mermaid", "Martha, a sereia"}, {"Mermaid cave", "Caverna da sereia"}, {"Lanmola", "Lanmola"}, {"Armos knight", "Cavaleiro Armos"}, +{"Armos Knight", "Cavaleiro Armos"}, {"Washed up", "Na praia"}, +{"Washed up on the beach", "Na praia"}, {"Dream shrine left", "Santuário dos Sonhos, esquerda"}, {"Taltal rooster cave", "Caverna do galo de Tal Tal"}, +{"cave by the rooster", "caverna perto do galo"}, {"Woods loose", "Item solto da floresta"}, {"Pothole final", "Último buraco da plantação"}, +{"last hole", "último buraco"}, {"5 seashell reward", "Prêmio de 5 conchas"}, +{"5 shells", "5 conchas"}, {"15 seashell reward", "Prêmio de 15 conchas"}, +{"15 shells", "15 conchas"}, {"30 seashell reward", "Prêmio de 30 conchas"}, +{"30 shells", "30 conchas"}, {"40 seashell reward", "Prêmio de 40 conchas"}, +{"40 shells", "40 conchas"}, {"50 seashell reward", "Prêmio de 50 conchas"}, +{"50 shells", "50 conchas"}, {"Animal village northwest", "Noroeste da Vila dos Animais"}, +{"Northwest of Animal Village", "Noroeste da Vila dos Animais"}, {"Animal village cave", "Caverna da Vila dos Animais"}, +{"Cave by Animal Village", "Caverna perto da Vila dos Animais"}, {"Taltal entrance blocks", "Blocos da entrada de Tal Tal"}, +{"blocks at the entrance", "blocos da entrada"}, {"North wasteland", "Norte da terra desolada"}, +{"North of Tabahl Wasteland", "Norte da Ermo de Tabahl"}, {"Desert cave", "Caverna do deserto"}, +{"Cave in Yarna Desert", "Caverna no Deserto de Yarna"}, {"Graveyard cave", "Caverna do cemitério"}, +{"Cave under the Cemetery", "Caverna sob o cemitério"}, {"Mabe well", "Poço de Mabe"}, {"Ukuku cave west loose", "Item solto oeste da caverna de Ukuku"}, +{"west item", "item oeste"}, {"Ukuku cave east loose", "Item solto leste da caverna de Ukuku"}, +{"east item", "item leste"}, {"Rapids ascent cave", "Caverna da subida das corredeiras"}, +{"cave on the climb", "caverna da subida"}, {"Taltal crossing cave", "Caverna de travessia de Tal Tal"}, +{"crossing cave", "caverna de travessia"}, {"Taltal west escape", "Saída oeste de Tal Tal"}, +{"way out", "saída"}, {"Above turtle rock", "Acima da Rocha da Tartaruga"}, +{"Ledge above Turtle Rock", "Plataforma acima da Rocha da Tartaruga"}, {"Pothole north", "Norte da plantação"}, +{"north", "norte"}, {"Woods crossing cave loose", "Item solto da caverna de travessia da floresta"}, +{"item", "item"}, {"Woods north cave loose", "Item solto da caverna norte da floresta"}, {"Diamond island", "Ilha do losango"}, {"Kanalet crow", "Corvo de Kanalet"}, +{"crow", "corvo"}, {"Kanalet mad bomber", "Bombardeiro Maluco de Kanalet"}, +{"Mad Bomber", "Bombardeiro Maluco"}, {"Kanalet kill room", "Sala de combate de Kanalet"}, +{"fight room", "sala de combate"}, {"Kanalet bombed guard", "Guarda bombardeado de Kanalet"}, +{"bombed guard", "guarda bombardeado"}, {"Kanalet final guard", "Último guarda de Kanalet"}, +{"last guard", "último guarda"}, {"Owl statue moblin cave", "Estátua de coruja da caverna dos Moblins"}, {"Owl statue pothole", "Estátua de coruja da plantação"}, {"Owl statue above cave", "Estátua de coruja acima da caverna"}, @@ -1438,8 +1602,222 @@ {"Owl statue maze", "Estátua de coruja do labirinto"}, {"Owl statue rapids", "Estátua de coruja das corredeiras"}, {"Owl statue taltal east", "Estátua de coruja do leste de Tal Tal"}, +{"Instrument", "Instrumento"}, +{"Moldorm", "Moldorm"}, +{"West hallway", "Corredor oeste"}, +{"Middle ledge", "Plataforma do meio"}, +{"3 of a kind", "trio igual"}, +{"Bomb room", "Sala das bombas"}, +{"Middle kill chest", "Baú do combate do meio"}, +{"Spark chest", "Baú da faísca"}, +{"Button chest", "Baú do botão"}, +{"Stalfos chest", "Baú dos Stalfos"}, +{"4 zols chest", "baú dos 4 Zols"}, +{"Beetles", "Besouros"}, +{"Owl statue long hallway", "Estátua de coruja do corredor longo"}, +{"Owl statue spinies", "Estátua de coruja dos Spinies"}, +{"Owl statue 3 of a kind", "Estátua de coruja do trio igual"}, +{"Genie", "Gênio"}, +{"Boos", "Boos"}, +{"Long room west", "Sala longa oeste"}, +{"Long room east", "Sala longa leste"}, +{"Vacuum mouth room", "Sala do Vacuum Mouth"}, +{"Kill puzzle", "Desafio de combate"}, +{"West chest", "Baú oeste"}, +{"Double stalfos", "Dois Stalfos"}, +{"Double shy guys", "Dois Shy Guys"}, +{"Entrance chest", "Baú da entrada"}, +{"Single shy guy", "Um Shy Guy"}, +{"Peg circle", "Círculo de pinos"}, +{"Owl statue first switch", "Estátua de coruja do primeiro interruptor"}, +{"Owl statue push puzzle", "Estátua de coruja do desafio de empurrar"}, +{"Owl statue past hinox", "Estátua de coruja depois do Hinox"}, +{"Slime eye", "Slime Eye"}, +{"Pre boss", "Antes do chefe"}, +{"Triple bombites", "Três Bombites"}, +{"North chest", "Baú norte"}, +{"Central ledge", "Plataforma central"}, +{"Central chest", "Baú central"}, +{"East ledge", "Plataforma leste"}, +{"Pairodds", "Pairodds"}, +{"Five zols", "Cinco Zols"}, +{"Basement north", "Porão norte"}, +{"Basement west", "Porão oeste"}, +{"Basement south", "Porão sul"}, +{"Hallway", "Corredor"}, +{"Hallway side room", "Sala lateral do corredor"}, +{"Vacuum mouth", "Vacuum Mouth"}, +{"Owl statue basement north", "Estátua de coruja do porão norte"}, +{"Owl statue arrow", "Estátua de coruja da flecha"}, +{"Owl statue northwest", "Estátua de coruja do noroeste"}, +{"Angler", "Pescador"}, +{"East side north", "Lado leste, norte"}, +{"East side south", "Lado leste, sul"}, +{"West ledge", "Plataforma oeste"}, +{"East of puzzle", "Leste do desafio"}, +{"South of puzzle", "Sul do desafio"}, +{"Sunken item", "Item submerso"}, +{"Central room", "Sala central"}, +{"Small island", "Ilhota"}, +{"Ledge north", "Plataforma norte"}, +{"Statues chest", "Baú das estátuas"}, +{"Lobby", "Saguão"}, +{"Crystals", "Cristais"}, +{"Owl statue", "Estátua de coruja"}, +{"Slime eel", "Slime Eel"}, +{"Master stalfos", "Mestre Stalfos"}, +{"Crystal blocks", "Blocos de cristal"}, +{"Past master stalfos", "Depois do Mestre Stalfos"}, +{"Water tunnel", "Túnel de água"}, +{"Right side north", "Lado direito, norte"}, +{"Right side middle", "Lado direito, meio"}, +{"Right side east", "Lado direito, leste"}, +{"Helmasaurs", "Helmasaurs"}, +{"West stairs chest", "Baú da escada oeste"}, +{"Near entrance", "Perto da entrada"}, +{"Owl statue triple stalfos", "Estátua de coruja dos três Stalfos"}, +{"Owl statue before slime eel", "Estátua de coruja antes do Slime Eel"}, +{"Facade", "Facade"}, +{"Far northwest", "Extremo noroeste"}, +{"Far northeast", "Extremo nordeste"}, +{"Statue line north", "Fileira de estátuas norte"}, +{"Statue line south", "Fileira de estátuas sul"}, +{"Wizzrobe pegs", "Pinos dos Wizzrobes"}, +{"Canal", "Canal"}, +{"3 wizzrobes", "três Wizzrobes"}, +{"Tile room", "Sala dos ladrilhos"}, +{"Gated hallway north", "Corredor com grade norte"}, +{"Gated hallway south", "Corredor com grade sul"}, +{"Southwest chest", "Baú sudoeste"}, +{"Wizzrobes ledge", "Plataforma dos Wizzrobes"}, +{"Owl statue ledge", "Estátua de coruja da plataforma"}, +{"Owl statue southeast", "Estátua de coruja do sudeste"}, +{"Owl statue canal", "Estátua de coruja do canal"}, +{"Eagle", "Águia"}, +{"Like likes", "Like Likes"}, +{"1f west", "1º andar oeste"}, +{"3ofakind north", "trio igual norte"}, +{"2f horseheads", "cabeças de cavalo do 2º andar"}, +{"Hinox", "Hinox"}, +{"3ofakind south", "trio igual sul"}, +{"Blue pegs chest", "Baú dos pinos azuis"}, +{"3f horseheads", "cabeças de cavalo do 3º andar"}, +{"Grim creeper", "Grim Creeper"}, +{"Owl statue ball", "Estátua de coruja da bola"}, +{"Owl statue kirbys", "Estátua de coruja dos Kirbys"}, +{"Owl statue hookshot chest", "Estátua de coruja do baú do Gancho"}, +{"Hothead", "Hot Head"}, +{"Left exit chest", "Baú da saída esquerda"}, +{"Dodongos", "Dodongos"}, +{"Northern ledge", "Plataforma do norte"}, +{"Gibdos", "Gibdos"}, +{"Beamos chest", "Baú do Beamos"}, +{"Statue", "Estátua"}, +{"Torches", "Tochas"}, +{"West vire", "Vire oeste"}, +{"West roomba", "Roomba oeste"}, +{"Surrounded by blocks", "Cercado por blocos"}, +{"Sparks chest", "Baú das faíscas"}, +{"East of pots", "Leste dos potes"}, +{"East roomba", "Roomba leste"}, +{"Far southwest", "Extremo sudoeste"}, +{"Far southeast", "Extremo sudeste"}, +{"Owl statue above smasher", "Estátua de coruja acima do Smasher"}, +{"Owl statue below gibdos", "Estátua de coruja abaixo dos Gibdos"}, +{"Owl statue eye statue", "Estátua de coruja da estátua do olho"}, +{"Northern chest", "Baú do norte"}, +{"Zol pots", "Potes com Zols"}, +{"North orbs", "Orbes do norte"}, +{"South orbs", "Orbes do sul"}, +{"East color puzzle", "Desafio das cores leste"}, +{"West color puzzle", "Desafio das cores oeste"}, +{"Putters", "Putters"}, +{"Owl statue nine switches", "Estátua de coruja dos nove interruptores"}, +{"Owl statue first switches", "Estátua de coruja dos primeiros interruptores"}, +{"Owl statue before mini boss", "Estátua de coruja antes do subchefe"}, +{"Rupee", "Rupia"}, {"stone beak", "bico de pedra"}, -// spoiler logs +// tracker.py +{"spot above the cave", "ponto acima da caverna"}, +{"spot above Key Cavern", "ponto acima da Caverna da Chave"}, +{"Sunken item in the bay passage", "Item submerso na passagem da baía"}, +{"Tree on the beach", "Árvore na praia"}, +{"bonk", "trombada"}, +{"spot on the beach", "ponto na praia"}, +{"Beside the Seashell Mansion", "Ao lado da Mansão das Conchas"}, +{"spot in Yarna Desert", "ponto no Deserto de Yarna"}, +{"South of Yarna Desert", "Sul do Deserto de Yarna"}, +{"BowWow's doghouse", "Casinha do BowWow"}, +{"dig", "escavação"}, +{"Ghost's grave", "Túmulo do fantasma"}, +{"Pot in %s", "Pote em %s"}, +{"the Ghost's house", "a casa do fantasma"}, +{"West of Goponga Swamp", "Oeste do Pântano Goponga"}, +{"Kanalet moat", "Fosso de Kanalet"}, +{"sunken", "submerso"}, +{"south", "sul"}, +{"Seashell bush in Mabe Village", "Arbusto com concha na Vila Mabe"}, +{"North of the Moblin cave", "Norte da caverna dos Moblins"}, +{"Rock maze in Ukuku Prairie", "Labirinto de pedras na Pradaria Ukuku"}, +{"Island in the pond", "Ilha no lago"}, +{"east island", "ilha leste"}, +{"south island", "ilha sul"}, +{"Cave by the river crossing", "Caverna perto da travessia do rio"}, +{"Rock maze", "Labirinto de pedras"}, +{"Small island off the coast", "Ilhota perto da costa"}, +{"South of Martha's Bay", "Sul da Baía de Martha"}, +{"southwest of Martha's Bay", "sudoeste da Baía de Martha"}, +{"Syrup the witch", "Syrup, a bruxa"}, +{"Tree south of Tail Cave", "Árvore ao sul da Caverna da Cauda"}, +{"bomb hole", "buraco de bomba"}, +{"east bridge", "ponte leste"}, +{"east drop", "queda leste"}, +{"hole", "buraco"}, +{"sunken item", "item submerso"}, +{"under a rock", "sob uma pedra"}, +{"Tarin", "Tarin"}, +{"last prize", "último prêmio"}, +{"Tree in Ukuku Prairie", "Árvore na Pradaria Ukuku"}, +{"Under the skull rock", "Sob a pedra-caveira"}, +{"spot in Tabahl Wasteland", "ponto na Ermo de Tabahl"}, +{"Bush", "Arbusto"}, +{"spot", "ponto"}, +{"Pot", "Pote"}, +{"Apple tree", "Macieira"}, +{"Rock", "Pedra"}, +{"the quadruplets' house", "a casa dos quadrigêmeos"}, +{"the Southern Face Shrine", "o sul do Santuário da Face"}, +{"the witch's hut", "a cabana da bruxa"}, +{"the library", "a biblioteca"}, +{"the Seashell Mansion", "a Mansão das Conchas"}, +{"a telephone booth", "uma cabine telefônica"}, +{"the Town Tool Shop", "a Loja de Ferramentas"}, +{"the Dream Shrine", "o Santuário dos Sonhos"}, +{"north-west", "noroeste"}, +{"north-east", "nordeste"}, +{"south-west", "sudoeste"}, +{"south-east", "sudeste"}, +{"centre", "centro"}, +{"middle", "meio"}, +{"inside", "dentro"}, +{"Trendy Game: prize %s", "Jogo Moderno: prêmio %s"}, +{"Pot (%s)", "Pote (%s)"}, +{"%s of 3", "%s de 3"}, +{"Owl statue below D8", "Estátua de coruja abaixo da M8"}, +// separators (tools/menu_strings.py) +{", ", ", "}, +{": ", ": "}, +// not used any more +{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Ativado: ele vai para onde seu polegar tocar, em qualquer ponto da parte inferior esquerda. Desligado: ele fica onde está (mova-o em Editar layout de toque)."}, +{"Edit touch layout", "Editar layout de toque"}, +{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Mova os botões na tela, mude o tamanho de cada um ou oculte-os, sobre o jogo. Disponível durante o jogo."}, +{"Walkthrough", "Rota"}, +{"With all eight instruments", "Com os oito instrumentos"}, +{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "toque a Balada do Peixe do Vento diante do ovo nas Montanhas Tal Tal."}, +{"(No walkthrough", "(Sem rota"}, +{"this seed has no request.json to recompute it.)", "esta seed não tem request.json para recalcular.)"}, +{"door -> interior it now leads into", "porta -> interior para onde ela leva agora"}, +{"interior -> where leaving it puts you", "interior -> onde você aparece ao sair"}, {"boss cutscenes", "cenas dos chefes"}, {"enemy minibosses", "subchefes entre os inimigos"}, {"escape bottle", "frasco de fuga"}, @@ -1463,8 +1841,6 @@ {"Mabe bushes", "Arbustos de Mabe"}, {"Shop slot3 1st", "Loja, espaço 3, 1º"}, {"Shop slot3 2nd", "Loja, espaço 3, 2º"}, -{"Tarin", "Tarin"}, -{"Rock maze", "Labirinto de pedras"}, {"double stalfos", "dois Stalfos"}, {"putters", "Putters"}, {"south orbs", "orbes do sul"}, @@ -1533,12 +1909,9 @@ {"past master stalfos", "depois do Mestre Stalfos"}, {"right side east", "lado direito, leste"}, {"water tunnel", "túnel de água"}, -{"west chest", "baú oeste"}, -{"3 wizzrobes", "três Wizzrobes"}, {"statue line north", "fileira de estátuas norte"}, {"wizzrobe pegs", "pinos dos Wizzrobes"}, {"central room", "sala central"}, -{"north chest", "baú norte"}, {"Stalfos Note", "Bilhete do Stalfos"}, {"south of puzzle", "sul do desafio"}, {"west ledge", "plataforma oeste"}, @@ -1548,7 +1921,6 @@ {"middle kill chest", "baú do combate do meio"}, {"stalfos chest", "baú dos Stalfos"}, {"angler", "Pescador"}, -{"3 of a kind", "trio igual"}, {"middle ledge", "plataforma do meio"}, {"moldorm", "Moldorm"}, {"west hallway", "corredor oeste"}, @@ -1557,10 +1929,8 @@ {"tile room", "sala dos ladrilhos"}, {"wizzrobes ledge", "plataforma dos Wizzrobes"}, {"Rooster statue", "Estátua do galo"}, -{"Moblin cave", "Caverna dos Moblins"}, {"Bow Wow", "BowWow"}, {"like likes", "Like Likes"}, -{"chest", "baú"}, {"Taltal bomb hole", "Buraco de bomba de Tal Tal"}, {"Taltal east bridge", "Ponte leste de Tal Tal"}, {"Taltal west dig", "Escavação oeste de Tal Tal"}, @@ -1578,11 +1948,9 @@ {"west roomba", "Roomba oeste"}, {"west vire", "Vire oeste"}, {"Squish Trap", "Armadilha de esmagamento"}, -{"2f horseheads", "cabeças de cavalo do 2º andar"}, {"blue pegs chest", "baú dos pinos azuis"}, {"east ledge", "plataforma leste"}, {"grim creeper", "Grim Creeper"}, -{"3f horseheads", "cabeças de cavalo do 3º andar"}, {"Shop slot5 3rd", "Loja, espaço 5, 3º"}, {"Shop slot5 4th", "Loja, espaço 5, 4º"}, {"Shop slot5 5th", "Loja, espaço 5, 5º"}, @@ -1591,7 +1959,6 @@ {"final", "final"}, {"Shop slot6", "Loja, espaço 6"}, {"Taltal east drop", "Queda leste de Tal Tal"}, -{"River crossing cave", "Caverna da travessia do rio"}, {"South bay sunken", "Item submerso do sul da baía"}, {"Kanalet moat north", "Fosso de Kanalet norte"}, {"Rapids south island", "Ilha sul das corredeiras"}, @@ -1599,7 +1966,6 @@ {"north orbs", "orbes do norte"}, {"east color puzzle", "desafio das cores leste"}, {"spark chest", "baú da faísca"}, -{"4 zols chest", "baú dos 4 Zols"}, {"genie", "Gênio"}, {"long room west", "sala longa oeste"}, {"entrance chest", "baú da entrada"}, @@ -1607,7 +1973,6 @@ {"peg circle", "círculo de pinos"}, {"basement north", "porão norte"}, {"east of puzzle", "leste do desafio"}, -{"sunken item", "item submerso"}, {"ledge north", "plataforma norte"}, {"statues chest", "baú das estátuas"}, {"crystals", "cristais"}, @@ -1623,10 +1988,7 @@ {"gated hallway south", "corredor com grade sul"}, {"southwest chest", "baú sudoeste"}, {"eagle", "Águia"}, -{"1f west", "1º andar oeste"}, -{"3ofakind north", "trio igual norte"}, {"hinox", "Hinox"}, -{"3ofakind south", "trio igual sul"}, {"hothead", "Hot Head"}, {"gibdos", "Gibdos"}, {"statue", "estátua"}, @@ -1719,18 +2081,14 @@ {"trendsanity", "prêmios do Jogo Moderno"}, {"Slime Eel", "Slime Eel"}, {"Evil Orb", "Orbe Maligno"}, -{"Genie", "Gênio"}, -{"Facade", "Facade"}, {"Evil Eagle", "Águia Maligna"}, {"Slime Eye", "Slime Eye"}, {"Angler Fish", "Peixe-Pescador"}, {"Hot Head", "Hot Head"}, -{"Moldorm", "Moldorm"}, {"enemy bosses", "chefes entre os inimigos"}, {"miniboss souls", "almas de subchefes"}, {"Blaino", "Blaino"}, {"Grim Creeper", "Grim Creeper"}, -{"Hinox", "Hinox"}, {"Smasher", "Smasher"}, {"Dodongo Snakes", "Cobras Dodongo"}, {"Avalaunch", "Avalaunch"}, @@ -1742,188 +2100,6 @@ {"ghost item", "fantasma como item"}, {"tunic upgrades", "túnicas como melhorias"}, {"digs", "escavações"}, -{"Rupee", "Rupia"}, -// tracker.py -{"5 shells", "5 conchas"}, -{"15 shells", "15 conchas"}, -{"30 shells", "30 conchas"}, -{"40 shells", "40 conchas"}, -{"50 shells", "50 conchas"}, -{"spot above the cave", "ponto acima da caverna"}, -{"spot above Key Cavern", "ponto acima da Caverna da Chave"}, -{"Ledge above Turtle Rock", "Plataforma acima da Rocha da Tartaruga"}, -{"Cave by Animal Village", "Caverna perto da Vila dos Animais"}, -{"Northwest of Animal Village", "Noroeste da Vila dos Animais"}, -{"Armos Knight", "Cavaleiro Armos"}, -{"Fisherman under the bridge", "Pescador embaixo da ponte"}, -{"Sunken item in the bay passage", "Item submerso na passagem da baía"}, -{"Tree on the beach", "Árvore na praia"}, -{"bonk", "trombada"}, -{"Chest on the beach", "Baú na praia"}, -{"spot on the beach", "ponto na praia"}, -{"Beside the Seashell Mansion", "Ao lado da Mansão das Conchas"}, -{"Chef Bear", "Chef Urso"}, -{"Christine", "Christine"}, -{"thank-you gift", "presente de agradecimento"}, -{"trade", "troca"}, -{"Ciao Ciao", "Ciao Ciao"}, -{"Dampe's bottle challenge", "Desafio do frasco do Dampe"}, -{"Dampe's final challenge", "Desafio final do Dampe"}, -{"Dampe's heart challenge", "Desafio dos corações do Dampe"}, -{"Dampe", "Dampe"}, -{"first page", "primeira página"}, -{"second page", "segunda página"}, -{"Cave in Yarna Desert", "Caverna no Deserto de Yarna"}, -{"spot in Yarna Desert", "ponto no Deserto de Yarna"}, -{"South of Yarna Desert", "Sul do Deserto de Yarna"}, -{"BowWow's doghouse", "Casinha do BowWow"}, -{"dig", "escavação"}, -{"left", "esquerda"}, -{"right", "direita"}, -{"Fishing pond", "Lago de pesca"}, -{"100 points", "100 pontos"}, -{"150 points", "150 pontos"}, -{"50 points", "50 pontos"}, -{"Cheep Cheep", "Cheep Cheep"}, -{"loose item", "item solto"}, -{"Ol' Baron", "Ol' Baron"}, -{"orange fish", "peixe laranja"}, -{"Ghost's grave", "Túmulo do fantasma"}, -{"Pot in %s", "Pote em %s"}, -{"the Ghost's house", "a casa do fantasma"}, -{"Ghost's reward", "Recompensa do fantasma"}, -{"West of Goponga Swamp", "Oeste do Pântano Goponga"}, -{"Goriya", "Goriya"}, -{"Grandma Yahoo", "Vovó Yahoo"}, -{"broom", "vassoura"}, -{"Cave under the Cemetery", "Caverna sob o cemitério"}, -{"Invisible Zora", "Zora invisível"}, -{"bombed guard", "guarda bombardeado"}, -{"crow", "corvo"}, -{"last guard", "último guarda"}, -{"fight room", "sala de combate"}, -{"Mad Bomber", "Bombardeiro Maluco"}, -{"Kanalet moat", "Fosso de Kanalet"}, -{"north", "norte"}, -{"sunken", "submerso"}, -{"south", "sul"}, -{"Cave south of Kanalet Castle", "Caverna ao sul do Castelo Kanalet"}, -{"Kiki the monkey", "Kiki, o macaco"}, -{"Seashell bush in Mabe Village", "Arbusto com concha na Vila Mabe"}, -{"Mad Batter", "Morcego Maluco"}, -{"Mysterious Forest", "Floresta Misteriosa"}, -{"song", "canção"}, -{"Martha the mermaid", "Martha, a sereia"}, -{"Mr. Write", "Mr. Write"}, -{"North of the Moblin cave", "Norte da caverna dos Moblins"}, -{"North of Tabahl Wasteland", "Norte da Ermo de Tabahl"}, -{"Rock maze in Ukuku Prairie", "Labirinto de pedras na Pradaria Ukuku"}, -{"Island in the pond", "Ilha no lago"}, -{"last hole", "último buraco"}, -{"cave on the climb", "caverna da subida"}, -{"east island", "ilha leste"}, -{"middle island", "ilha central"}, -{"race under 30 s", "corrida em menos de 30 s"}, -{"race under 35 s", "corrida em menos de 35 s"}, -{"race under 45 s", "corrida em menos de 45 s"}, -{"south island", "ilha sul"}, -{"west island", "ilha oeste"}, -{"Cave by the river crossing", "Caverna perto da travessia do rio"}, -{"shelf", "prateleira"}, -{"Small island off the coast", "Ilhota perto da costa"}, -{"South of Martha's Bay", "Sul da Baía de Martha"}, -{"southwest of Martha's Bay", "sudoeste da Baía de Martha"}, -{"Chest in Goponga Swamp", "Baú no Pântano Goponga"}, -{"Syrup the witch", "Syrup, a bruxa"}, -{"Tree south of Tail Cave", "Árvore ao sul da Caverna da Cauda"}, -{"five chest game", "jogo dos cinco baús"}, -{"bomb hole", "buraco de bomba"}, -{"crossing cave", "caverna de travessia"}, -{"east bridge", "ponte leste"}, -{"east drop", "queda leste"}, -{"left chest", "baú esquerdo"}, -{"blocks at the entrance", "blocos da entrada"}, -{"chest at the entrance", "baú da entrada"}, -{"hole", "buraco"}, -{"chest on the ledge", "baú na plataforma"}, -{"cave on the left climb", "caverna da subida esquerda"}, -{"cave by the rooster", "caverna perto do galo"}, -{"way out", "saída"}, -{"under a rock", "sob uma pedra"}, -{"Tarin at the beehive", "Tarin na colmeia"}, -{"last prize", "último prêmio"}, -{"Tree in Ukuku Prairie", "Árvore na Pradaria Ukuku"}, -{"Ukuku cave", "Caverna de Ukuku"}, -{"east chest", "baú leste"}, -{"east item", "item leste"}, -{"west item", "item oeste"}, -{"Under the skull rock", "Sob a pedra-caveira"}, -{"Cave by the villa", "Caverna perto da vila"}, -{"Washed up on the beach", "Na praia"}, -{"spot in Tabahl Wasteland", "ponto na Ermo de Tabahl"}, -{"Forest crossing cave", "Caverna de travessia da floresta"}, -{"item", "item"}, -{"Forest north cave", "Caverna norte da floresta"}, -{"south chest", "baú sul"}, -{"Bush", "Arbusto"}, -{"spot", "ponto"}, -{"Pot", "Pote"}, -{"Apple tree", "Macieira"}, -{"Rock", "Pedra"}, -{"Marin and Tarin's house", "Casa de Marin e Tarin"}, -{"the quadruplets' house", "a casa dos quadrigêmeos"}, -{"the Southern Face Shrine", "o sul do Santuário da Face"}, -{"the witch's hut", "a cabana da bruxa"}, -{"the library", "a biblioteca"}, -{"the Seashell Mansion", "a Mansão das Conchas"}, -{"a telephone booth", "uma cabine telefônica"}, -{"the Town Tool Shop", "a Loja de Ferramentas"}, -{"the Dream Shrine", "o Santuário dos Sonhos"}, -{"north-west", "noroeste"}, -{"north-east", "nordeste"}, -{"south-west", "sudoeste"}, -{"south-east", "sudeste"}, -{"centre", "centro"}, -{"middle", "meio"}, -{"inside", "dentro"}, -{"Trendy Game: prize %s", "Jogo Moderno: prêmio %s"}, -{"Pot (%s)", "Pote (%s)"}, -{"%s of 3", "%s de 3"}, -{"Slime eye", "Slime Eye"}, -{"Angler", "Pescador"}, -{"Slime eel", "Slime Eel"}, -{"Master stalfos", "Mestre Stalfos"}, -{"Eagle", "Águia"}, -{"Hothead", "Hot Head"}, -{"Owl statue long hallway", "Estátua de coruja do corredor longo"}, -{"Owl statue spinies", "Estátua de coruja dos Spinies"}, -{"Owl statue 3 of a kind", "Estátua de coruja do trio igual"}, -{"Owl statue first switch", "Estátua de coruja do primeiro interruptor"}, -{"Owl statue push puzzle", "Estátua de coruja do desafio de empurrar"}, -{"Owl statue past hinox", "Estátua de coruja depois do Hinox"}, -{"Owl statue basement north", "Estátua de coruja do porão norte"}, -{"Owl statue arrow", "Estátua de coruja da flecha"}, -{"Owl statue northwest", "Estátua de coruja do noroeste"}, -{"Owl statue", "Estátua de coruja"}, -{"Owl statue triple stalfos", "Estátua de coruja dos três Stalfos"}, -{"Owl statue before slime eel", "Estátua de coruja antes do Slime Eel"}, -{"Owl statue ledge", "Estátua de coruja da plataforma"}, -{"Owl statue southeast", "Estátua de coruja do sudeste"}, -{"Owl statue canal", "Estátua de coruja do canal"}, -{"Owl statue ball", "Estátua de coruja da bola"}, -{"Owl statue kirbys", "Estátua de coruja dos Kirbys"}, -{"Owl statue hookshot chest", "Estátua de coruja do baú do Gancho"}, -{"Owl statue above smasher", "Estátua de coruja acima do Smasher"}, -{"Owl statue below gibdos", "Estátua de coruja abaixo dos Gibdos"}, -{"Owl statue eye statue", "Estátua de coruja da estátua do olho"}, -{"Owl statue nine switches", "Estátua de coruja dos nove interruptores"}, -{"Owl statue first switches", "Estátua de coruja dos primeiros interruptores"}, -{"Owl statue before mini boss", "Estátua de coruja antes do subchefe"}, -{"Owl statue below D8", "Estátua de coruja abaixo da M8"}, -// separators (tools/menu_strings.py) -{", ", ", "}, -{": ", ": "}, -// not used any more {"Set the buttons and keys for the game. F1, Esc, Home or Back + Start always open this menu.", "Defina os botões e teclas do jogo. F1, Esc, Home ou Back + Start sempre abrem este menu."}, {"! This folder is synced by OneDrive", "! Esta pasta é sincronizada pelo OneDrive"}, {"About %.0f GB of game files will upload to your OneDrive.", "Cerca de %.0f GB de arquivos do jogo serão enviados ao seu OneDrive."}, diff --git a/runtime/ui/lang/ru.inc b/runtime/ui/lang/ru.inc index bb3af3ade..f6e1e749c 100644 --- a/runtime/ui/lang/ru.inc +++ b/runtime/ui/lang/ru.inc @@ -226,13 +226,9 @@ {"Appearance", "Внешний вид"}, {"Layout", "Расположение"}, {"Follow thumb", "Следовать за пальцем"}, -{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Вкл.: он появляется там, куда вы ставите палец, в любом месте слева внизу. Выкл.: он остается на месте (переместить его можно в «Изменить сенсорную раскладку»)."}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it with the Layout button).", "Вкл.: он появляется там, куда вы ставите палец, в любом месте слева внизу. Выкл.: он остается на месте (переместить его можно кнопкой расположения)."}, {"Layout button", "Кнопка расположения"}, {"A button at the top, next to the menu button, that lets you move and resize the on-screen buttons.", "Кнопка вверху, рядом с кнопкой меню, которая позволяет перемещать экранные кнопки и менять их размер."}, -{"Load a save first.", "Сначала загрузите сохранение."}, -{"Edit touch layout", "Изменить сенсорную раскладку"}, -{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Перемещайте экранные кнопки, меняйте их размер или скрывайте их прямо поверх игры. Доступно во время игры."}, {"Reset touch layout", "Сбросить сенсорную раскладку"}, {"Puts every on-screen button back in its place, at its size, shown.", "Возвращает каждую экранную кнопку на место, к исходному размеру, и снова показывает ее."}, // runtime/ui/difficulty.mm @@ -691,6 +687,7 @@ {"The game's echo in caves, dungeons and big rooms.", "Эхо игры в пещерах, подземельях и больших залах."}, {"LAS Recomp menu sounds", "Звуки меню LAS Recomp"}, {"Sounds when you move around and pick things in LAS Recomp's menus.", "Звуки при перемещении и выборе в меню LAS Recomp."}, +{"Load a save first.", "Сначала загрузите сохранение."}, {"Quit", "Выход"}, {"Reset Game", "Сбросить игру"}, {"Progress since your last save is lost.", "Прогресс с последнего сохранения будет потерян."}, @@ -1090,6 +1087,8 @@ {"Reveal spoilers", "Показать спойлеры"}, {"Search items and places", "Поиск предметов и мест"}, {"Search the spoiler log", "Поиск по журналу спойлеров"}, +{"Useful items only", "Только полезные предметы"}, +{"Hide checked", "Скрыть пройденные"}, // runtime/ui/tracker_overlay.mm {"Seashells", "Ракушки"}, {"%d Small Keys", "маленькие ключи (%d)"}, @@ -1122,7 +1121,6 @@ {"needs %s +%d", "нужно: %s +%d"}, {"Filter: %s", "Фильтр: %s"}, {"In logic now", "Доступно по логике"}, -{"Hide checked", "Скрыть пройденные"}, {"Filters", "Фильтры"}, {"Room %c%d", "Комната %c%d"}, {"trick logic", "логика с трюками"}, @@ -1177,9 +1175,9 @@ {"This is where Manbo's Mambo drops you. You can't warp here directly.", "Сюда переносит «Манбо-мамбо». Переместиться сюда напрямую нельзя."}, {"%d places", "мест: %d"}, {"Load a save to warp.", "Загрузите сохранение, чтобы перемещаться."}, +{"Places", "Места"}, {"Search", "Поиск"}, {"Search places...", "Поиск мест..."}, -{"Places", "Места"}, {"Link is here", "Линк здесь"}, // warp_data.h {"Dungeons", "Подземелья"}, @@ -1306,28 +1304,112 @@ {"Building game files (%s tasks)", "Собираем файлы игры (задач: %s)"}, {"Triforce hunt: %s", "Охота за Трифорсом: %s"}, // spoiler_view.py -{"Settings: %s", "Настройки: %s"}, -{"Walkthrough", "Прохождение"}, -{"Items by area", "Предметы по областям"}, -{"Starting items: %s", "Стартовые предметы: %s"}, +{"Route", "Маршрут"}, +{"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Только то, что нужно для прохождения сида. Каждую точку можно достичь с предметами из предыдущих."}, +{"Finish", "Финал"}, +{"Everything useful step by step", "Всё полезное по шагам"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Каждый шаг можно выполнить с тем, что у вас было после предыдущих шагов (внутри шага — в любом порядке)."}, {"Only items that open things up are listed; rupees", "Указаны только предметы, которые что-то открывают; рупии"}, {"traps and similar are left out.", "ловушки и прочее не указаны."}, -{"Finish", "Финал"}, -{"With all eight instruments", "Со всеми восемью инструментами"}, -{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "сыграйте «Балладу о Рыбе ветров» у Яйца на холмах Тал-Тал."}, -{"(No walkthrough", "(Прохождения нет"}, -{"this seed has no request.json to recompute it.)", "у этого сида нет request.json, чтобы его рассчитать.)"}, +{"Items by area", "Предметы по областям"}, +{"Dungeon rooms", "Комнаты подземелий"}, +{"Where each moved room is now and where it came from.", "Где теперь каждая перемещённая комната и откуда она."}, {"Entrances", "Входы"}, -{"%s entrance leads into %s", "%s: вход ведет в «%s»"}, -{"%s:", "%s:"}, {"Doors", "Двери"}, -{"door -> interior it now leads into", "дверь -> куда она теперь ведет"}, +{"each door and where it now leads", "каждая дверь и куда она ведет"}, +{"Settings: %s", "Настройки: %s"}, +{"(This seed has no step list.)", "(У этого сида нет списка шагов.)"}, +{"%s entrance leads into %s", "%s: вход ведет в «%s»"}, +{"Unchanged (%s)", "Без изменений (%s)"}, {"Exits", "Выходы"}, -{"interior -> where leaving it puts you", "помещение -> где вы окажетесь, выйдя из него"}, +{"each way out and where it puts you", "каждый выход и куда он ведет"}, +{"Starting items: %s", "Стартовые предметы: %s"}, +{"%s:", "%s:"}, +{"Small items (%s)", "Мелкие предметы (%s)"}, {"%s - enter through %s's entrance", "%s — заходить через вход «%s»"}, {"%s's Soul", "Душа: %s"}, {"%s' Soul", "Душа: %s"}, +{"room %s", "комната %s"}, +{"The last of the %s Triforce pieces you need ends the game.", "Последняя из нужных %s частей Трифорса завершает игру."}, +{"2nd", "2-й"}, +{"shelf", "полка"}, +{"second item", "второй предмет"}, +{"third item", "третий предмет"}, +{"west side door", "дверь на западной стороне"}, +{"east side door", "дверь на восточной стороне"}, +{"Fire cave", "Огненная пещера"}, +{"north door", "северная дверь"}, +{"south door", "южная дверь"}, +{"Wind Fish's egg", "Яйцо Рыбы ветров"}, +{"rooster house", "дом петуха"}, +{"Telephone booth by Turtle Rock", "Телефонная будка у Черепаховой скалы"}, +{"Mad Batter well", "Колодец безумного нетопыря"}, +{"Tal Tal crossing cave", "Тал-Тал: пещера-переход"}, +{"west door", "западная дверь"}, +{"east door", "восточная дверь"}, +{"Mountain cave", "Горная пещера"}, +{"bottom door", "дверь внизу"}, +{"top door", "дверь вверху"}, +{"ledge door", "дверь на уступе"}, +{"Papahl's cave", "Пещера Папаля"}, +{"lower door", "нижняя дверь"}, +{"upper door", "верхняя дверь"}, +{"Bird Key cave", "Пещера с ключом с птицей"}, +{"Five chest cave", "Пещера с пятью сундуками"}, +{"Five chest game", "Игра с пятью сундуками"}, +{"exit door", "выходная дверь"}, +{"Rainbow cave", "Радужная пещера"}, +{"outer west door", "внешняя западная дверь"}, +{"inner west door", "внутренняя западная дверь"}, +{"inner east door", "внутренняя восточная дверь"}, +{"outer east door", "внешняя восточная дверь"}, +{"Fairy fountain", "Фонтан Большой феи"}, +{"Tal Tal east", "Тал-Тал, восток"}, +{"Cave to Eagle's Tower", "Пещера к Орлиной башне"}, +{"Cave by Angler's Tunnel", "Пещера у Удильщикова туннеля"}, +{"Damp cave", "Сырая пещера"}, +{"Raft cave", "Пещера с плотом"}, +{"Telephone booth", "Телефонная будка"}, +{"Moblin cave", "Пещера моблинов"}, +{"Dampe's house", "Хибара Дампея"}, +{"Rapids Ride raft shop", "Прокат плотов у порогов"}, +{"Mysterious Forest", "Таинственный лес"}, +{"north cave", "северная пещера"}, +{"Kanalet tunnel", "Туннель Каналета"}, +{"Telephone booth by Kanalet Castle", "Телефонная будка у замка Каналет"}, +{"roof west door", "западная дверь на крыше"}, +{"roof east door", "восточная дверь на крыше"}, +{"front door", "парадная дверь"}, +{"Cave south of Kanalet Castle", "Пещера к югу от замка Каналет"}, +{"Forest crossing cave", "Лесная пещера-переход"}, +{"forest", "лес"}, +{"north side door", "дверь на северной стороне"}, +{"Ukuku cave", "Пещера Укуку"}, +{"Ukuku Prairie north", "Укукские поля, север"}, +{"Ukuku Prairie west", "Укукские поля, запад"}, +{"Cave to Face Shrine", "Пещера к Ликову святилищу"}, +{"Fairy fountain by the Armos maze", "Фонтан Большой феи у лабиринта армосов"}, +{"Flying Rooster's grave", "Могила летающего петуха"}, +{"River crossing cave", "Пещера у переправы через реку"}, +{"Armos maze cave", "Пещера в лабиринте армосов"}, +{"BowWow's kennel", "Будка Гав-Гава"}, +{"Marin and Tarin's house", "дом Марин и Тарина"}, +{"Mabe Village library", "Библиотека в деревне Мабе"}, +{"Cliff cave by the bay", "Пещера на утесе у залива"}, +{"plateau door", "дверь на плато"}, +{"Cave behind Richard's villa", "Пещера за виллой Ричарда"}, +{"rabbit house", "дом кроликов"}, +{"Zora's house", "Дом зоры"}, +{"bombed cave", "пещера, открытая бомбой"}, +{"Lanmola cave", "Пещера ланмолы"}, +{"east dive spot", "восточное место для ныряния"}, +{"west dive spot", "западное место для ныряния"}, +{"Sale's banana house", "«БананоТорг Сейла»"}, +{"bay", "залив"}, +{"Tunnel to the bay Mad Batter", "Туннель к нетопырю у залива"}, +{"Mermaid statue", "Статуя русалки"}, +{"Boomerang cave", "Пещера с бумерангом"}, +{"Ghost's house", "Дом призрака"}, {"Signpost Maze", "Лабиринт указателей"}, {"Ancient Ruins", "Древние руины"}, {"west", "запад"}, @@ -1338,98 +1420,180 @@ {"50 Rupees", "50 рупий"}, {"100 Rupees", "100 рупий"}, {"300 Rupees", "300 рупий"}, +{"1 Rupee", "1 рупия"}, {"Trap!", "Ловушка!"}, {"Frog Song of Soul", "«Жабья задушевная»"}, {"Chamber Stone", "Камень-заготовка"}, +{"Triforce piece", "Часть Трифорса"}, {"Beach chest", "Сундук на пляже"}, +{"Chest on the beach", "Сундук на пляже"}, {"Taltal entrance chest", "Тал-Тал: сундук у входа"}, +{"chest at the entrance", "сундук у входа"}, {"Taltal east left chest", "Тал-Тал, восток: левый сундук"}, +{"left chest", "левый сундук"}, {"Dream shrine right", "Святилище Сна: справа"}, +{"right", "справа"}, {"Armos cave", "Пещера армосов"}, {"Goponga cave left", "Пещера в Гопонге: слева"}, +{"left", "слева"}, {"Goponga cave right", "Пещера в Гопонге: справа"}, {"Ukuku cave west chest", "Пещера Укуку: западный сундук"}, +{"west chest", "западный сундук"}, {"Ukuku cave east chest", "Пещера Укуку: восточный сундук"}, +{"east chest", "восточный сундук"}, {"Kanalet south cave", "Пещера к югу от Каналета"}, {"Swamp chest", "Сундук на болоте"}, +{"Chest in Goponga Swamp", "Сундук в топях Гопонга"}, {"Taltal left ascent cave", "Тал-Тал: пещера левого подъема"}, +{"cave on the left climb", "пещера на левом подъеме"}, {"Taltal ledge chest", "Тал-Тал: сундук на уступе"}, +{"chest on the ledge", "сундук на уступе"}, {"Taltal 5 chest puzzle", "Тал-Тал: загадка с 5 сундуками"}, +{"five chest game", "игра с пятью сундуками"}, {"Taltal west chest", "Тал-Тал: западный сундук"}, {"Villa cave", "Пещера у виллы"}, +{"Cave by the villa", "Пещера у виллы"}, {"Woods crossing cave chest", "Лес: сундук в пещере-переходе"}, +{"chest", "сундук"}, {"Woods north cave chest", "Лес: сундук в северной пещере"}, +{"Forest north cave", "Северная лесная пещера"}, {"Woods south chest", "Лес: южный сундук"}, +{"south chest", "южный сундук"}, {"Woods north chest", "Лес: северный сундук"}, +{"north chest", "северный сундук"}, {"Fishing", "Рыбалка"}, +{"Fishing pond", "Рыбацкий пруд"}, +{"50 points", "50 очков"}, {"Fishing orange", "Рыбалка: оранжевая рыба"}, +{"orange fish", "оранжевая рыба"}, {"Fishing loose", "Рыбалка: на дне"}, +{"loose item", "предмет на земле"}, +{"100 points", "100 очков"}, +{"150 points", "150 очков"}, {"Fishing cheep cheep", "Рыбалка: чип-чип"}, +{"Cheep Cheep", "Чип-чип"}, {"Fishing ol baron", "Рыбалка: Царь пруда"}, +{"Ol' Baron", "Царь пруда"}, {"Rapids race", "Гонка на плоту"}, +{"race under 45 s", "гонка быстрее 45 с"}, +{"race under 35 s", "гонка быстрее 35 с"}, +{"race under 30 s", "гонка быстрее 30 с"}, {"Rapids middle island", "Пороги: средний остров"}, +{"middle island", "средний остров"}, {"Rapids west island", "Пороги: западный остров"}, +{"west island", "западный остров"}, {"Dampe page", "Дампей: страница"}, +{"Dampe", "Дампей"}, +{"first page", "первая страница"}, {"Dampe heart challenge", "Дампей: испытание с сердцами"}, +{"Dampe's heart challenge", "Испытание Дампея с сердцами"}, +{"second page", "вторая страница"}, {"Dampe bottle challenge", "Дампей: испытание с бутылкой"}, +{"Dampe's bottle challenge", "Испытание Дампея с бутылкой"}, {"Dampe final", "Дампей: финал"}, +{"Dampe's final challenge", "Финальное испытание Дампея"}, {"Walrus", "Морж"}, {"Ghost reward", "Награда призрака"}, +{"Ghost's reward", "Награда призрака"}, +{"song", "мелодия"}, {"Manbo", "Манбо"}, {"Mamu", "Крокожабер"}, {"Mad batter bay", "Безумный нетопырь в заливе"}, +{"Mad Batter", "Безумный нетопырь"}, {"Mad batter taltal", "Безумный нетопырь на Тал-Тал"}, {"Mad batter woods", "Безумный нетопырь в лесу"}, {"Invisible zora", "Невидимый зора"}, +{"Invisible Zora", "Невидимый зора"}, {"Goriya trader", "Гория-торговец"}, +{"Goriya", "Гория"}, +{"trade", "обмен"}, {"Mamasha", "Мамаль"}, {"Ciao ciao", "Чао-Чао"}, +{"Ciao Ciao", "Чао-Чао"}, {"Sale", "Сейл"}, {"Kiki", "Кики"}, +{"Kiki the monkey", "Макака Кики"}, {"Tarin ukuku", "Тарин на Укукских полях"}, +{"Tarin at the beehive", "Тарин у улья"}, {"Chef bear", "Медведь-повар"}, +{"Chef Bear", "Медведь-повар"}, {"Papahl", "Папаль"}, {"Christine trade", "Кристина: обмен"}, +{"Christine", "Кристина"}, {"Christine grateful", "Кристина: благодарность"}, +{"thank-you gift", "подарок в благодарность"}, {"Mr write", "Мистер Райт"}, +{"Mr. Write", "Мистер Райт"}, {"Grandma yahoo", "Бабушка Яху"}, +{"Grandma Yahoo", "Бабушка Яху"}, +{"broom", "метла"}, {"Bay fisherman", "Рыбак в заливе"}, +{"Fisherman under the bridge", "Рыбак под мостом"}, {"Mermaid martha", "Русалка Марта"}, +{"Martha the mermaid", "Русалка Марта"}, {"Mermaid cave", "Пещера русалки"}, {"Lanmola", "Ланмола"}, {"Armos knight", "Армос-рыцарь"}, +{"Armos Knight", "Армос-рыцарь"}, {"Washed up", "Выброшено на берег"}, +{"Washed up on the beach", "Выброшено на пляж"}, {"Dream shrine left", "Святилище Сна: слева"}, {"Taltal rooster cave", "Тал-Тал: пещера петуха"}, +{"cave by the rooster", "пещера у петуха"}, {"Woods loose", "Лес: на земле"}, {"Pothole final", "Ямное поле: финал"}, +{"last hole", "последняя яма"}, {"5 seashell reward", "Награда за 5 ракушек"}, +{"5 shells", "5 ракушек"}, {"15 seashell reward", "Награда за 15 ракушек"}, +{"15 shells", "15 ракушек"}, {"30 seashell reward", "Награда за 30 ракушек"}, +{"30 shells", "30 ракушек"}, {"40 seashell reward", "Награда за 40 ракушек"}, +{"40 shells", "40 ракушек"}, {"50 seashell reward", "Награда за 50 ракушек"}, +{"50 shells", "50 ракушек"}, {"Animal village northwest", "Деревня Звериная: северо-запад"}, +{"Northwest of Animal Village", "Северо-запад деревни Звериная"}, {"Animal village cave", "Пещера в деревне Звериная"}, +{"Cave by Animal Village", "Пещера у деревни Звериная"}, {"Taltal entrance blocks", "Тал-Тал: блоки у входа"}, +{"blocks at the entrance", "блоки у входа"}, {"North wasteland", "Север пустоши"}, +{"North of Tabahl Wasteland", "Север Табальской пустоши"}, {"Desert cave", "Пещера в пустыне"}, +{"Cave in Yarna Desert", "Пещера в Ярнской пустыне"}, {"Graveyard cave", "Пещера у кладбища"}, +{"Cave under the Cemetery", "Пещера под кладбищем"}, {"Mabe well", "Колодец Мабе"}, {"Ukuku cave west loose", "Пещера Укуку, запад: на земле"}, +{"west item", "западный предмет"}, {"Ukuku cave east loose", "Пещера Укуку, восток: на земле"}, +{"east item", "восточный предмет"}, {"Rapids ascent cave", "Пещера подъема у порогов"}, +{"cave on the climb", "пещера на подъеме"}, {"Taltal crossing cave", "Тал-Тал: пещера-переход"}, +{"crossing cave", "пещера-переход"}, {"Taltal west escape", "Тал-Тал: западный выход"}, +{"way out", "выход"}, {"Above turtle rock", "Над Черепаховой скалой"}, +{"Ledge above Turtle Rock", "Уступ над Черепаховой скалой"}, {"Pothole north", "Ямное поле: север"}, +{"north", "север"}, {"Woods crossing cave loose", "Лес: пещера-переход, на земле"}, +{"item", "предмет"}, {"Woods north cave loose", "Лес: северная пещера, на земле"}, {"Diamond island", "Ромбовый остров"}, {"Kanalet crow", "Каналет: ворон"}, +{"crow", "ворон"}, {"Kanalet mad bomber", "Каналет: безумный бомбист"}, +{"Mad Bomber", "Безумный бомбист"}, {"Kanalet kill room", "Каналет: комната с врагами"}, +{"fight room", "комната с боем"}, {"Kanalet bombed guard", "Каналет: подорванный стражник"}, +{"bombed guard", "подорванный стражник"}, {"Kanalet final guard", "Каналет: последний стражник"}, +{"last guard", "последний стражник"}, {"Owl statue moblin cave", "Статуя филина: пещера моблинов"}, {"Owl statue pothole", "Статуя филина: Ямное поле"}, {"Owl statue above cave", "Статуя филина: над пещерой"}, @@ -1438,8 +1602,222 @@ {"Owl statue maze", "Статуя филина: лабиринт"}, {"Owl statue rapids", "Статуя филина: пороги"}, {"Owl statue taltal east", "Статуя филина: восток Тал-Тал"}, +{"Instrument", "Инструмент"}, +{"Moldorm", "Молдорм"}, +{"West hallway", "Западный коридор"}, +{"Middle ledge", "Средний уступ"}, +{"3 of a kind", "тривмасть"}, +{"Bomb room", "Комната с бомбами"}, +{"Middle kill chest", "Средний сундук за врагов"}, +{"Spark chest", "Сундук с искриком"}, +{"Button chest", "Сундук с кнопкой"}, +{"Stalfos chest", "Сундук сталфоса"}, +{"4 zols chest", "сундук с 4 цолами"}, +{"Beetles", "Жучки"}, +{"Owl statue long hallway", "Статуя филина: длинный коридор"}, +{"Owl statue spinies", "Статуя филина: колючкины"}, +{"Owl statue 3 of a kind", "Статуя филина: тривмасть"}, +{"Genie", "Джинн"}, +{"Boos", "Бу"}, +{"Long room west", "Длинная комната, запад"}, +{"Long room east", "Длинная комната, восток"}, +{"Vacuum mouth room", "Комната со всасывающей пастью"}, +{"Kill puzzle", "Загадка с врагами"}, +{"West chest", "Западный сундук"}, +{"Double stalfos", "Два сталфоса"}, +{"Double shy guys", "Два скромняги"}, +{"Entrance chest", "Сундук у входа"}, +{"Single shy guy", "Один скромняга"}, +{"Peg circle", "Круг колышков"}, +{"Owl statue first switch", "Статуя филина: первый переключатель"}, +{"Owl statue push puzzle", "Статуя филина: загадка с блоками"}, +{"Owl statue past hinox", "Статуя филина: за хиноксом"}, +{"Slime eye", "Слизнеглаз"}, +{"Pre boss", "Перед боссом"}, +{"Triple bombites", "Три бомбата"}, +{"North chest", "Северный сундук"}, +{"Central ledge", "Центральный уступ"}, +{"Central chest", "Центральный сундук"}, +{"East ledge", "Восточный уступ"}, +{"Pairodds", "Параптахи"}, +{"Five zols", "Пять цолов"}, +{"Basement north", "Подвал, север"}, +{"Basement west", "Подвал, запад"}, +{"Basement south", "Подвал, юг"}, +{"Hallway", "Коридор"}, +{"Hallway side room", "Боковая комната коридора"}, +{"Vacuum mouth", "Всасывающая пасть"}, +{"Owl statue basement north", "Статуя филина: подвал, север"}, +{"Owl statue arrow", "Статуя филина: стрела"}, +{"Owl statue northwest", "Статуя филина: северо-запад"}, +{"Angler", "Удильщик"}, +{"East side north", "Восточная часть, север"}, +{"East side south", "Восточная часть, юг"}, +{"West ledge", "Западный уступ"}, +{"East of puzzle", "Восточнее загадки"}, +{"South of puzzle", "Южнее загадки"}, +{"Sunken item", "Предмет под водой"}, +{"Central room", "Центральная комната"}, +{"Small island", "Островок"}, +{"Ledge north", "Уступ, север"}, +{"Statues chest", "Сундук у статуй"}, +{"Lobby", "Вестибюль"}, +{"Crystals", "Кристаллы"}, +{"Owl statue", "Статуя филина"}, +{"Slime eel", "Слизнеугорь"}, +{"Master stalfos", "Грандсталфос"}, +{"Crystal blocks", "Кристальные блоки"}, +{"Past master stalfos", "После грандсталфоса"}, +{"Water tunnel", "Водный туннель"}, +{"Right side north", "Правая часть, север"}, +{"Right side middle", "Правая часть, середина"}, +{"Right side east", "Правая часть, восток"}, +{"Helmasaurs", "Шлемозавры"}, +{"West stairs chest", "Сундук у западной лестницы"}, +{"Near entrance", "У входа"}, +{"Owl statue triple stalfos", "Статуя филина: три сталфоса"}, +{"Owl statue before slime eel", "Статуя филина: перед слизнеугрем"}, +{"Facade", "Лик"}, +{"Far northwest", "Дальний северо-запад"}, +{"Far northeast", "Дальний северо-восток"}, +{"Statue line north", "Ряд статуй, север"}, +{"Statue line south", "Ряд статуй, юг"}, +{"Wizzrobe pegs", "Чароманты и колышки"}, +{"Canal", "Канал"}, +{"3 wizzrobes", "3 чароманта"}, +{"Tile room", "Комната с плитками"}, +{"Gated hallway north", "Коридор с решеткой, север"}, +{"Gated hallway south", "Коридор с решеткой, юг"}, +{"Southwest chest", "Юго-западный сундук"}, +{"Wizzrobes ledge", "Уступ с чаромантами"}, +{"Owl statue ledge", "Статуя филина: уступ"}, +{"Owl statue southeast", "Статуя филина: юго-восток"}, +{"Owl statue canal", "Статуя филина: канал"}, +{"Eagle", "Мракокрыл"}, +{"Like likes", "Щитоеды"}, +{"1f west", "1-й этаж, запад"}, +{"3ofakind north", "тривмасть, север"}, +{"2f horseheads", "конские головы, 2-й этаж"}, +{"Hinox", "Хинокс"}, +{"3ofakind south", "тривмасть, юг"}, +{"Blue pegs chest", "Сундук у синих колышков"}, +{"3f horseheads", "конские головы, 3-й этаж"}, +{"Grim creeper", "Мрачный дударь"}, +{"Owl statue ball", "Статуя филина: шар"}, +{"Owl statue kirbys", "Статуя филина: кирби"}, +{"Owl statue hookshot chest", "Статуя филина: сундук с крюкострелом"}, +{"Hothead", "Головеш"}, +{"Left exit chest", "Сундук у левого выхода"}, +{"Dodongos", "Додонги"}, +{"Northern ledge", "Северный уступ"}, +{"Gibdos", "Гибдо"}, +{"Beamos chest", "Сундук у бимоса"}, +{"Statue", "Статуя"}, +{"Torches", "Факелы"}, +{"West vire", "Западный вир"}, +{"West roomba", "Западный пылесос"}, +{"Surrounded by blocks", "Окружен блоками"}, +{"Sparks chest", "Сундук с искриками"}, +{"East of pots", "Восточнее горшков"}, +{"East roomba", "Восточный пылесос"}, +{"Far southwest", "Дальний юго-запад"}, +{"Far southeast", "Дальний юго-восток"}, +{"Owl statue above smasher", "Статуя филина: над крушителем"}, +{"Owl statue below gibdos", "Статуя филина: под гибдо"}, +{"Owl statue eye statue", "Статуя филина: статуя-глаз"}, +{"Northern chest", "Северный сундук"}, +{"Zol pots", "Горшки с цолами"}, +{"North orbs", "Северные сферы"}, +{"South orbs", "Южные сферы"}, +{"East color puzzle", "Восточная цветная загадка"}, +{"West color puzzle", "Западная цветная загадка"}, +{"Putters", "Путтеры"}, +{"Owl statue nine switches", "Статуя филина: девять переключателей"}, +{"Owl statue first switches", "Статуя филина: первые переключатели"}, +{"Owl statue before mini boss", "Статуя филина: перед мини-боссом"}, +{"Rupee", "Рупия"}, {"stone beak", "каменный клюв"}, -// spoiler logs +// tracker.py +{"spot above the cave", "место над пещерой"}, +{"spot above Key Cavern", "место над Ключистой пещерой"}, +{"Sunken item in the bay passage", "Предмет под водой в проходе к заливу"}, +{"Tree on the beach", "Дерево на пляже"}, +{"bonk", "с разбега"}, +{"spot on the beach", "место на пляже"}, +{"Beside the Seashell Mansion", "Рядом с Особняком ракушек"}, +{"spot in Yarna Desert", "место в Ярнской пустыне"}, +{"South of Yarna Desert", "Юг Ярнской пустыни"}, +{"BowWow's doghouse", "Будка Гав-Гава"}, +{"dig", "раскопка"}, +{"Ghost's grave", "Могила призрака"}, +{"Pot in %s", "Горшок: %s"}, +{"the Ghost's house", "дом призрака"}, +{"West of Goponga Swamp", "Запад топей Гопонга"}, +{"Kanalet moat", "Ров Каналета"}, +{"sunken", "под водой"}, +{"south", "юг"}, +{"Seashell bush in Mabe Village", "Куст с ракушкой в деревне Мабе"}, +{"North of the Moblin cave", "Севернее пещеры моблинов"}, +{"Rock maze in Ukuku Prairie", "Каменный лабиринт на Укукских полях"}, +{"Island in the pond", "Остров в пруду"}, +{"east island", "восточный остров"}, +{"south island", "южный остров"}, +{"Cave by the river crossing", "Пещера у переправы через реку"}, +{"Rock maze", "Каменный лабиринт"}, +{"Small island off the coast", "Островок у берега"}, +{"South of Martha's Bay", "Юг залива Марты"}, +{"southwest of Martha's Bay", "юго-запад залива Марты"}, +{"Syrup the witch", "Ведьма Сироп"}, +{"Tree south of Tail Cave", "Дерево к югу от Червячьего дворца"}, +{"bomb hole", "яма от бомбы"}, +{"east bridge", "восточный мост"}, +{"east drop", "спуск на востоке"}, +{"hole", "яма"}, +{"sunken item", "предмет под водой"}, +{"under a rock", "под камнем"}, +{"Tarin", "Тарин"}, +{"last prize", "последний приз"}, +{"Tree in Ukuku Prairie", "Дерево на Укукских полях"}, +{"Under the skull rock", "Под скалой-черепом"}, +{"spot in Tabahl Wasteland", "место в Табальской пустоши"}, +{"Bush", "Куст"}, +{"spot", "место"}, +{"Pot", "Горшок"}, +{"Apple tree", "Яблоня"}, +{"Rock", "Камень"}, +{"the quadruplets' house", "дом с близнецами"}, +{"the Southern Face Shrine", "юг Ликова святилища"}, +{"the witch's hut", "домик ведьмы"}, +{"the library", "библиотека"}, +{"the Seashell Mansion", "Особняк ракушек"}, +{"a telephone booth", "телефонная будка"}, +{"the Town Tool Shop", "«Полезная лавка»"}, +{"the Dream Shrine", "святилище Сна"}, +{"north-west", "северо-запад"}, +{"north-east", "северо-восток"}, +{"south-west", "юго-запад"}, +{"south-east", "юго-восток"}, +{"centre", "центр"}, +{"middle", "середина"}, +{"inside", "внутри"}, +{"Trendy Game: prize %s", "«Зал удачи»: приз %s"}, +{"Pot (%s)", "Горшок (%s)"}, +{"%s of 3", "%s из 3"}, +{"Owl statue below D8", "Статуя филина: под 8-м подземельем"}, +// separators (tools/menu_strings.py) +{", ", ", "}, +{": ", ": "}, +// not used any more +{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Вкл.: он появляется там, куда вы ставите палец, в любом месте слева внизу. Выкл.: он остается на месте (переместить его можно в «Изменить сенсорную раскладку»)."}, +{"Edit touch layout", "Изменить сенсорную раскладку"}, +{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Перемещайте экранные кнопки, меняйте их размер или скрывайте их прямо поверх игры. Доступно во время игры."}, +{"Walkthrough", "Прохождение"}, +{"With all eight instruments", "Со всеми восемью инструментами"}, +{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "сыграйте «Балладу о Рыбе ветров» у Яйца на холмах Тал-Тал."}, +{"(No walkthrough", "(Прохождения нет"}, +{"this seed has no request.json to recompute it.)", "у этого сида нет request.json, чтобы его рассчитать.)"}, +{"door -> interior it now leads into", "дверь -> куда она теперь ведет"}, +{"interior -> where leaving it puts you", "помещение -> где вы окажетесь, выйдя из него"}, {"boss cutscenes", "сцены боссов"}, {"enemy minibosses", "мини-боссы среди врагов"}, {"escape bottle", "бутылка для побега"}, @@ -1463,8 +1841,6 @@ {"Mabe bushes", "Кусты Мабе"}, {"Shop slot3 1st", "Магазин, место 3, 1-й товар"}, {"Shop slot3 2nd", "Магазин, место 3, 2-й товар"}, -{"Tarin", "Тарин"}, -{"Rock maze", "Каменный лабиринт"}, {"double stalfos", "два сталфоса"}, {"putters", "путтеры"}, {"south orbs", "южные сферы"}, @@ -1533,12 +1909,9 @@ {"past master stalfos", "после грандсталфоса"}, {"right side east", "правая часть, восток"}, {"water tunnel", "водный туннель"}, -{"west chest", "западный сундук"}, -{"3 wizzrobes", "3 чароманта"}, {"statue line north", "ряд статуй, север"}, {"wizzrobe pegs", "чароманты и колышки"}, {"central room", "центральная комната"}, -{"north chest", "северный сундук"}, {"Stalfos Note", "Записка сталфоса"}, {"south of puzzle", "южнее загадки"}, {"west ledge", "западный уступ"}, @@ -1548,7 +1921,6 @@ {"middle kill chest", "средний сундук за врагов"}, {"stalfos chest", "сундук сталфоса"}, {"angler", "удильщик"}, -{"3 of a kind", "тривмасть"}, {"middle ledge", "средний уступ"}, {"moldorm", "молдорм"}, {"west hallway", "западный коридор"}, @@ -1557,10 +1929,8 @@ {"tile room", "комната с плитками"}, {"wizzrobes ledge", "уступ с чаромантами"}, {"Rooster statue", "Статуя петуха"}, -{"Moblin cave", "Пещера моблинов"}, {"Bow Wow", "Гав-Гав"}, {"like likes", "щитоеды"}, -{"chest", "сундук"}, {"Taltal bomb hole", "Тал-Тал: яма от бомбы"}, {"Taltal east bridge", "Тал-Тал: восточный мост"}, {"Taltal west dig", "Тал-Тал: раскопка на западе"}, @@ -1578,11 +1948,9 @@ {"west roomba", "западный пылесос"}, {"west vire", "западный вир"}, {"Squish Trap", "Ловушка-давилка"}, -{"2f horseheads", "конские головы, 2-й этаж"}, {"blue pegs chest", "сундук у синих колышков"}, {"east ledge", "восточный уступ"}, {"grim creeper", "Мрачный дударь"}, -{"3f horseheads", "конские головы, 3-й этаж"}, {"Shop slot5 3rd", "Магазин, место 5, 3-й товар"}, {"Shop slot5 4th", "Магазин, место 5, 4-й товар"}, {"Shop slot5 5th", "Магазин, место 5, 5-й товар"}, @@ -1591,7 +1959,6 @@ {"final", "финал"}, {"Shop slot6", "Магазин, место 6"}, {"Taltal east drop", "Тал-Тал: спуск на востоке"}, -{"River crossing cave", "Пещера у переправы через реку"}, {"South bay sunken", "Юг залива, под водой"}, {"Kanalet moat north", "Ров Каналета, север"}, {"Rapids south island", "Пороги: южный остров"}, @@ -1599,7 +1966,6 @@ {"north orbs", "северные сферы"}, {"east color puzzle", "восточная цветная загадка"}, {"spark chest", "сундук с искриком"}, -{"4 zols chest", "сундук с 4 цолами"}, {"genie", "джинн"}, {"long room west", "длинная комната, запад"}, {"entrance chest", "сундук у входа"}, @@ -1607,7 +1973,6 @@ {"peg circle", "круг колышков"}, {"basement north", "подвал, север"}, {"east of puzzle", "восточнее загадки"}, -{"sunken item", "предмет под водой"}, {"ledge north", "уступ, север"}, {"statues chest", "сундук у статуй"}, {"crystals", "кристаллы"}, @@ -1623,10 +1988,7 @@ {"gated hallway south", "коридор с решеткой, юг"}, {"southwest chest", "юго-западный сундук"}, {"eagle", "мракокрыл"}, -{"1f west", "1-й этаж, запад"}, -{"3ofakind north", "тривмасть, север"}, {"hinox", "хинокс"}, -{"3ofakind south", "тривмасть, юг"}, {"hothead", "головеш"}, {"gibdos", "гибдо"}, {"statue", "статуя"}, @@ -1719,18 +2081,14 @@ {"trendsanity", "все призы «Зала удачи»"}, {"Slime Eel", "Слизнеугорь"}, {"Evil Orb", "Злая сфера"}, -{"Genie", "Джинн"}, -{"Facade", "Лик"}, {"Evil Eagle", "Мракокрыл"}, {"Slime Eye", "Слизнеглаз"}, {"Angler Fish", "Удильщик"}, {"Hot Head", "Головеш"}, -{"Moldorm", "Молдорм"}, {"enemy bosses", "боссы среди врагов"}, {"miniboss souls", "души мини-боссов"}, {"Blaino", "Блейно"}, {"Grim Creeper", "Мрачный дударь"}, -{"Hinox", "Хинокс"}, {"Smasher", "Крушитель"}, {"Dodongo Snakes", "Додонгадюки"}, {"Avalaunch", "Авалонш"}, @@ -1742,188 +2100,6 @@ {"ghost item", "призрак-предмет"}, {"tunic upgrades", "туники как улучшения"}, {"digs", "раскопки"}, -{"Rupee", "Рупия"}, -// tracker.py -{"5 shells", "5 ракушек"}, -{"15 shells", "15 ракушек"}, -{"30 shells", "30 ракушек"}, -{"40 shells", "40 ракушек"}, -{"50 shells", "50 ракушек"}, -{"spot above the cave", "место над пещерой"}, -{"spot above Key Cavern", "место над Ключистой пещерой"}, -{"Ledge above Turtle Rock", "Уступ над Черепаховой скалой"}, -{"Cave by Animal Village", "Пещера у деревни Звериная"}, -{"Northwest of Animal Village", "Северо-запад деревни Звериная"}, -{"Armos Knight", "Армос-рыцарь"}, -{"Fisherman under the bridge", "Рыбак под мостом"}, -{"Sunken item in the bay passage", "Предмет под водой в проходе к заливу"}, -{"Tree on the beach", "Дерево на пляже"}, -{"bonk", "с разбега"}, -{"Chest on the beach", "Сундук на пляже"}, -{"spot on the beach", "место на пляже"}, -{"Beside the Seashell Mansion", "Рядом с Особняком ракушек"}, -{"Chef Bear", "Медведь-повар"}, -{"Christine", "Кристина"}, -{"thank-you gift", "подарок в благодарность"}, -{"trade", "обмен"}, -{"Ciao Ciao", "Чао-Чао"}, -{"Dampe's bottle challenge", "Испытание Дампея с бутылкой"}, -{"Dampe's final challenge", "Финальное испытание Дампея"}, -{"Dampe's heart challenge", "Испытание Дампея с сердцами"}, -{"Dampe", "Дампей"}, -{"first page", "первая страница"}, -{"second page", "вторая страница"}, -{"Cave in Yarna Desert", "Пещера в Ярнской пустыне"}, -{"spot in Yarna Desert", "место в Ярнской пустыне"}, -{"South of Yarna Desert", "Юг Ярнской пустыни"}, -{"BowWow's doghouse", "Будка Гав-Гава"}, -{"dig", "раскопка"}, -{"left", "слева"}, -{"right", "справа"}, -{"Fishing pond", "Рыбацкий пруд"}, -{"100 points", "100 очков"}, -{"150 points", "150 очков"}, -{"50 points", "50 очков"}, -{"Cheep Cheep", "Чип-чип"}, -{"loose item", "предмет на земле"}, -{"Ol' Baron", "Царь пруда"}, -{"orange fish", "оранжевая рыба"}, -{"Ghost's grave", "Могила призрака"}, -{"Pot in %s", "Горшок: %s"}, -{"the Ghost's house", "дом призрака"}, -{"Ghost's reward", "Награда призрака"}, -{"West of Goponga Swamp", "Запад топей Гопонга"}, -{"Goriya", "Гория"}, -{"Grandma Yahoo", "Бабушка Яху"}, -{"broom", "метла"}, -{"Cave under the Cemetery", "Пещера под кладбищем"}, -{"Invisible Zora", "Невидимый зора"}, -{"bombed guard", "подорванный стражник"}, -{"crow", "ворон"}, -{"last guard", "последний стражник"}, -{"fight room", "комната с боем"}, -{"Mad Bomber", "Безумный бомбист"}, -{"Kanalet moat", "Ров Каналета"}, -{"north", "север"}, -{"sunken", "под водой"}, -{"south", "юг"}, -{"Cave south of Kanalet Castle", "Пещера к югу от замка Каналет"}, -{"Kiki the monkey", "Макака Кики"}, -{"Seashell bush in Mabe Village", "Куст с ракушкой в деревне Мабе"}, -{"Mad Batter", "Безумный нетопырь"}, -{"Mysterious Forest", "Таинственный лес"}, -{"song", "мелодия"}, -{"Martha the mermaid", "Русалка Марта"}, -{"Mr. Write", "Мистер Райт"}, -{"North of the Moblin cave", "Севернее пещеры моблинов"}, -{"North of Tabahl Wasteland", "Север Табальской пустоши"}, -{"Rock maze in Ukuku Prairie", "Каменный лабиринт на Укукских полях"}, -{"Island in the pond", "Остров в пруду"}, -{"last hole", "последняя яма"}, -{"cave on the climb", "пещера на подъеме"}, -{"east island", "восточный остров"}, -{"middle island", "средний остров"}, -{"race under 30 s", "гонка быстрее 30 с"}, -{"race under 35 s", "гонка быстрее 35 с"}, -{"race under 45 s", "гонка быстрее 45 с"}, -{"south island", "южный остров"}, -{"west island", "западный остров"}, -{"Cave by the river crossing", "Пещера у переправы через реку"}, -{"shelf", "полка"}, -{"Small island off the coast", "Островок у берега"}, -{"South of Martha's Bay", "Юг залива Марты"}, -{"southwest of Martha's Bay", "юго-запад залива Марты"}, -{"Chest in Goponga Swamp", "Сундук в топях Гопонга"}, -{"Syrup the witch", "Ведьма Сироп"}, -{"Tree south of Tail Cave", "Дерево к югу от Червячьего дворца"}, -{"five chest game", "игра с пятью сундуками"}, -{"bomb hole", "яма от бомбы"}, -{"crossing cave", "пещера-переход"}, -{"east bridge", "восточный мост"}, -{"east drop", "спуск на востоке"}, -{"left chest", "левый сундук"}, -{"blocks at the entrance", "блоки у входа"}, -{"chest at the entrance", "сундук у входа"}, -{"hole", "яма"}, -{"chest on the ledge", "сундук на уступе"}, -{"cave on the left climb", "пещера на левом подъеме"}, -{"cave by the rooster", "пещера у петуха"}, -{"way out", "выход"}, -{"under a rock", "под камнем"}, -{"Tarin at the beehive", "Тарин у улья"}, -{"last prize", "последний приз"}, -{"Tree in Ukuku Prairie", "Дерево на Укукских полях"}, -{"Ukuku cave", "Пещера Укуку"}, -{"east chest", "восточный сундук"}, -{"east item", "восточный предмет"}, -{"west item", "западный предмет"}, -{"Under the skull rock", "Под скалой-черепом"}, -{"Cave by the villa", "Пещера у виллы"}, -{"Washed up on the beach", "Выброшено на пляж"}, -{"spot in Tabahl Wasteland", "место в Табальской пустоши"}, -{"Forest crossing cave", "Лесная пещера-переход"}, -{"item", "предмет"}, -{"Forest north cave", "Северная лесная пещера"}, -{"south chest", "южный сундук"}, -{"Bush", "Куст"}, -{"spot", "место"}, -{"Pot", "Горшок"}, -{"Apple tree", "Яблоня"}, -{"Rock", "Камень"}, -{"Marin and Tarin's house", "дом Марин и Тарина"}, -{"the quadruplets' house", "дом с близнецами"}, -{"the Southern Face Shrine", "юг Ликова святилища"}, -{"the witch's hut", "домик ведьмы"}, -{"the library", "библиотека"}, -{"the Seashell Mansion", "Особняк ракушек"}, -{"a telephone booth", "телефонная будка"}, -{"the Town Tool Shop", "«Полезная лавка»"}, -{"the Dream Shrine", "святилище Сна"}, -{"north-west", "северо-запад"}, -{"north-east", "северо-восток"}, -{"south-west", "юго-запад"}, -{"south-east", "юго-восток"}, -{"centre", "центр"}, -{"middle", "середина"}, -{"inside", "внутри"}, -{"Trendy Game: prize %s", "«Зал удачи»: приз %s"}, -{"Pot (%s)", "Горшок (%s)"}, -{"%s of 3", "%s из 3"}, -{"Slime eye", "Слизнеглаз"}, -{"Angler", "Удильщик"}, -{"Slime eel", "Слизнеугорь"}, -{"Master stalfos", "Грандсталфос"}, -{"Eagle", "Мракокрыл"}, -{"Hothead", "Головеш"}, -{"Owl statue long hallway", "Статуя филина: длинный коридор"}, -{"Owl statue spinies", "Статуя филина: колючкины"}, -{"Owl statue 3 of a kind", "Статуя филина: тривмасть"}, -{"Owl statue first switch", "Статуя филина: первый переключатель"}, -{"Owl statue push puzzle", "Статуя филина: загадка с блоками"}, -{"Owl statue past hinox", "Статуя филина: за хиноксом"}, -{"Owl statue basement north", "Статуя филина: подвал, север"}, -{"Owl statue arrow", "Статуя филина: стрела"}, -{"Owl statue northwest", "Статуя филина: северо-запад"}, -{"Owl statue", "Статуя филина"}, -{"Owl statue triple stalfos", "Статуя филина: три сталфоса"}, -{"Owl statue before slime eel", "Статуя филина: перед слизнеугрем"}, -{"Owl statue ledge", "Статуя филина: уступ"}, -{"Owl statue southeast", "Статуя филина: юго-восток"}, -{"Owl statue canal", "Статуя филина: канал"}, -{"Owl statue ball", "Статуя филина: шар"}, -{"Owl statue kirbys", "Статуя филина: кирби"}, -{"Owl statue hookshot chest", "Статуя филина: сундук с крюкострелом"}, -{"Owl statue above smasher", "Статуя филина: над крушителем"}, -{"Owl statue below gibdos", "Статуя филина: под гибдо"}, -{"Owl statue eye statue", "Статуя филина: статуя-глаз"}, -{"Owl statue nine switches", "Статуя филина: девять переключателей"}, -{"Owl statue first switches", "Статуя филина: первые переключатели"}, -{"Owl statue before mini boss", "Статуя филина: перед мини-боссом"}, -{"Owl statue below D8", "Статуя филина: под 8-м подземельем"}, -// separators (tools/menu_strings.py) -{", ", ", "}, -{": ", ": "}, -// not used any more {"Set the buttons and keys for the game. F1, Esc, Home or Back + Start always open this menu.", "Кнопки и клавиши для игры. F1, Esc, Home или Back + Start всегда открывают это меню."}, {"! This folder is synced by OneDrive", "! Эта папка синхронизируется с OneDrive"}, {"About %.0f GB of game files will upload to your OneDrive.", "Около %.0f ГБ файлов игры будет загружено в ваш OneDrive."}, diff --git a/runtime/ui/lang/zh-Hans.inc b/runtime/ui/lang/zh-Hans.inc index 93d5c2687..aab4e7313 100644 --- a/runtime/ui/lang/zh-Hans.inc +++ b/runtime/ui/lang/zh-Hans.inc @@ -226,13 +226,9 @@ {"Appearance", "外观"}, {"Layout", "布局"}, {"Follow thumb", "跟随拇指"}, -{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "开:拇指按在左下方任何位置,它都会移到那里。关:保持在原位(可在“编辑触控布局”中移动)。"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it with the Layout button).", "开:拇指按在左下方任何位置,它都会移到那里。关:保持在原位(可用布局按钮移动)。"}, {"Layout button", "布局按钮"}, {"A button at the top, next to the menu button, that lets you move and resize the on-screen buttons.", "屏幕顶部菜单按钮旁的按钮,可移动屏幕按钮并调整其大小。"}, -{"Load a save first.", "请先读取存档。"}, -{"Edit touch layout", "编辑触控布局"}, -{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "在游戏画面上移动屏幕按钮,调整各按钮的大小或将其隐藏。游玩时可用。"}, {"Reset touch layout", "重置触控布局"}, {"Puts every on-screen button back in its place, at its size, shown.", "将所有屏幕按钮恢复到原来的位置和大小,并重新显示。"}, // runtime/ui/difficulty.mm @@ -691,6 +687,7 @@ {"The game's echo in caves, dungeons and big rooms.", "游戏在洞窟、迷宫和大房间里的回声。"}, {"LAS Recomp menu sounds", "LAS Recomp 菜单音效"}, {"Sounds when you move around and pick things in LAS Recomp's menus.", "在 LAS Recomp 菜单中移动和选择时的音效。"}, +{"Load a save first.", "请先读取存档。"}, {"Quit", "退出"}, {"Reset Game", "重置游戏"}, {"Progress since your last save is lost.", "上次存档之后的进度会丢失。"}, @@ -1090,6 +1087,8 @@ {"Reveal spoilers", "显示剧透"}, {"Search items and places", "搜索道具和地点"}, {"Search the spoiler log", "搜索剧透日志"}, +{"Useful items only", "仅显示有用道具"}, +{"Hide checked", "隐藏已检查"}, // runtime/ui/tracker_overlay.mm {"Seashells", "贝壳"}, {"%d Small Keys", "%d把小钥匙"}, @@ -1122,7 +1121,6 @@ {"needs %s +%d", "需要%s 等%d项"}, {"Filter: %s", "筛选:%s"}, {"In logic now", "当前逻辑内"}, -{"Hide checked", "隐藏已检查"}, {"Filters", "筛选"}, {"Room %c%d", "房间%c%d"}, {"trick logic", "技巧逻辑"}, @@ -1177,9 +1175,9 @@ {"This is where Manbo's Mambo drops you. You can't warp here directly.", "这是曼波鱼之曼波曲送你到达的地方,无法直接传送到这里。"}, {"%d places", "%d个地点"}, {"Load a save to warp.", "读取存档后才能传送。"}, +{"Places", "地点"}, {"Search", "搜索"}, {"Search places...", "搜索地点..."}, -{"Places", "地点"}, {"Link is here", "林克在这里"}, // warp_data.h {"Dungeons", "迷宫"}, @@ -1306,28 +1304,112 @@ {"Building game files (%s tasks)", "正在构建游戏文件(%s项任务)"}, {"Triforce hunt: %s", "三角力量搜集:%s"}, // spoiler_view.py -{"Settings: %s", "设置:%s"}, -{"Walkthrough", "攻略"}, -{"Items by area", "各区域道具"}, -{"Starting items: %s", "初始道具:%s"}, +{"Route", "路线"}, +{"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "只列出通关种子所需的内容。每一站都能用前面各站获得的道具到达。"}, +{"Finish", "结局"}, +{"Everything useful step by step", "所有有用内容,逐步列出"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "每一步都能用之前步骤得到的东西完成(同一步内顺序随意)。"}, {"Only items that open things up are listed; rupees", "只列出能开辟新路的道具;卢比"}, {"traps and similar are left out.", "陷阱等不列出。"}, -{"Finish", "结局"}, -{"With all eight instruments", "集齐八件乐器后"}, -{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "在达达高原的圣蛋前演奏风鱼之歌。"}, -{"(No walkthrough", "(没有攻略"}, -{"this seed has no request.json to recompute it.)", "这个种子没有可用于重新计算的request.json。)"}, +{"Items by area", "各区域道具"}, +{"Dungeon rooms", "迷宫房间"}, +{"Where each moved room is now and where it came from.", "每个被移动的房间现在的位置和原来的位置。"}, {"Entrances", "入口"}, -{"%s entrance leads into %s", "%s的入口通往%s"}, -{"%s:", "%s:"}, {"Doors", "门"}, -{"door -> interior it now leads into", "门 -> 现在通往的室内"}, +{"each door and where it now leads", "每扇门及其现在通往的地方"}, +{"Settings: %s", "设置:%s"}, +{"(This seed has no step list.)", "(此种子没有步骤列表。)"}, +{"%s entrance leads into %s", "%s的入口通往%s"}, +{"Unchanged (%s)", "未变(%s)"}, {"Exits", "出口"}, -{"interior -> where leaving it puts you", "室内 -> 离开后到达的地方"}, +{"each way out and where it puts you", "每个出口及其通往的地方"}, +{"Starting items: %s", "初始道具:%s"}, +{"%s:", "%s:"}, +{"Small items (%s)", "小道具(%s)"}, {"%s - enter through %s's entrance", "%s - 从%s的入口进入"}, {"%s's Soul", "%s之魂"}, {"%s' Soul", "%s之魂"}, +{"room %s", "房间%s"}, +{"The last of the %s Triforce pieces you need ends the game.", "你需要的%s块三角力量碎片中的最后一块会结束游戏。"}, +{"2nd", "第2件"}, +{"shelf", "架子"}, +{"second item", "第2件道具"}, +{"third item", "第3件道具"}, +{"west side door", "西侧的门"}, +{"east side door", "东侧的门"}, +{"Fire cave", "火焰洞窟"}, +{"north door", "北门"}, +{"south door", "南门"}, +{"Wind Fish's egg", "圣蛋"}, +{"rooster house", "飞天鸡之家"}, +{"Telephone booth by Turtle Rock", "乌龟岩旁的电话亭"}, +{"Mad Batter well", "小恶魔的水井"}, +{"Tal Tal crossing cave", "达达穿越洞窟"}, +{"west door", "西门"}, +{"east door", "东门"}, +{"Mountain cave", "山洞窟"}, +{"bottom door", "底部的门"}, +{"top door", "顶部的门"}, +{"ledge door", "台阶上的门"}, +{"Papahl's cave", "巴巴尔的洞窟"}, +{"lower door", "下方的门"}, +{"upper door", "上方的门"}, +{"Bird Key cave", "飞鸟钥匙洞窟"}, +{"Five chest cave", "五宝箱洞窟"}, +{"Five chest game", "五宝箱游戏"}, +{"exit door", "出口的门"}, +{"Rainbow cave", "彩虹洞窟"}, +{"outer west door", "外侧西门"}, +{"inner west door", "内侧西门"}, +{"inner east door", "内侧东门"}, +{"outer east door", "外侧东门"}, +{"Fairy fountain", "大妖精之泉"}, +{"Tal Tal east", "达达东"}, +{"Cave to Eagle's Tower", "通往大鹫塔的洞窟"}, +{"Cave by Angler's Tunnel", "灯鱼怪瀑布池旁的洞窟"}, +{"Damp cave", "潮湿洞窟"}, +{"Raft cave", "木筏洞窟"}, +{"Telephone booth", "电话亭"}, +{"Moblin cave", "莫力布林洞窟"}, +{"Dampe's house", "丹培的小屋"}, +{"Rapids Ride raft shop", "急流泛舟木筏店"}, +{"Mysterious Forest", "不可思议森林"}, +{"north cave", "北洞窟"}, +{"Kanalet tunnel", "卡那列隧道"}, +{"Telephone booth by Kanalet Castle", "卡那列城旁的电话亭"}, +{"roof west door", "屋顶西门"}, +{"roof east door", "屋顶东门"}, +{"front door", "前门"}, +{"Cave south of Kanalet Castle", "卡那列城南的洞窟"}, +{"Forest crossing cave", "森林穿越洞窟"}, +{"forest", "森林"}, +{"north side door", "北侧的门"}, +{"Ukuku cave", "乌库库洞窟"}, +{"Ukuku Prairie north", "乌库库草原北"}, +{"Ukuku Prairie west", "乌库库草原西"}, +{"Cave to Face Shrine", "通往脸孔神殿的洞窟"}, +{"Fairy fountain by the Armos maze", "阿默斯迷阵旁的大妖精之泉"}, +{"Flying Rooster's grave", "飞天鸡之墓"}, +{"River crossing cave", "渡河洞窟"}, +{"Armos maze cave", "阿默斯迷阵洞窟"}, +{"BowWow's kennel", "汪汪的狗屋"}, +{"Marin and Tarin's house", "玛林和塔林的家"}, +{"Mabe Village library", "梅贝村图书馆"}, +{"Cliff cave by the bay", "海湾旁的悬崖洞窟"}, +{"plateau door", "高地上的门"}, +{"Cave behind Richard's villa", "理查德别墅后面的洞窟"}, +{"rabbit house", "兔子的家"}, +{"Zora's house", "卓拉之家"}, +{"bombed cave", "炸开的洞窟"}, +{"Lanmola cave", "拉内莫拉洞窟"}, +{"east dive spot", "东侧潜水点"}, +{"west dive spot", "西侧潜水点"}, +{"Sale's banana house", "瑟勒的家"}, +{"bay", "海湾"}, +{"Tunnel to the bay Mad Batter", "通往海湾小恶魔的隧道"}, +{"Mermaid statue", "人鱼像"}, +{"Boomerang cave", "回旋镖洞窟"}, +{"Ghost's house", "鬼怪之家"}, {"Signpost Maze", "路牌迷宫"}, {"Ancient Ruins", "南方神殿"}, {"west", "西"}, @@ -1338,98 +1420,180 @@ {"50 Rupees", "50卢比"}, {"100 Rupees", "100卢比"}, {"300 Rupees", "300卢比"}, +{"1 Rupee", "1卢比"}, {"Trap!", "陷阱!"}, {"Frog Song of Soul", "蛙之灵魂曲"}, {"Chamber Stone", "嵌石"}, +{"Triforce piece", "三角力量碎片"}, {"Beach chest", "海滩宝箱"}, +{"Chest on the beach", "海滩上的宝箱"}, {"Taltal entrance chest", "达达入口宝箱"}, +{"chest at the entrance", "入口的宝箱"}, {"Taltal east left chest", "达达东侧左边宝箱"}, +{"left chest", "左宝箱"}, {"Dream shrine right", "梦之祠堂右侧"}, +{"right", "右"}, {"Armos cave", "阿默斯洞窟"}, {"Goponga cave left", "果彭加洞窟左侧"}, +{"left", "左"}, {"Goponga cave right", "果彭加洞窟右侧"}, {"Ukuku cave west chest", "乌库库洞窟西宝箱"}, +{"west chest", "西宝箱"}, {"Ukuku cave east chest", "乌库库洞窟东宝箱"}, +{"east chest", "东宝箱"}, {"Kanalet south cave", "卡那列南洞窟"}, {"Swamp chest", "沼泽宝箱"}, +{"Chest in Goponga Swamp", "果彭加沼泽的宝箱"}, {"Taltal left ascent cave", "达达左侧上坡洞窟"}, +{"cave on the left climb", "左侧上坡路上的洞窟"}, {"Taltal ledge chest", "达达崖边宝箱"}, +{"chest on the ledge", "台阶上的宝箱"}, {"Taltal 5 chest puzzle", "达达5宝箱谜题"}, +{"five chest game", "五宝箱游戏"}, {"Taltal west chest", "达达西宝箱"}, {"Villa cave", "别墅洞窟"}, +{"Cave by the villa", "别墅旁的洞窟"}, {"Woods crossing cave chest", "森林穿越洞窟宝箱"}, +{"chest", "宝箱"}, {"Woods north cave chest", "森林北洞窟宝箱"}, +{"Forest north cave", "森林北洞窟"}, {"Woods south chest", "森林南宝箱"}, +{"south chest", "南宝箱"}, {"Woods north chest", "森林北宝箱"}, +{"north chest", "北宝箱"}, {"Fishing", "钓鱼"}, +{"Fishing pond", "钓鱼池"}, +{"50 points", "50分"}, {"Fishing orange", "钓鱼(橙色鱼)"}, +{"orange fish", "橙色鱼"}, {"Fishing loose", "钓鱼(地上道具)"}, +{"loose item", "地上道具"}, +{"100 points", "100分"}, +{"150 points", "150分"}, {"Fishing cheep cheep", "钓鱼(泡泡鱼)"}, +{"Cheep Cheep", "泡泡鱼"}, {"Fishing ol baron", "钓鱼(鱼王)"}, +{"Ol' Baron", "鱼王"}, {"Rapids race", "急流竞速"}, +{"race under 45 s", "45秒内完成竞速"}, +{"race under 35 s", "35秒内完成竞速"}, +{"race under 30 s", "30秒内完成竞速"}, {"Rapids middle island", "急流中央小岛"}, +{"middle island", "中央小岛"}, {"Rapids west island", "急流西小岛"}, +{"west island", "西小岛"}, {"Dampe page", "丹培的页面"}, +{"Dampe", "丹培"}, +{"first page", "第一页"}, {"Dampe heart challenge", "丹培的心之考验"}, +{"Dampe's heart challenge", "丹培的心之考验"}, +{"second page", "第二页"}, {"Dampe bottle challenge", "丹培的瓶子考验"}, +{"Dampe's bottle challenge", "丹培的瓶子考验"}, {"Dampe final", "丹培的最终考验"}, +{"Dampe's final challenge", "丹培的最终考验"}, {"Walrus", "海象"}, {"Ghost reward", "鬼怪的谢礼"}, +{"Ghost's reward", "鬼怪的谢礼"}, +{"song", "乐曲"}, {"Manbo", "曼波"}, {"Mamu", "玛穆"}, {"Mad batter bay", "小恶魔(海湾)"}, +{"Mad Batter", "小恶魔"}, {"Mad batter taltal", "小恶魔(达达)"}, {"Mad batter woods", "小恶魔(森林)"}, {"Invisible zora", "隐形的卓拉"}, +{"Invisible Zora", "隐形的卓拉"}, {"Goriya trader", "果里亚的交换"}, +{"Goriya", "果里亚"}, +{"trade", "交换"}, {"Mamasha", "玛玛莎"}, {"Ciao ciao", "嗷嗷"}, +{"Ciao Ciao", "嗷嗷"}, {"Sale", "瑟勒"}, {"Kiki", "吱吱猴"}, +{"Kiki the monkey", "吱吱猴"}, {"Tarin ukuku", "塔林(乌库库)"}, +{"Tarin at the beehive", "蜂巢旁的塔林"}, {"Chef bear", "熊厨师"}, +{"Chef Bear", "熊厨师"}, {"Papahl", "巴巴尔"}, {"Christine trade", "克莉丝汀的交换"}, +{"Christine", "克莉丝汀"}, {"Christine grateful", "克莉丝汀的谢礼"}, +{"thank-you gift", "谢礼"}, {"Mr write", "莱特先生"}, +{"Mr. Write", "莱特先生"}, {"Grandma yahoo", "亚荷奶奶"}, +{"Grandma Yahoo", "亚荷奶奶"}, +{"broom", "扫把"}, {"Bay fisherman", "海湾的渔夫"}, +{"Fisherman under the bridge", "桥下的渔夫"}, {"Mermaid martha", "人鱼玛莎"}, +{"Martha the mermaid", "人鱼玛莎"}, {"Mermaid cave", "人鱼洞窟"}, {"Lanmola", "拉内莫拉"}, {"Armos knight", "巨霸阿默斯"}, +{"Armos Knight", "巨霸阿默斯"}, {"Washed up", "冲上海滩"}, +{"Washed up on the beach", "冲上海滩"}, {"Dream shrine left", "梦之祠堂左侧"}, {"Taltal rooster cave", "达达飞天鸡洞窟"}, +{"cave by the rooster", "飞天鸡旁的洞窟"}, {"Woods loose", "森林地上道具"}, {"Pothole final", "坑洞田最终"}, +{"last hole", "最后的洞"}, {"5 seashell reward", "5个贝壳奖励"}, +{"5 shells", "5个贝壳"}, {"15 seashell reward", "15个贝壳奖励"}, +{"15 shells", "15个贝壳"}, {"30 seashell reward", "30个贝壳奖励"}, +{"30 shells", "30个贝壳"}, {"40 seashell reward", "40个贝壳奖励"}, +{"40 shells", "40个贝壳"}, {"50 seashell reward", "50个贝壳奖励"}, +{"50 shells", "50个贝壳"}, {"Animal village northwest", "动物村西北"}, +{"Northwest of Animal Village", "动物村西北"}, {"Animal village cave", "动物村洞窟"}, +{"Cave by Animal Village", "动物村旁的洞窟"}, {"Taltal entrance blocks", "达达入口砖块"}, +{"blocks at the entrance", "入口的砖块"}, {"North wasteland", "北部荒地"}, +{"North of Tabahl Wasteland", "塔巴林地北"}, {"Desert cave", "沙漠洞窟"}, +{"Cave in Yarna Desert", "亚那沙漠的洞窟"}, {"Graveyard cave", "坟场洞窟"}, +{"Cave under the Cemetery", "坟场下的洞窟"}, {"Mabe well", "梅贝水井"}, {"Ukuku cave west loose", "乌库库洞窟西地上道具"}, +{"west item", "西侧道具"}, {"Ukuku cave east loose", "乌库库洞窟东地上道具"}, +{"east item", "东侧道具"}, {"Rapids ascent cave", "急流上坡洞窟"}, +{"cave on the climb", "上坡路上的洞窟"}, {"Taltal crossing cave", "达达穿越洞窟"}, +{"crossing cave", "穿越洞窟"}, {"Taltal west escape", "达达西侧出口"}, +{"way out", "出口"}, {"Above turtle rock", "乌龟岩上方"}, +{"Ledge above Turtle Rock", "乌龟岩上方的台阶"}, {"Pothole north", "坑洞田北"}, +{"north", "北"}, {"Woods crossing cave loose", "森林穿越洞窟地上道具"}, +{"item", "道具"}, {"Woods north cave loose", "森林北洞窟地上道具"}, {"Diamond island", "菱形小岛"}, {"Kanalet crow", "卡那列魔鸦"}, +{"crow", "魔鸦"}, {"Kanalet mad bomber", "卡那列炸弹狂"}, +{"Mad Bomber", "炸弹狂"}, {"Kanalet kill room", "卡那列战斗房间"}, +{"fight room", "战斗房间"}, {"Kanalet bombed guard", "卡那列被炸卫兵"}, +{"bombed guard", "被炸的卫兵"}, {"Kanalet final guard", "卡那列最后的卫兵"}, +{"last guard", "最后的卫兵"}, {"Owl statue moblin cave", "猫头鹰石像(莫力布林洞窟)"}, {"Owl statue pothole", "猫头鹰石像(坑洞田)"}, {"Owl statue above cave", "猫头鹰石像(洞窟上方)"}, @@ -1438,8 +1602,222 @@ {"Owl statue maze", "猫头鹰石像(迷阵)"}, {"Owl statue rapids", "猫头鹰石像(急流)"}, {"Owl statue taltal east", "猫头鹰石像(达达东)"}, +{"Instrument", "乐器"}, +{"Moldorm", "巨霸长尾"}, +{"West hallway", "西走廊"}, +{"Middle ledge", "中央台阶"}, +{"3 of a kind", "维加斯"}, +{"Bomb room", "炸弹房间"}, +{"Middle kill chest", "中央击败宝箱"}, +{"Spark chest", "电球宝箱"}, +{"Button chest", "按钮宝箱"}, +{"Stalfos chest", "骷髅战士宝箱"}, +{"4 zols chest", "四只泥怪宝箱"}, +{"Beetles", "珠壳虫"}, +{"Owl statue long hallway", "猫头鹰石像(长走廊)"}, +{"Owl statue spinies", "猫头鹰石像(刺刺龟)"}, +{"Owl statue 3 of a kind", "猫头鹰石像(维加斯)"}, +{"Genie", "壶魔王"}, +{"Boos", "害羞幽灵"}, +{"Long room west", "长房间西"}, +{"Long room east", "长房间东"}, +{"Vacuum mouth room", "吸气口房间"}, +{"Kill puzzle", "击败谜题"}, +{"West chest", "西宝箱"}, +{"Double stalfos", "双骷髅战士"}, +{"Double shy guys", "双嘿虎"}, +{"Entrance chest", "入口宝箱"}, +{"Single shy guy", "单只嘿虎"}, +{"Peg circle", "桩子圆圈"}, +{"Owl statue first switch", "猫头鹰石像(第一个开关)"}, +{"Owl statue push puzzle", "猫头鹰石像(推箱谜题)"}, +{"Owl statue past hinox", "猫头鹰石像(西诺克斯之后)"}, +{"Slime eye", "巨霸泥怪"}, +{"Pre boss", "首领前"}, +{"Triple bombites", "三只轰弹"}, +{"North chest", "北宝箱"}, +{"Central ledge", "中央台阶"}, +{"Central chest", "中央宝箱"}, +{"East ledge", "东侧台阶"}, +{"Pairodds", "晃头鸟"}, +{"Five zols", "五只泥怪"}, +{"Basement north", "地下北"}, +{"Basement west", "地下西"}, +{"Basement south", "地下南"}, +{"Hallway", "走廊"}, +{"Hallway side room", "走廊侧房"}, +{"Vacuum mouth", "吸气口"}, +{"Owl statue basement north", "猫头鹰石像(地下北)"}, +{"Owl statue arrow", "猫头鹰石像(箭)"}, +{"Owl statue northwest", "猫头鹰石像(西北)"}, +{"Angler", "灯鱼怪"}, +{"East side north", "东侧北"}, +{"East side south", "东侧南"}, +{"West ledge", "西侧台阶"}, +{"East of puzzle", "谜题东"}, +{"South of puzzle", "谜题南"}, +{"Sunken item", "水下道具"}, +{"Central room", "中央房间"}, +{"Small island", "小岛"}, +{"Ledge north", "台阶北"}, +{"Statues chest", "雕像宝箱"}, +{"Lobby", "大厅"}, +{"Crystals", "水晶"}, +{"Owl statue", "猫头鹰石像"}, +{"Slime eel", "钩尾鲶"}, +{"Master stalfos", "骷髅剑士至尊"}, +{"Crystal blocks", "水晶砖块"}, +{"Past master stalfos", "骷髅剑士至尊之后"}, +{"Water tunnel", "水道"}, +{"Right side north", "右侧北"}, +{"Right side middle", "右侧中"}, +{"Right side east", "右侧东"}, +{"Helmasaurs", "跟屁兽"}, +{"West stairs chest", "西侧楼梯宝箱"}, +{"Near entrance", "入口附近"}, +{"Owl statue triple stalfos", "猫头鹰石像(三只骷髅战士)"}, +{"Owl statue before slime eel", "猫头鹰石像(钩尾鲶之前)"}, +{"Facade", "妖面"}, +{"Far northwest", "最西北"}, +{"Far northeast", "最东北"}, +{"Statue line north", "雕像列北"}, +{"Statue line south", "雕像列南"}, +{"Wizzrobe pegs", "长袍魔法师桩子"}, +{"Canal", "水渠"}, +{"3 wizzrobes", "三个长袍魔法师"}, +{"Tile room", "地砖房间"}, +{"Gated hallway north", "栅门走廊北"}, +{"Gated hallway south", "栅门走廊南"}, +{"Southwest chest", "西南宝箱"}, +{"Wizzrobes ledge", "长袍魔法师台阶"}, +{"Owl statue ledge", "猫头鹰石像(台阶)"}, +{"Owl statue southeast", "猫头鹰石像(东南)"}, +{"Owl statue canal", "猫头鹰石像(水渠)"}, +{"Eagle", "刑天翁"}, +{"Like likes", "来客来客"}, +{"1f west", "1楼西"}, +{"3ofakind north", "维加斯北"}, +{"2f horseheads", "2楼马头"}, +{"Hinox", "西诺克斯"}, +{"3ofakind south", "维加斯南"}, +{"Blue pegs chest", "蓝色桩子宝箱"}, +{"3f horseheads", "3楼马头"}, +{"Grim creeper", "哔可鸟使者"}, +{"Owl statue ball", "猫头鹰石像(铁球)"}, +{"Owl statue kirbys", "猫头鹰石像(卡比)"}, +{"Owl statue hookshot chest", "猫头鹰石像(钩索宝箱)"}, +{"Hothead", "巨霸炎魔"}, +{"Left exit chest", "左出口宝箱"}, +{"Dodongos", "多东哥"}, +{"Northern ledge", "北侧台阶"}, +{"Gibdos", "吉波得"}, +{"Beamos chest", "光线石像宝箱"}, +{"Statue", "雕像"}, +{"Torches", "火把"}, +{"West vire", "西侧拜尔"}, +{"West roomba", "西侧推推"}, +{"Surrounded by blocks", "被砖块包围"}, +{"Sparks chest", "电球宝箱"}, +{"East of pots", "壶的东侧"}, +{"East roomba", "东侧推推"}, +{"Far southwest", "最西南"}, +{"Far southeast", "最东南"}, +{"Owl statue above smasher", "猫头鹰石像(铁球力士上方)"}, +{"Owl statue below gibdos", "猫头鹰石像(吉波得下方)"}, +{"Owl statue eye statue", "猫头鹰石像(眼睛雕像)"}, +{"Northern chest", "北侧宝箱"}, +{"Zol pots", "泥怪的壶"}, +{"North orbs", "北侧水晶球"}, +{"South orbs", "南侧水晶球"}, +{"East color puzzle", "东侧颜色谜题"}, +{"West color puzzle", "西侧颜色谜题"}, +{"Putters", "烛台"}, +{"Owl statue nine switches", "猫头鹰石像(九个开关)"}, +{"Owl statue first switches", "猫头鹰石像(最初的开关)"}, +{"Owl statue before mini boss", "猫头鹰石像(中首领之前)"}, +{"Rupee", "卢比"}, {"stone beak", "石喙"}, -// spoiler logs +// tracker.py +{"spot above the cave", "洞窟上方地点"}, +{"spot above Key Cavern", "钥匙地洞上方地点"}, +{"Sunken item in the bay passage", "海湾通道的水下道具"}, +{"Tree on the beach", "海滩上的树"}, +{"bonk", "撞击"}, +{"spot on the beach", "海滩上的地点"}, +{"Beside the Seashell Mansion", "贝壳馆旁"}, +{"spot in Yarna Desert", "亚那沙漠的地点"}, +{"South of Yarna Desert", "亚那沙漠南"}, +{"BowWow's doghouse", "汪汪的狗屋"}, +{"dig", "挖掘点"}, +{"Ghost's grave", "鬼怪的坟墓"}, +{"Pot in %s", "%s的壶"}, +{"the Ghost's house", "鬼怪之家"}, +{"West of Goponga Swamp", "果彭加沼泽西"}, +{"Kanalet moat", "卡那列护城河"}, +{"sunken", "水下"}, +{"south", "南"}, +{"Seashell bush in Mabe Village", "梅贝村的贝壳草丛"}, +{"North of the Moblin cave", "莫力布林洞窟北"}, +{"Rock maze in Ukuku Prairie", "乌库库草原的石头迷阵"}, +{"Island in the pond", "池塘中的小岛"}, +{"east island", "东小岛"}, +{"south island", "南小岛"}, +{"Cave by the river crossing", "渡河处旁的洞窟"}, +{"Rock maze", "石头迷阵"}, +{"Small island off the coast", "海岸外的小岛"}, +{"South of Martha's Bay", "玛莎海湾南"}, +{"southwest of Martha's Bay", "玛莎海湾西南"}, +{"Syrup the witch", "魔法婆婆"}, +{"Tree south of Tail Cave", "长尾大空洞南的树"}, +{"bomb hole", "炸弹洞"}, +{"east bridge", "东桥"}, +{"east drop", "东侧落下点"}, +{"hole", "洞"}, +{"sunken item", "水下道具"}, +{"under a rock", "石头下"}, +{"Tarin", "塔林"}, +{"last prize", "最后的奖品"}, +{"Tree in Ukuku Prairie", "乌库库草原的树"}, +{"Under the skull rock", "骷髅岩下"}, +{"spot in Tabahl Wasteland", "塔巴林地的地点"}, +{"Bush", "草丛"}, +{"spot", "地点"}, +{"Pot", "壶"}, +{"Apple tree", "苹果树"}, +{"Rock", "石头"}, +{"the quadruplets' house", "四小福的家"}, +{"the Southern Face Shrine", "南方神殿"}, +{"the witch's hut", "魔法婆婆的家"}, +{"the library", "图书馆"}, +{"the Seashell Mansion", "贝壳馆"}, +{"a telephone booth", "电话亭"}, +{"the Town Tool Shop", "村庄道具店"}, +{"the Dream Shrine", "梦之祠堂"}, +{"north-west", "西北"}, +{"north-east", "东北"}, +{"south-west", "西南"}, +{"south-east", "东南"}, +{"centre", "中央"}, +{"middle", "中间"}, +{"inside", "内部"}, +{"Trendy Game: prize %s", "流行游戏:奖品%s"}, +{"Pot (%s)", "壶(%s)"}, +{"%s of 3", "第%s个(共3个)"}, +{"Owl statue below D8", "猫头鹰石像(第8迷宫下方)"}, +// separators (tools/menu_strings.py) +{", ", "、"}, +{": ", ":"}, +// not used any more +{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "开:拇指按在左下方任何位置,它都会移到那里。关:保持在原位(可在“编辑触控布局”中移动)。"}, +{"Edit touch layout", "编辑触控布局"}, +{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "在游戏画面上移动屏幕按钮,调整各按钮的大小或将其隐藏。游玩时可用。"}, +{"Walkthrough", "攻略"}, +{"With all eight instruments", "集齐八件乐器后"}, +{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "在达达高原的圣蛋前演奏风鱼之歌。"}, +{"(No walkthrough", "(没有攻略"}, +{"this seed has no request.json to recompute it.)", "这个种子没有可用于重新计算的request.json。)"}, +{"door -> interior it now leads into", "门 -> 现在通往的室内"}, +{"interior -> where leaving it puts you", "室内 -> 离开后到达的地方"}, {"boss cutscenes", "首领过场动画"}, {"enemy minibosses", "敌人中首领"}, {"escape bottle", "逃脱瓶子"}, @@ -1463,8 +1841,6 @@ {"Mabe bushes", "梅贝草丛"}, {"Shop slot3 1st", "商店第3格(第1件)"}, {"Shop slot3 2nd", "商店第3格(第2件)"}, -{"Tarin", "塔林"}, -{"Rock maze", "石头迷阵"}, {"double stalfos", "双骷髅战士"}, {"putters", "烛台"}, {"south orbs", "南侧水晶球"}, @@ -1533,12 +1909,9 @@ {"past master stalfos", "骷髅剑士至尊之后"}, {"right side east", "右侧东"}, {"water tunnel", "水道"}, -{"west chest", "西宝箱"}, -{"3 wizzrobes", "三个长袍魔法师"}, {"statue line north", "雕像列北"}, {"wizzrobe pegs", "长袍魔法师桩子"}, {"central room", "中央房间"}, -{"north chest", "北宝箱"}, {"Stalfos Note", "骷髅剑士至尊的留言"}, {"south of puzzle", "谜题南"}, {"west ledge", "西侧台阶"}, @@ -1548,7 +1921,6 @@ {"middle kill chest", "中央击败宝箱"}, {"stalfos chest", "骷髅战士宝箱"}, {"angler", "灯鱼怪"}, -{"3 of a kind", "维加斯"}, {"middle ledge", "中央台阶"}, {"moldorm", "巨霸长尾"}, {"west hallway", "西走廊"}, @@ -1557,10 +1929,8 @@ {"tile room", "地砖房间"}, {"wizzrobes ledge", "长袍魔法师台阶"}, {"Rooster statue", "飞天鸡像"}, -{"Moblin cave", "莫力布林洞窟"}, {"Bow Wow", "汪汪"}, {"like likes", "来客来客"}, -{"chest", "宝箱"}, {"Taltal bomb hole", "达达炸弹洞"}, {"Taltal east bridge", "达达东桥"}, {"Taltal west dig", "达达西挖掘点"}, @@ -1578,11 +1948,9 @@ {"west roomba", "西侧推推"}, {"west vire", "西侧拜尔"}, {"Squish Trap", "压扁陷阱"}, -{"2f horseheads", "2楼马头"}, {"blue pegs chest", "蓝色桩子宝箱"}, {"east ledge", "东侧台阶"}, {"grim creeper", "哔可鸟使者"}, -{"3f horseheads", "3楼马头"}, {"Shop slot5 3rd", "商店第5格(第3件)"}, {"Shop slot5 4th", "商店第5格(第4件)"}, {"Shop slot5 5th", "商店第5格(第5件)"}, @@ -1591,7 +1959,6 @@ {"final", "最终"}, {"Shop slot6", "商店第6格"}, {"Taltal east drop", "达达东侧落下点"}, -{"River crossing cave", "渡河洞窟"}, {"South bay sunken", "海湾南水下"}, {"Kanalet moat north", "卡那列护城河北"}, {"Rapids south island", "急流南小岛"}, @@ -1599,7 +1966,6 @@ {"north orbs", "北侧水晶球"}, {"east color puzzle", "东侧颜色谜题"}, {"spark chest", "电球宝箱"}, -{"4 zols chest", "四只泥怪宝箱"}, {"genie", "壶魔王"}, {"long room west", "长房间西"}, {"entrance chest", "入口宝箱"}, @@ -1607,7 +1973,6 @@ {"peg circle", "桩子圆圈"}, {"basement north", "地下北"}, {"east of puzzle", "谜题东"}, -{"sunken item", "水下道具"}, {"ledge north", "台阶北"}, {"statues chest", "雕像宝箱"}, {"crystals", "水晶"}, @@ -1623,10 +1988,7 @@ {"gated hallway south", "栅门走廊南"}, {"southwest chest", "西南宝箱"}, {"eagle", "刑天翁"}, -{"1f west", "1楼西"}, -{"3ofakind north", "维加斯北"}, {"hinox", "西诺克斯"}, -{"3ofakind south", "维加斯南"}, {"hothead", "巨霸炎魔"}, {"gibdos", "吉波得"}, {"statue", "雕像"}, @@ -1719,18 +2081,14 @@ {"trendsanity", "流行游戏随机"}, {"Slime Eel", "钩尾鲶"}, {"Evil Orb", "重珠壳虫"}, -{"Genie", "壶魔王"}, -{"Facade", "妖面"}, {"Evil Eagle", "刑天翁"}, {"Slime Eye", "巨霸泥怪"}, {"Angler Fish", "灯鱼怪"}, {"Hot Head", "巨霸炎魔"}, -{"Moldorm", "巨霸长尾"}, {"enemy bosses", "敌人首领"}, {"miniboss souls", "中首领之魂"}, {"Blaino", "拳击怪"}, {"Grim Creeper", "哔可鸟使者"}, -{"Hinox", "西诺克斯"}, {"Smasher", "铁球力士"}, {"Dodongo Snakes", "多东哥"}, {"Avalaunch", "巨霸吨"}, @@ -1742,188 +2100,6 @@ {"ghost item", "鬼怪为道具"}, {"tunic upgrades", "衣服效果叠加"}, {"digs", "挖掘点"}, -{"Rupee", "卢比"}, -// tracker.py -{"5 shells", "5个贝壳"}, -{"15 shells", "15个贝壳"}, -{"30 shells", "30个贝壳"}, -{"40 shells", "40个贝壳"}, -{"50 shells", "50个贝壳"}, -{"spot above the cave", "洞窟上方地点"}, -{"spot above Key Cavern", "钥匙地洞上方地点"}, -{"Ledge above Turtle Rock", "乌龟岩上方的台阶"}, -{"Cave by Animal Village", "动物村旁的洞窟"}, -{"Northwest of Animal Village", "动物村西北"}, -{"Armos Knight", "巨霸阿默斯"}, -{"Fisherman under the bridge", "桥下的渔夫"}, -{"Sunken item in the bay passage", "海湾通道的水下道具"}, -{"Tree on the beach", "海滩上的树"}, -{"bonk", "撞击"}, -{"Chest on the beach", "海滩上的宝箱"}, -{"spot on the beach", "海滩上的地点"}, -{"Beside the Seashell Mansion", "贝壳馆旁"}, -{"Chef Bear", "熊厨师"}, -{"Christine", "克莉丝汀"}, -{"thank-you gift", "谢礼"}, -{"trade", "交换"}, -{"Ciao Ciao", "嗷嗷"}, -{"Dampe's bottle challenge", "丹培的瓶子考验"}, -{"Dampe's final challenge", "丹培的最终考验"}, -{"Dampe's heart challenge", "丹培的心之考验"}, -{"Dampe", "丹培"}, -{"first page", "第一页"}, -{"second page", "第二页"}, -{"Cave in Yarna Desert", "亚那沙漠的洞窟"}, -{"spot in Yarna Desert", "亚那沙漠的地点"}, -{"South of Yarna Desert", "亚那沙漠南"}, -{"BowWow's doghouse", "汪汪的狗屋"}, -{"dig", "挖掘点"}, -{"left", "左"}, -{"right", "右"}, -{"Fishing pond", "钓鱼池"}, -{"100 points", "100分"}, -{"150 points", "150分"}, -{"50 points", "50分"}, -{"Cheep Cheep", "泡泡鱼"}, -{"loose item", "地上道具"}, -{"Ol' Baron", "鱼王"}, -{"orange fish", "橙色鱼"}, -{"Ghost's grave", "鬼怪的坟墓"}, -{"Pot in %s", "%s的壶"}, -{"the Ghost's house", "鬼怪之家"}, -{"Ghost's reward", "鬼怪的谢礼"}, -{"West of Goponga Swamp", "果彭加沼泽西"}, -{"Goriya", "果里亚"}, -{"Grandma Yahoo", "亚荷奶奶"}, -{"broom", "扫把"}, -{"Cave under the Cemetery", "坟场下的洞窟"}, -{"Invisible Zora", "隐形的卓拉"}, -{"bombed guard", "被炸的卫兵"}, -{"crow", "魔鸦"}, -{"last guard", "最后的卫兵"}, -{"fight room", "战斗房间"}, -{"Mad Bomber", "炸弹狂"}, -{"Kanalet moat", "卡那列护城河"}, -{"north", "北"}, -{"sunken", "水下"}, -{"south", "南"}, -{"Cave south of Kanalet Castle", "卡那列城南的洞窟"}, -{"Kiki the monkey", "吱吱猴"}, -{"Seashell bush in Mabe Village", "梅贝村的贝壳草丛"}, -{"Mad Batter", "小恶魔"}, -{"Mysterious Forest", "不可思议森林"}, -{"song", "乐曲"}, -{"Martha the mermaid", "人鱼玛莎"}, -{"Mr. Write", "莱特先生"}, -{"North of the Moblin cave", "莫力布林洞窟北"}, -{"North of Tabahl Wasteland", "塔巴林地北"}, -{"Rock maze in Ukuku Prairie", "乌库库草原的石头迷阵"}, -{"Island in the pond", "池塘中的小岛"}, -{"last hole", "最后的洞"}, -{"cave on the climb", "上坡路上的洞窟"}, -{"east island", "东小岛"}, -{"middle island", "中央小岛"}, -{"race under 30 s", "30秒内完成竞速"}, -{"race under 35 s", "35秒内完成竞速"}, -{"race under 45 s", "45秒内完成竞速"}, -{"south island", "南小岛"}, -{"west island", "西小岛"}, -{"Cave by the river crossing", "渡河处旁的洞窟"}, -{"shelf", "架子"}, -{"Small island off the coast", "海岸外的小岛"}, -{"South of Martha's Bay", "玛莎海湾南"}, -{"southwest of Martha's Bay", "玛莎海湾西南"}, -{"Chest in Goponga Swamp", "果彭加沼泽的宝箱"}, -{"Syrup the witch", "魔法婆婆"}, -{"Tree south of Tail Cave", "长尾大空洞南的树"}, -{"five chest game", "五宝箱游戏"}, -{"bomb hole", "炸弹洞"}, -{"crossing cave", "穿越洞窟"}, -{"east bridge", "东桥"}, -{"east drop", "东侧落下点"}, -{"left chest", "左宝箱"}, -{"blocks at the entrance", "入口的砖块"}, -{"chest at the entrance", "入口的宝箱"}, -{"hole", "洞"}, -{"chest on the ledge", "台阶上的宝箱"}, -{"cave on the left climb", "左侧上坡路上的洞窟"}, -{"cave by the rooster", "飞天鸡旁的洞窟"}, -{"way out", "出口"}, -{"under a rock", "石头下"}, -{"Tarin at the beehive", "蜂巢旁的塔林"}, -{"last prize", "最后的奖品"}, -{"Tree in Ukuku Prairie", "乌库库草原的树"}, -{"Ukuku cave", "乌库库洞窟"}, -{"east chest", "东宝箱"}, -{"east item", "东侧道具"}, -{"west item", "西侧道具"}, -{"Under the skull rock", "骷髅岩下"}, -{"Cave by the villa", "别墅旁的洞窟"}, -{"Washed up on the beach", "冲上海滩"}, -{"spot in Tabahl Wasteland", "塔巴林地的地点"}, -{"Forest crossing cave", "森林穿越洞窟"}, -{"item", "道具"}, -{"Forest north cave", "森林北洞窟"}, -{"south chest", "南宝箱"}, -{"Bush", "草丛"}, -{"spot", "地点"}, -{"Pot", "壶"}, -{"Apple tree", "苹果树"}, -{"Rock", "石头"}, -{"Marin and Tarin's house", "玛林和塔林的家"}, -{"the quadruplets' house", "四小福的家"}, -{"the Southern Face Shrine", "南方神殿"}, -{"the witch's hut", "魔法婆婆的家"}, -{"the library", "图书馆"}, -{"the Seashell Mansion", "贝壳馆"}, -{"a telephone booth", "电话亭"}, -{"the Town Tool Shop", "村庄道具店"}, -{"the Dream Shrine", "梦之祠堂"}, -{"north-west", "西北"}, -{"north-east", "东北"}, -{"south-west", "西南"}, -{"south-east", "东南"}, -{"centre", "中央"}, -{"middle", "中间"}, -{"inside", "内部"}, -{"Trendy Game: prize %s", "流行游戏:奖品%s"}, -{"Pot (%s)", "壶(%s)"}, -{"%s of 3", "第%s个(共3个)"}, -{"Slime eye", "巨霸泥怪"}, -{"Angler", "灯鱼怪"}, -{"Slime eel", "钩尾鲶"}, -{"Master stalfos", "骷髅剑士至尊"}, -{"Eagle", "刑天翁"}, -{"Hothead", "巨霸炎魔"}, -{"Owl statue long hallway", "猫头鹰石像(长走廊)"}, -{"Owl statue spinies", "猫头鹰石像(刺刺龟)"}, -{"Owl statue 3 of a kind", "猫头鹰石像(维加斯)"}, -{"Owl statue first switch", "猫头鹰石像(第一个开关)"}, -{"Owl statue push puzzle", "猫头鹰石像(推箱谜题)"}, -{"Owl statue past hinox", "猫头鹰石像(西诺克斯之后)"}, -{"Owl statue basement north", "猫头鹰石像(地下北)"}, -{"Owl statue arrow", "猫头鹰石像(箭)"}, -{"Owl statue northwest", "猫头鹰石像(西北)"}, -{"Owl statue", "猫头鹰石像"}, -{"Owl statue triple stalfos", "猫头鹰石像(三只骷髅战士)"}, -{"Owl statue before slime eel", "猫头鹰石像(钩尾鲶之前)"}, -{"Owl statue ledge", "猫头鹰石像(台阶)"}, -{"Owl statue southeast", "猫头鹰石像(东南)"}, -{"Owl statue canal", "猫头鹰石像(水渠)"}, -{"Owl statue ball", "猫头鹰石像(铁球)"}, -{"Owl statue kirbys", "猫头鹰石像(卡比)"}, -{"Owl statue hookshot chest", "猫头鹰石像(钩索宝箱)"}, -{"Owl statue above smasher", "猫头鹰石像(铁球力士上方)"}, -{"Owl statue below gibdos", "猫头鹰石像(吉波得下方)"}, -{"Owl statue eye statue", "猫头鹰石像(眼睛雕像)"}, -{"Owl statue nine switches", "猫头鹰石像(九个开关)"}, -{"Owl statue first switches", "猫头鹰石像(最初的开关)"}, -{"Owl statue before mini boss", "猫头鹰石像(中首领之前)"}, -{"Owl statue below D8", "猫头鹰石像(第8迷宫下方)"}, -// separators (tools/menu_strings.py) -{", ", "、"}, -{": ", ":"}, -// not used any more {"Set the buttons and keys for the game. F1, Esc, Home or Back + Start always open this menu.", "设置游戏中的手柄按键和键盘按键。随时可以用F1、Esc、Home或Back+Start打开此菜单。"}, {"! This folder is synced by OneDrive", "! 此文件夹由OneDrive同步"}, {"About %.0f GB of game files will upload to your OneDrive.", "约%.0f GB的游戏文件会上传到你的OneDrive。"}, diff --git a/runtime/ui/lang/zh-Hant.inc b/runtime/ui/lang/zh-Hant.inc index 8ea20439a..746744f18 100644 --- a/runtime/ui/lang/zh-Hant.inc +++ b/runtime/ui/lang/zh-Hant.inc @@ -226,13 +226,9 @@ {"Appearance", "外觀"}, {"Layout", "配置"}, {"Follow thumb", "跟隨拇指"}, -{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "開:拇指按在左下方任何位置,它都會移到那裡。關:維持在原位(可在「編輯觸控配置」中移動)。"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it with the Layout button).", "開:拇指按在左下方任何位置,它都會移到那裡。關:維持在原位(可用配置按鈕移動)。"}, {"Layout button", "配置按鈕"}, {"A button at the top, next to the menu button, that lets you move and resize the on-screen buttons.", "畫面上方選單按鈕旁的按鈕,可移動螢幕按鈕並調整大小。"}, -{"Load a save first.", "請先載入存檔。"}, -{"Edit touch layout", "編輯觸控配置"}, -{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "在遊戲畫面上移動螢幕按鈕,調整各按鈕的大小或將其隱藏。遊玩時可用。"}, {"Reset touch layout", "重設觸控配置"}, {"Puts every on-screen button back in its place, at its size, shown.", "將所有螢幕按鈕恢復到原本的位置和大小,並重新顯示。"}, // runtime/ui/difficulty.mm @@ -691,6 +687,7 @@ {"The game's echo in caves, dungeons and big rooms.", "遊戲在洞窟、迷宮和大房間裡的回音。"}, {"LAS Recomp menu sounds", "LAS Recomp 選單音效"}, {"Sounds when you move around and pick things in LAS Recomp's menus.", "在 LAS Recomp 選單中移動和選擇時的音效。"}, +{"Load a save first.", "請先載入存檔。"}, {"Quit", "結束"}, {"Reset Game", "重設遊戲"}, {"Progress since your last save is lost.", "上次存檔後的進度將會遺失。"}, @@ -1090,6 +1087,8 @@ {"Reveal spoilers", "顯示劇透"}, {"Search items and places", "搜尋道具和地點"}, {"Search the spoiler log", "搜尋劇透紀錄"}, +{"Useful items only", "僅顯示有用道具"}, +{"Hide checked", "隱藏已檢查"}, // runtime/ui/tracker_overlay.mm {"Seashells", "貝殼"}, {"%d Small Keys", "%d把小鑰匙"}, @@ -1122,7 +1121,6 @@ {"needs %s +%d", "需要%s +%d"}, {"Filter: %s", "篩選:%s"}, {"In logic now", "目前在邏輯內"}, -{"Hide checked", "隱藏已檢查"}, {"Filters", "篩選"}, {"Room %c%d", "房間%c%d"}, {"trick logic", "技巧邏輯"}, @@ -1177,9 +1175,9 @@ {"This is where Manbo's Mambo drops you. You can't warp here directly.", "這是曼波魚之曼波曲會帶你到的地方。無法直接傳送到這裡。"}, {"%d places", "%d個地點"}, {"Load a save to warp.", "載入存檔後才能傳送。"}, +{"Places", "地點"}, {"Search", "搜尋"}, {"Search places...", "搜尋地點..."}, -{"Places", "地點"}, {"Link is here", "林克在這裡"}, // warp_data.h {"Dungeons", "迷宮"}, @@ -1306,28 +1304,112 @@ {"Building game files (%s tasks)", "正在建置遊戲檔案(%s個工作)"}, {"Triforce hunt: %s", "三角力量收集:%s"}, // spoiler_view.py -{"Settings: %s", "設定:%s"}, -{"Walkthrough", "攻略"}, -{"Items by area", "各區域的道具"}, -{"Starting items: %s", "初始道具:%s"}, +{"Route", "路線"}, +{"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "只列出破關種子所需的內容。每一站都能用前面各站取得的道具到達。"}, +{"Finish", "終點"}, +{"Everything useful step by step", "所有有用內容,逐步列出"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "每一步都能用前面步驟取得的道具完成(同一步內順序不拘)。"}, {"Only items that open things up are listed; rupees", "只列出能開啟新區域的道具;盧比"}, {"traps and similar are left out.", "陷阱等都不列出。"}, -{"Finish", "終點"}, -{"With all eight instruments", "集齊八個樂器後"}, -{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "在達達高原的聖蛋前演奏風魚之歌。"}, -{"(No walkthrough", "(沒有攻略"}, -{"this seed has no request.json to recompute it.)", "這個種子沒有可重新計算的request.json。)"}, +{"Items by area", "各區域的道具"}, +{"Dungeon rooms", "迷宮房間"}, +{"Where each moved room is now and where it came from.", "每個被移動的房間現在的位置與原本的位置。"}, {"Entrances", "入口"}, -{"%s entrance leads into %s", "%s的入口通往%s"}, -{"%s:", "%s:"}, {"Doors", "門"}, -{"door -> interior it now leads into", "門 -> 現在通往的內部"}, +{"each door and where it now leads", "每扇門及其現在通往的地方"}, +{"Settings: %s", "設定:%s"}, +{"(This seed has no step list.)", "(此種子沒有步驟清單。)"}, +{"%s entrance leads into %s", "%s的入口通往%s"}, +{"Unchanged (%s)", "未變(%s)"}, {"Exits", "出口"}, -{"interior -> where leaving it puts you", "內部 -> 離開後出現的地方"}, +{"each way out and where it puts you", "每個出口及其通往的地方"}, +{"Starting items: %s", "初始道具:%s"}, +{"%s:", "%s:"}, +{"Small items (%s)", "小道具(%s)"}, {"%s - enter through %s's entrance", "%s - 從%s的入口進入"}, {"%s's Soul", "%s之魂"}, {"%s' Soul", "%s之魂"}, +{"room %s", "房間%s"}, +{"The last of the %s Triforce pieces you need ends the game.", "你需要的%s個三角力量碎片中的最後一個會結束遊戲。"}, +{"2nd", "第2個"}, +{"shelf", "架子"}, +{"second item", "第2個道具"}, +{"third item", "第3個道具"}, +{"west side door", "西側的門"}, +{"east side door", "東側的門"}, +{"Fire cave", "火焰洞窟"}, +{"north door", "北門"}, +{"south door", "南門"}, +{"Wind Fish's egg", "聖蛋"}, +{"rooster house", "飛天雞之家"}, +{"Telephone booth by Turtle Rock", "烏龜巖旁的電話亭"}, +{"Mad Batter well", "瘋狂蝙蝠的水井"}, +{"Tal Tal crossing cave", "達達穿越洞窟"}, +{"west door", "西門"}, +{"east door", "東門"}, +{"Mountain cave", "山洞窟"}, +{"bottom door", "底部的門"}, +{"top door", "頂部的門"}, +{"ledge door", "崖邊的門"}, +{"Papahl's cave", "巴巴爾的洞窟"}, +{"lower door", "下方的門"}, +{"upper door", "上方的門"}, +{"Bird Key cave", "飛鳥鑰匙洞窟"}, +{"Five chest cave", "五寶箱洞窟"}, +{"Five chest game", "五寶箱遊戲"}, +{"exit door", "出口的門"}, +{"Rainbow cave", "彩虹洞窟"}, +{"outer west door", "外側西門"}, +{"inner west door", "內側西門"}, +{"inner east door", "內側東門"}, +{"outer east door", "外側東門"}, +{"Fairy fountain", "大妖精之泉"}, +{"Tal Tal east", "達達東"}, +{"Cave to Eagle's Tower", "通往大鷲塔的洞窟"}, +{"Cave by Angler's Tunnel", "燈魚怪瀑布池旁的洞窟"}, +{"Damp cave", "潮濕洞窟"}, +{"Raft cave", "木筏洞窟"}, +{"Telephone booth", "電話亭"}, +{"Moblin cave", "莫力布林洞窟"}, +{"Dampe's house", "丹培的家"}, +{"Rapids Ride raft shop", "急流泛舟木筏店"}, +{"Mysterious Forest", "不可思議森林"}, +{"north cave", "北洞窟"}, +{"Kanalet tunnel", "卡那列隧道"}, +{"Telephone booth by Kanalet Castle", "卡那列城旁的電話亭"}, +{"roof west door", "屋頂西門"}, +{"roof east door", "屋頂東門"}, +{"front door", "前門"}, +{"Cave south of Kanalet Castle", "卡那列城南的洞窟"}, +{"Forest crossing cave", "森林穿越洞窟"}, +{"forest", "森林"}, +{"north side door", "北側的門"}, +{"Ukuku cave", "烏庫庫洞窟"}, +{"Ukuku Prairie north", "烏庫庫草原北"}, +{"Ukuku Prairie west", "烏庫庫草原西"}, +{"Cave to Face Shrine", "通往臉孔神殿的洞窟"}, +{"Fairy fountain by the Armos maze", "阿默斯迷宮旁的大妖精之泉"}, +{"Flying Rooster's grave", "飛天雞之墓"}, +{"River crossing cave", "渡河洞窟"}, +{"Armos maze cave", "阿默斯迷宮洞窟"}, +{"BowWow's kennel", "汪汪的狗屋"}, +{"Marin and Tarin's house", "瑪林和塔林的家"}, +{"Mabe Village library", "梅貝村圖書館"}, +{"Cliff cave by the bay", "海灣旁的懸崖洞窟"}, +{"plateau door", "高地上的門"}, +{"Cave behind Richard's villa", "理查德別墅後面的洞窟"}, +{"rabbit house", "兔子的家"}, +{"Zora's house", "卓拉的家"}, +{"bombed cave", "炸開的洞窟"}, +{"Lanmola cave", "拉內莫拉洞窟"}, +{"east dive spot", "東側潛水點"}, +{"west dive spot", "西側潛水點"}, +{"Sale's banana house", "瑟勒的家"}, +{"bay", "海灣"}, +{"Tunnel to the bay Mad Batter", "通往海灣瘋狂蝙蝠的隧道"}, +{"Mermaid statue", "人魚像"}, +{"Boomerang cave", "迴旋鏢洞窟"}, +{"Ghost's house", "鬼怪的家"}, {"Signpost Maze", "路牌迷宮"}, {"Ancient Ruins", "古代遺蹟"}, {"west", "西"}, @@ -1338,98 +1420,180 @@ {"50 Rupees", "50盧比"}, {"100 Rupees", "100盧比"}, {"300 Rupees", "300盧比"}, +{"1 Rupee", "1盧比"}, {"Trap!", "陷阱!"}, {"Frog Song of Soul", "蛙之靈魂曲"}, {"Chamber Stone", "嵌石"}, +{"Triforce piece", "三角力量碎片"}, {"Beach chest", "海灘寶箱"}, +{"Chest on the beach", "海灘上的寶箱"}, {"Taltal entrance chest", "達達入口寶箱"}, +{"chest at the entrance", "入口的寶箱"}, {"Taltal east left chest", "達達東側左寶箱"}, +{"left chest", "左寶箱"}, {"Dream shrine right", "夢之祠堂右"}, +{"right", "右"}, {"Armos cave", "阿默斯洞窟"}, {"Goponga cave left", "果彭加洞窟左"}, +{"left", "左"}, {"Goponga cave right", "果彭加洞窟右"}, {"Ukuku cave west chest", "烏庫庫洞窟西寶箱"}, +{"west chest", "西寶箱"}, {"Ukuku cave east chest", "烏庫庫洞窟東寶箱"}, +{"east chest", "東寶箱"}, {"Kanalet south cave", "卡那列南洞窟"}, {"Swamp chest", "沼澤寶箱"}, +{"Chest in Goponga Swamp", "果彭加沼澤的寶箱"}, {"Taltal left ascent cave", "達達左側上坡洞窟"}, +{"cave on the left climb", "左側上坡的洞窟"}, {"Taltal ledge chest", "達達崖邊寶箱"}, +{"chest on the ledge", "崖邊的寶箱"}, {"Taltal 5 chest puzzle", "達達五寶箱謎題"}, +{"five chest game", "五寶箱遊戲"}, {"Taltal west chest", "達達西寶箱"}, {"Villa cave", "別墅洞窟"}, +{"Cave by the villa", "別墅旁的洞窟"}, {"Woods crossing cave chest", "森林穿越洞窟寶箱"}, +{"chest", "寶箱"}, {"Woods north cave chest", "森林北洞窟寶箱"}, +{"Forest north cave", "森林北洞窟"}, {"Woods south chest", "森林南寶箱"}, +{"south chest", "南寶箱"}, {"Woods north chest", "森林北寶箱"}, +{"north chest", "北寶箱"}, {"Fishing", "釣魚"}, +{"Fishing pond", "釣魚池"}, +{"50 points", "50分"}, {"Fishing orange", "釣魚(橘色)"}, +{"orange fish", "橘色的魚"}, {"Fishing loose", "釣魚(掉落物)"}, +{"loose item", "掉落物"}, +{"100 points", "100分"}, +{"150 points", "150分"}, {"Fishing cheep cheep", "釣魚(泡泡魚)"}, +{"Cheep Cheep", "泡泡魚"}, {"Fishing ol baron", "釣魚(魚王)"}, +{"Ol' Baron", "魚王"}, {"Rapids race", "急流泛舟比賽"}, +{"race under 45 s", "45秒內完成比賽"}, +{"race under 35 s", "35秒內完成比賽"}, +{"race under 30 s", "30秒內完成比賽"}, {"Rapids middle island", "急流中間小島"}, +{"middle island", "中間小島"}, {"Rapids west island", "急流西小島"}, +{"west island", "西小島"}, {"Dampe page", "丹培(嵌板頁)"}, +{"Dampe", "丹培"}, +{"first page", "第一頁"}, {"Dampe heart challenge", "丹培心之考驗"}, +{"Dampe's heart challenge", "丹培的心之考驗"}, +{"second page", "第二頁"}, {"Dampe bottle challenge", "丹培瓶子考驗"}, +{"Dampe's bottle challenge", "丹培的瓶子考驗"}, {"Dampe final", "丹培最終考驗"}, +{"Dampe's final challenge", "丹培的最終考驗"}, {"Walrus", "海象"}, {"Ghost reward", "鬼怪的謝禮"}, +{"Ghost's reward", "鬼怪的謝禮"}, +{"song", "歌曲"}, {"Manbo", "曼波"}, {"Mamu", "瑪穆"}, {"Mad batter bay", "瘋狂蝙蝠(海灣)"}, +{"Mad Batter", "瘋狂蝙蝠"}, {"Mad batter taltal", "瘋狂蝙蝠(達達)"}, {"Mad batter woods", "瘋狂蝙蝠(森林)"}, {"Invisible zora", "隱形的卓拉"}, +{"Invisible Zora", "隱形的卓拉"}, {"Goriya trader", "果里亞交易"}, +{"Goriya", "果里亞"}, +{"trade", "交換"}, {"Mamasha", "瑪瑪莎"}, {"Ciao ciao", "嗷嗷"}, +{"Ciao Ciao", "嗷嗷"}, {"Sale", "瑟勒"}, {"Kiki", "吱吱猴"}, +{"Kiki the monkey", "吱吱猴"}, {"Tarin ukuku", "塔林(烏庫庫)"}, +{"Tarin at the beehive", "蜂窩旁的塔林"}, {"Chef bear", "熊廚師"}, +{"Chef Bear", "熊廚師"}, {"Papahl", "巴巴爾"}, {"Christine trade", "克莉絲汀交易"}, +{"Christine", "克莉絲汀"}, {"Christine grateful", "克莉絲汀的謝禮"}, +{"thank-you gift", "謝禮"}, {"Mr write", "萊特博士"}, +{"Mr. Write", "萊特博士"}, {"Grandma yahoo", "亞荷奶奶"}, +{"Grandma Yahoo", "亞荷奶奶"}, +{"broom", "掃把"}, {"Bay fisherman", "海灣漁夫"}, +{"Fisherman under the bridge", "橋下的漁夫"}, {"Mermaid martha", "人魚(瑪莎)"}, +{"Martha the mermaid", "人魚瑪莎"}, {"Mermaid cave", "人魚洞窟"}, {"Lanmola", "拉內莫拉"}, {"Armos knight", "巨霸阿默斯"}, +{"Armos Knight", "巨霸阿默斯"}, {"Washed up", "被沖上岸"}, +{"Washed up on the beach", "被沖上海灘"}, {"Dream shrine left", "夢之祠堂左"}, {"Taltal rooster cave", "達達飛天雞洞窟"}, +{"cave by the rooster", "飛天雞旁的洞窟"}, {"Woods loose", "森林掉落物"}, {"Pothole final", "坑洞田終點"}, +{"last hole", "最後一個洞"}, {"5 seashell reward", "5個貝殼的獎勵"}, +{"5 shells", "5個貝殼"}, {"15 seashell reward", "15個貝殼的獎勵"}, +{"15 shells", "15個貝殼"}, {"30 seashell reward", "30個貝殼的獎勵"}, +{"30 shells", "30個貝殼"}, {"40 seashell reward", "40個貝殼的獎勵"}, +{"40 shells", "40個貝殼"}, {"50 seashell reward", "50個貝殼的獎勵"}, +{"50 shells", "50個貝殼"}, {"Animal village northwest", "動物村西北"}, +{"Northwest of Animal Village", "動物村西北"}, {"Animal village cave", "動物村洞窟"}, +{"Cave by Animal Village", "動物村旁的洞窟"}, {"Taltal entrance blocks", "達達入口磚塊"}, +{"blocks at the entrance", "入口的磚塊"}, {"North wasteland", "北荒地"}, +{"North of Tabahl Wasteland", "塔巴林地北"}, {"Desert cave", "沙漠洞窟"}, +{"Cave in Yarna Desert", "亞那沙漠的洞窟"}, {"Graveyard cave", "墳場洞窟"}, +{"Cave under the Cemetery", "墳場下的洞窟"}, {"Mabe well", "梅貝水井"}, {"Ukuku cave west loose", "烏庫庫洞窟西掉落物"}, +{"west item", "西道具"}, {"Ukuku cave east loose", "烏庫庫洞窟東掉落物"}, +{"east item", "東道具"}, {"Rapids ascent cave", "急流上坡洞窟"}, +{"cave on the climb", "上坡途中的洞窟"}, {"Taltal crossing cave", "達達穿越洞窟"}, +{"crossing cave", "穿越洞窟"}, {"Taltal west escape", "達達西逃生路"}, +{"way out", "出口"}, {"Above turtle rock", "烏龜巖上方"}, +{"Ledge above Turtle Rock", "烏龜巖上方的崖邊"}, {"Pothole north", "坑洞田北"}, +{"north", "北"}, {"Woods crossing cave loose", "森林穿越洞窟掉落物"}, +{"item", "道具"}, {"Woods north cave loose", "森林北洞窟掉落物"}, {"Diamond island", "菱形小島"}, {"Kanalet crow", "卡那列烏鴉"}, +{"crow", "烏鴉"}, {"Kanalet mad bomber", "卡那列炸彈兵"}, +{"Mad Bomber", "炸彈兵"}, {"Kanalet kill room", "卡那列殲敵房間"}, +{"fight room", "戰鬥房間"}, {"Kanalet bombed guard", "卡那列被炸的守衛"}, +{"bombed guard", "被炸的守衛"}, {"Kanalet final guard", "卡那列最後的守衛"}, +{"last guard", "最後的守衛"}, {"Owl statue moblin cave", "貓頭鷹石像(莫力布林洞窟)"}, {"Owl statue pothole", "貓頭鷹石像(坑洞田)"}, {"Owl statue above cave", "貓頭鷹石像(洞窟上方)"}, @@ -1438,8 +1602,222 @@ {"Owl statue maze", "貓頭鷹石像(迷宮)"}, {"Owl statue rapids", "貓頭鷹石像(急流)"}, {"Owl statue taltal east", "貓頭鷹石像(達達東)"}, +{"Instrument", "樂器"}, +{"Moldorm", "巨霸長尾"}, +{"West hallway", "西走廊"}, +{"Middle ledge", "中間崖邊"}, +{"3 of a kind", "維加斯"}, +{"Bomb room", "炸彈房間"}, +{"Middle kill chest", "中間殲敵寶箱"}, +{"Spark chest", "電球寶箱"}, +{"Button chest", "開關寶箱"}, +{"Stalfos chest", "骷髏戰士寶箱"}, +{"4 zols chest", "四隻泥怪寶箱"}, +{"Beetles", "冒冒"}, +{"Owl statue long hallway", "貓頭鷹石像(長走廊)"}, +{"Owl statue spinies", "貓頭鷹石像(刺刺龜)"}, +{"Owl statue 3 of a kind", "貓頭鷹石像(維加斯)"}, +{"Genie", "壺魔王"}, +{"Boos", "害羞幽靈"}, +{"Long room west", "西側長房間"}, +{"Long room east", "東側長房間"}, +{"Vacuum mouth room", "吸入口房間"}, +{"Kill puzzle", "殲敵謎題"}, +{"West chest", "西寶箱"}, +{"Double stalfos", "兩隻骷髏戰士"}, +{"Double shy guys", "兩隻嘿呵"}, +{"Entrance chest", "入口寶箱"}, +{"Single shy guy", "一隻嘿呵"}, +{"Peg circle", "樁子圓圈"}, +{"Owl statue first switch", "貓頭鷹石像(第一個開關)"}, +{"Owl statue push puzzle", "貓頭鷹石像(推動謎題)"}, +{"Owl statue past hinox", "貓頭鷹石像(西諾克斯之後)"}, +{"Slime eye", "巨霸泥怪"}, +{"Pre boss", "首領前"}, +{"Triple bombites", "三隻轟彈"}, +{"North chest", "北寶箱"}, +{"Central ledge", "中央崖邊"}, +{"Central chest", "中央寶箱"}, +{"East ledge", "東崖邊"}, +{"Pairodds", "晃頭鳥"}, +{"Five zols", "五隻泥怪"}, +{"Basement north", "地下室北"}, +{"Basement west", "地下室西"}, +{"Basement south", "地下室南"}, +{"Hallway", "走廊"}, +{"Hallway side room", "走廊旁的房間"}, +{"Vacuum mouth", "吸入口"}, +{"Owl statue basement north", "貓頭鷹石像(地下室北)"}, +{"Owl statue arrow", "貓頭鷹石像(箭)"}, +{"Owl statue northwest", "貓頭鷹石像(西北)"}, +{"Angler", "燈魚怪"}, +{"East side north", "東側北"}, +{"East side south", "東側南"}, +{"West ledge", "西崖邊"}, +{"East of puzzle", "謎題東側"}, +{"South of puzzle", "謎題南側"}, +{"Sunken item", "水底道具"}, +{"Central room", "中央房間"}, +{"Small island", "小島"}, +{"Ledge north", "北崖邊"}, +{"Statues chest", "雕像寶箱"}, +{"Lobby", "大廳"}, +{"Crystals", "水晶"}, +{"Owl statue", "貓頭鷹石像"}, +{"Slime eel", "鉤尾鯰"}, +{"Master stalfos", "骷髏劍士至尊"}, +{"Crystal blocks", "水晶磚塊"}, +{"Past master stalfos", "骷髏劍士至尊之後"}, +{"Water tunnel", "水中隧道"}, +{"Right side north", "右側北"}, +{"Right side middle", "右側中間"}, +{"Right side east", "右側東"}, +{"Helmasaurs", "跟屁獸"}, +{"West stairs chest", "西樓梯寶箱"}, +{"Near entrance", "入口附近"}, +{"Owl statue triple stalfos", "貓頭鷹石像(三隻骷髏戰士)"}, +{"Owl statue before slime eel", "貓頭鷹石像(鉤尾鯰之前)"}, +{"Facade", "妖面"}, +{"Far northwest", "最西北"}, +{"Far northeast", "最東北"}, +{"Statue line north", "雕像列北"}, +{"Statue line south", "雕像列南"}, +{"Wizzrobe pegs", "長袍魔法師樁子"}, +{"Canal", "水道"}, +{"3 wizzrobes", "三隻長袍魔法師"}, +{"Tile room", "地磚房間"}, +{"Gated hallway north", "柵門走廊北"}, +{"Gated hallway south", "柵門走廊南"}, +{"Southwest chest", "西南寶箱"}, +{"Wizzrobes ledge", "長袍魔法師崖邊"}, +{"Owl statue ledge", "貓頭鷹石像(崖邊)"}, +{"Owl statue southeast", "貓頭鷹石像(東南)"}, +{"Owl statue canal", "貓頭鷹石像(水道)"}, +{"Eagle", "刑天翁"}, +{"Like likes", "來客來客"}, +{"1f west", "1樓西"}, +{"3ofakind north", "維加斯北"}, +{"2f horseheads", "2樓馬頭怪"}, +{"Hinox", "西諾克斯"}, +{"3ofakind south", "維加斯南"}, +{"Blue pegs chest", "藍色樁子寶箱"}, +{"3f horseheads", "3樓馬頭怪"}, +{"Grim creeper", "嗶可鳥使者"}, +{"Owl statue ball", "貓頭鷹石像(鐵球)"}, +{"Owl statue kirbys", "貓頭鷹石像(卡比)"}, +{"Owl statue hookshot chest", "貓頭鷹石像(鉤索寶箱)"}, +{"Hothead", "巨霸炎魔"}, +{"Left exit chest", "左出口寶箱"}, +{"Dodongos", "多東哥"}, +{"Northern ledge", "北側崖邊"}, +{"Gibdos", "吉波得"}, +{"Beamos chest", "雷射眼寶箱"}, +{"Statue", "雕像"}, +{"Torches", "火把"}, +{"West vire", "西側拜爾"}, +{"West roomba", "西側推推"}, +{"Surrounded by blocks", "被磚塊包圍"}, +{"Sparks chest", "電球寶箱"}, +{"East of pots", "壺的東側"}, +{"East roomba", "東側推推"}, +{"Far southwest", "最西南"}, +{"Far southeast", "最東南"}, +{"Owl statue above smasher", "貓頭鷹石像(鐵球怪上方)"}, +{"Owl statue below gibdos", "貓頭鷹石像(吉波得下方)"}, +{"Owl statue eye statue", "貓頭鷹石像(眼睛雕像)"}, +{"Northern chest", "北側寶箱"}, +{"Zol pots", "泥怪的壺"}, +{"North orbs", "北側寶珠"}, +{"South orbs", "南側寶珠"}, +{"East color puzzle", "東側顏色謎題"}, +{"West color puzzle", "西側顏色謎題"}, +{"Putters", "推推"}, +{"Owl statue nine switches", "貓頭鷹石像(九個開關)"}, +{"Owl statue first switches", "貓頭鷹石像(最初的開關)"}, +{"Owl statue before mini boss", "貓頭鷹石像(中頭目之前)"}, +{"Rupee", "盧比"}, {"stone beak", "石喙"}, -// spoiler logs +// tracker.py +{"spot above the cave", "洞窟上方的地點"}, +{"spot above Key Cavern", "鑰匙地洞上方的地點"}, +{"Sunken item in the bay passage", "海灣通道的水底道具"}, +{"Tree on the beach", "海灘上的樹"}, +{"bonk", "撞擊"}, +{"spot on the beach", "海灘上的地點"}, +{"Beside the Seashell Mansion", "貝殼館旁"}, +{"spot in Yarna Desert", "亞那沙漠的地點"}, +{"South of Yarna Desert", "亞那沙漠南"}, +{"BowWow's doghouse", "汪汪的狗屋"}, +{"dig", "挖掘"}, +{"Ghost's grave", "鬼怪的墳墓"}, +{"Pot in %s", "%s的壺"}, +{"the Ghost's house", "鬼怪的家"}, +{"West of Goponga Swamp", "果彭加沼澤西"}, +{"Kanalet moat", "卡那列護城河"}, +{"sunken", "水底"}, +{"south", "南"}, +{"Seashell bush in Mabe Village", "梅貝村的貝殼草叢"}, +{"North of the Moblin cave", "莫力布林洞窟北"}, +{"Rock maze in Ukuku Prairie", "烏庫庫草原的岩石迷宮"}, +{"Island in the pond", "池塘中的小島"}, +{"east island", "東小島"}, +{"south island", "南小島"}, +{"Cave by the river crossing", "渡河處旁的洞窟"}, +{"Rock maze", "岩石迷宮"}, +{"Small island off the coast", "海岸外的小島"}, +{"South of Martha's Bay", "瑪莎海灣南"}, +{"southwest of Martha's Bay", "瑪莎海灣西南"}, +{"Syrup the witch", "魔法婆婆"}, +{"Tree south of Tail Cave", "長尾大空洞南的樹"}, +{"bomb hole", "炸彈洞"}, +{"east bridge", "東吊橋"}, +{"east drop", "東落下處"}, +{"hole", "洞"}, +{"sunken item", "水底道具"}, +{"under a rock", "岩石下"}, +{"Tarin", "塔林"}, +{"last prize", "最後的獎品"}, +{"Tree in Ukuku Prairie", "烏庫庫草原的樹"}, +{"Under the skull rock", "骷髏岩下"}, +{"spot in Tabahl Wasteland", "塔巴林地的地點"}, +{"Bush", "草叢"}, +{"spot", "地點"}, +{"Pot", "壺"}, +{"Apple tree", "蘋果樹"}, +{"Rock", "岩石"}, +{"the quadruplets' house", "四小福的家"}, +{"the Southern Face Shrine", "南方神殿"}, +{"the witch's hut", "魔法婆婆的家"}, +{"the library", "圖書館"}, +{"the Seashell Mansion", "貝殼館"}, +{"a telephone booth", "電話亭"}, +{"the Town Tool Shop", "村莊道具店"}, +{"the Dream Shrine", "夢之祠堂"}, +{"north-west", "西北"}, +{"north-east", "東北"}, +{"south-west", "西南"}, +{"south-east", "東南"}, +{"centre", "中央"}, +{"middle", "中間"}, +{"inside", "內部"}, +{"Trendy Game: prize %s", "流行遊戲:獎品%s"}, +{"Pot (%s)", "壺(%s)"}, +{"%s of 3", "第%s個/共3個"}, +{"Owl statue below D8", "貓頭鷹石像(第8層下方)"}, +// separators (tools/menu_strings.py) +{", ", "、"}, +{": ", ":"}, +// not used any more +{"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "開:拇指按在左下方任何位置,它都會移到那裡。關:維持在原位(可在「編輯觸控配置」中移動)。"}, +{"Edit touch layout", "編輯觸控配置"}, +{"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "在遊戲畫面上移動螢幕按鈕,調整各按鈕的大小或將其隱藏。遊玩時可用。"}, +{"Walkthrough", "攻略"}, +{"With all eight instruments", "集齊八個樂器後"}, +{"play the Ballad of the Wind Fish at the egg on Tal Tal Heights.", "在達達高原的聖蛋前演奏風魚之歌。"}, +{"(No walkthrough", "(沒有攻略"}, +{"this seed has no request.json to recompute it.)", "這個種子沒有可重新計算的request.json。)"}, +{"door -> interior it now leads into", "門 -> 現在通往的內部"}, +{"interior -> where leaving it puts you", "內部 -> 離開後出現的地方"}, {"boss cutscenes", "首領過場動畫"}, {"enemy minibosses", "敵人中頭目"}, {"escape bottle", "逃脫用瓶子"}, @@ -1463,8 +1841,6 @@ {"Mabe bushes", "梅貝草叢"}, {"Shop slot3 1st", "商店第3格 第1個"}, {"Shop slot3 2nd", "商店第3格 第2個"}, -{"Tarin", "塔林"}, -{"Rock maze", "岩石迷宮"}, {"double stalfos", "兩隻骷髏戰士"}, {"putters", "推推"}, {"south orbs", "南側寶珠"}, @@ -1533,12 +1909,9 @@ {"past master stalfos", "骷髏劍士至尊之後"}, {"right side east", "右側東"}, {"water tunnel", "水中隧道"}, -{"west chest", "西寶箱"}, -{"3 wizzrobes", "三隻長袍魔法師"}, {"statue line north", "雕像列北"}, {"wizzrobe pegs", "長袍魔法師樁子"}, {"central room", "中央房間"}, -{"north chest", "北寶箱"}, {"Stalfos Note", "骷髏戰士的紙條"}, {"south of puzzle", "謎題南側"}, {"west ledge", "西崖邊"}, @@ -1548,7 +1921,6 @@ {"middle kill chest", "中間殲敵寶箱"}, {"stalfos chest", "骷髏戰士寶箱"}, {"angler", "燈魚怪"}, -{"3 of a kind", "維加斯"}, {"middle ledge", "中間崖邊"}, {"moldorm", "巨霸長尾"}, {"west hallway", "西走廊"}, @@ -1557,10 +1929,8 @@ {"tile room", "地磚房間"}, {"wizzrobes ledge", "長袍魔法師崖邊"}, {"Rooster statue", "飛天雞雕像"}, -{"Moblin cave", "莫力布林洞窟"}, {"Bow Wow", "汪汪"}, {"like likes", "來客來客"}, -{"chest", "寶箱"}, {"Taltal bomb hole", "達達炸彈洞"}, {"Taltal east bridge", "達達東吊橋"}, {"Taltal west dig", "達達西挖掘"}, @@ -1578,11 +1948,9 @@ {"west roomba", "西側推推"}, {"west vire", "西側拜爾"}, {"Squish Trap", "壓扁陷阱"}, -{"2f horseheads", "2樓馬頭怪"}, {"blue pegs chest", "藍色樁子寶箱"}, {"east ledge", "東崖邊"}, {"grim creeper", "嗶可鳥使者"}, -{"3f horseheads", "3樓馬頭怪"}, {"Shop slot5 3rd", "商店第5格 第3個"}, {"Shop slot5 4th", "商店第5格 第4個"}, {"Shop slot5 5th", "商店第5格 第5個"}, @@ -1591,7 +1959,6 @@ {"final", "最後"}, {"Shop slot6", "商店第6格"}, {"Taltal east drop", "達達東落下處"}, -{"River crossing cave", "渡河洞窟"}, {"South bay sunken", "海灣南水底"}, {"Kanalet moat north", "卡那列護城河北"}, {"Rapids south island", "急流南小島"}, @@ -1599,7 +1966,6 @@ {"north orbs", "北側寶珠"}, {"east color puzzle", "東側顏色謎題"}, {"spark chest", "電球寶箱"}, -{"4 zols chest", "四隻泥怪寶箱"}, {"genie", "壺魔王"}, {"long room west", "西側長房間"}, {"entrance chest", "入口寶箱"}, @@ -1607,7 +1973,6 @@ {"peg circle", "樁子圓圈"}, {"basement north", "地下室北"}, {"east of puzzle", "謎題東側"}, -{"sunken item", "水底道具"}, {"ledge north", "北崖邊"}, {"statues chest", "雕像寶箱"}, {"crystals", "水晶"}, @@ -1623,10 +1988,7 @@ {"gated hallway south", "柵門走廊南"}, {"southwest chest", "西南寶箱"}, {"eagle", "刑天翁"}, -{"1f west", "1樓西"}, -{"3ofakind north", "維加斯北"}, {"hinox", "西諾克斯"}, -{"3ofakind south", "維加斯南"}, {"hothead", "巨霸炎魔"}, {"gibdos", "吉波得"}, {"statue", "雕像"}, @@ -1719,18 +2081,14 @@ {"trendsanity", "流行遊戲模式"}, {"Slime Eel", "鉤尾鯰"}, {"Evil Orb", "邪惡寶珠"}, -{"Genie", "壺魔王"}, -{"Facade", "妖面"}, {"Evil Eagle", "刑天翁"}, {"Slime Eye", "巨霸泥怪"}, {"Angler Fish", "燈魚怪"}, {"Hot Head", "巨霸炎魔"}, -{"Moldorm", "巨霸長尾"}, {"enemy bosses", "敵人首領"}, {"miniboss souls", "中頭目之魂"}, {"Blaino", "拳擊怪"}, {"Grim Creeper", "嗶可鳥使者"}, -{"Hinox", "西諾克斯"}, {"Smasher", "鐵球怪"}, {"Dodongo Snakes", "多東哥"}, {"Avalaunch", "巨霸噸"}, @@ -1742,188 +2100,6 @@ {"ghost item", "鬼怪道具"}, {"tunic upgrades", "衣服升級"}, {"digs", "挖掘"}, -{"Rupee", "盧比"}, -// tracker.py -{"5 shells", "5個貝殼"}, -{"15 shells", "15個貝殼"}, -{"30 shells", "30個貝殼"}, -{"40 shells", "40個貝殼"}, -{"50 shells", "50個貝殼"}, -{"spot above the cave", "洞窟上方的地點"}, -{"spot above Key Cavern", "鑰匙地洞上方的地點"}, -{"Ledge above Turtle Rock", "烏龜巖上方的崖邊"}, -{"Cave by Animal Village", "動物村旁的洞窟"}, -{"Northwest of Animal Village", "動物村西北"}, -{"Armos Knight", "巨霸阿默斯"}, -{"Fisherman under the bridge", "橋下的漁夫"}, -{"Sunken item in the bay passage", "海灣通道的水底道具"}, -{"Tree on the beach", "海灘上的樹"}, -{"bonk", "撞擊"}, -{"Chest on the beach", "海灘上的寶箱"}, -{"spot on the beach", "海灘上的地點"}, -{"Beside the Seashell Mansion", "貝殼館旁"}, -{"Chef Bear", "熊廚師"}, -{"Christine", "克莉絲汀"}, -{"thank-you gift", "謝禮"}, -{"trade", "交換"}, -{"Ciao Ciao", "嗷嗷"}, -{"Dampe's bottle challenge", "丹培的瓶子考驗"}, -{"Dampe's final challenge", "丹培的最終考驗"}, -{"Dampe's heart challenge", "丹培的心之考驗"}, -{"Dampe", "丹培"}, -{"first page", "第一頁"}, -{"second page", "第二頁"}, -{"Cave in Yarna Desert", "亞那沙漠的洞窟"}, -{"spot in Yarna Desert", "亞那沙漠的地點"}, -{"South of Yarna Desert", "亞那沙漠南"}, -{"BowWow's doghouse", "汪汪的狗屋"}, -{"dig", "挖掘"}, -{"left", "左"}, -{"right", "右"}, -{"Fishing pond", "釣魚池"}, -{"100 points", "100分"}, -{"150 points", "150分"}, -{"50 points", "50分"}, -{"Cheep Cheep", "泡泡魚"}, -{"loose item", "掉落物"}, -{"Ol' Baron", "魚王"}, -{"orange fish", "橘色的魚"}, -{"Ghost's grave", "鬼怪的墳墓"}, -{"Pot in %s", "%s的壺"}, -{"the Ghost's house", "鬼怪的家"}, -{"Ghost's reward", "鬼怪的謝禮"}, -{"West of Goponga Swamp", "果彭加沼澤西"}, -{"Goriya", "果里亞"}, -{"Grandma Yahoo", "亞荷奶奶"}, -{"broom", "掃把"}, -{"Cave under the Cemetery", "墳場下的洞窟"}, -{"Invisible Zora", "隱形的卓拉"}, -{"bombed guard", "被炸的守衛"}, -{"crow", "烏鴉"}, -{"last guard", "最後的守衛"}, -{"fight room", "戰鬥房間"}, -{"Mad Bomber", "炸彈兵"}, -{"Kanalet moat", "卡那列護城河"}, -{"north", "北"}, -{"sunken", "水底"}, -{"south", "南"}, -{"Cave south of Kanalet Castle", "卡那列城南的洞窟"}, -{"Kiki the monkey", "吱吱猴"}, -{"Seashell bush in Mabe Village", "梅貝村的貝殼草叢"}, -{"Mad Batter", "瘋狂蝙蝠"}, -{"Mysterious Forest", "不可思議森林"}, -{"song", "歌曲"}, -{"Martha the mermaid", "人魚瑪莎"}, -{"Mr. Write", "萊特博士"}, -{"North of the Moblin cave", "莫力布林洞窟北"}, -{"North of Tabahl Wasteland", "塔巴林地北"}, -{"Rock maze in Ukuku Prairie", "烏庫庫草原的岩石迷宮"}, -{"Island in the pond", "池塘中的小島"}, -{"last hole", "最後一個洞"}, -{"cave on the climb", "上坡途中的洞窟"}, -{"east island", "東小島"}, -{"middle island", "中間小島"}, -{"race under 30 s", "30秒內完成比賽"}, -{"race under 35 s", "35秒內完成比賽"}, -{"race under 45 s", "45秒內完成比賽"}, -{"south island", "南小島"}, -{"west island", "西小島"}, -{"Cave by the river crossing", "渡河處旁的洞窟"}, -{"shelf", "架子"}, -{"Small island off the coast", "海岸外的小島"}, -{"South of Martha's Bay", "瑪莎海灣南"}, -{"southwest of Martha's Bay", "瑪莎海灣西南"}, -{"Chest in Goponga Swamp", "果彭加沼澤的寶箱"}, -{"Syrup the witch", "魔法婆婆"}, -{"Tree south of Tail Cave", "長尾大空洞南的樹"}, -{"five chest game", "五寶箱遊戲"}, -{"bomb hole", "炸彈洞"}, -{"crossing cave", "穿越洞窟"}, -{"east bridge", "東吊橋"}, -{"east drop", "東落下處"}, -{"left chest", "左寶箱"}, -{"blocks at the entrance", "入口的磚塊"}, -{"chest at the entrance", "入口的寶箱"}, -{"hole", "洞"}, -{"chest on the ledge", "崖邊的寶箱"}, -{"cave on the left climb", "左側上坡的洞窟"}, -{"cave by the rooster", "飛天雞旁的洞窟"}, -{"way out", "出口"}, -{"under a rock", "岩石下"}, -{"Tarin at the beehive", "蜂窩旁的塔林"}, -{"last prize", "最後的獎品"}, -{"Tree in Ukuku Prairie", "烏庫庫草原的樹"}, -{"Ukuku cave", "烏庫庫洞窟"}, -{"east chest", "東寶箱"}, -{"east item", "東道具"}, -{"west item", "西道具"}, -{"Under the skull rock", "骷髏岩下"}, -{"Cave by the villa", "別墅旁的洞窟"}, -{"Washed up on the beach", "被沖上海灘"}, -{"spot in Tabahl Wasteland", "塔巴林地的地點"}, -{"Forest crossing cave", "森林穿越洞窟"}, -{"item", "道具"}, -{"Forest north cave", "森林北洞窟"}, -{"south chest", "南寶箱"}, -{"Bush", "草叢"}, -{"spot", "地點"}, -{"Pot", "壺"}, -{"Apple tree", "蘋果樹"}, -{"Rock", "岩石"}, -{"Marin and Tarin's house", "瑪林和塔林的家"}, -{"the quadruplets' house", "四小福的家"}, -{"the Southern Face Shrine", "南方神殿"}, -{"the witch's hut", "魔法婆婆的家"}, -{"the library", "圖書館"}, -{"the Seashell Mansion", "貝殼館"}, -{"a telephone booth", "電話亭"}, -{"the Town Tool Shop", "村莊道具店"}, -{"the Dream Shrine", "夢之祠堂"}, -{"north-west", "西北"}, -{"north-east", "東北"}, -{"south-west", "西南"}, -{"south-east", "東南"}, -{"centre", "中央"}, -{"middle", "中間"}, -{"inside", "內部"}, -{"Trendy Game: prize %s", "流行遊戲:獎品%s"}, -{"Pot (%s)", "壺(%s)"}, -{"%s of 3", "第%s個/共3個"}, -{"Slime eye", "巨霸泥怪"}, -{"Angler", "燈魚怪"}, -{"Slime eel", "鉤尾鯰"}, -{"Master stalfos", "骷髏劍士至尊"}, -{"Eagle", "刑天翁"}, -{"Hothead", "巨霸炎魔"}, -{"Owl statue long hallway", "貓頭鷹石像(長走廊)"}, -{"Owl statue spinies", "貓頭鷹石像(刺刺龜)"}, -{"Owl statue 3 of a kind", "貓頭鷹石像(維加斯)"}, -{"Owl statue first switch", "貓頭鷹石像(第一個開關)"}, -{"Owl statue push puzzle", "貓頭鷹石像(推動謎題)"}, -{"Owl statue past hinox", "貓頭鷹石像(西諾克斯之後)"}, -{"Owl statue basement north", "貓頭鷹石像(地下室北)"}, -{"Owl statue arrow", "貓頭鷹石像(箭)"}, -{"Owl statue northwest", "貓頭鷹石像(西北)"}, -{"Owl statue", "貓頭鷹石像"}, -{"Owl statue triple stalfos", "貓頭鷹石像(三隻骷髏戰士)"}, -{"Owl statue before slime eel", "貓頭鷹石像(鉤尾鯰之前)"}, -{"Owl statue ledge", "貓頭鷹石像(崖邊)"}, -{"Owl statue southeast", "貓頭鷹石像(東南)"}, -{"Owl statue canal", "貓頭鷹石像(水道)"}, -{"Owl statue ball", "貓頭鷹石像(鐵球)"}, -{"Owl statue kirbys", "貓頭鷹石像(卡比)"}, -{"Owl statue hookshot chest", "貓頭鷹石像(鉤索寶箱)"}, -{"Owl statue above smasher", "貓頭鷹石像(鐵球怪上方)"}, -{"Owl statue below gibdos", "貓頭鷹石像(吉波得下方)"}, -{"Owl statue eye statue", "貓頭鷹石像(眼睛雕像)"}, -{"Owl statue nine switches", "貓頭鷹石像(九個開關)"}, -{"Owl statue first switches", "貓頭鷹石像(最初的開關)"}, -{"Owl statue before mini boss", "貓頭鷹石像(中頭目之前)"}, -{"Owl statue below D8", "貓頭鷹石像(第8層下方)"}, -// separators (tools/menu_strings.py) -{", ", "、"}, -{": ", ":"}, -// not used any more {"Set the buttons and keys for the game. F1, Esc, Home or Back + Start always open this menu.", "設定遊戲使用的按鈕和按鍵。按F1、Esc、HOME或Back+Start隨時都能開啟這個選單。"}, {"! This folder is synced by OneDrive", "! 這個資料夾由OneDrive同步"}, {"About %.0f GB of game files will upload to your OneDrive.", "約%.0f GB的遊戲檔案會上傳到你的OneDrive。"}, diff --git a/runtime/ui/spoiler_view.mm b/runtime/ui/spoiler_view.mm index c6a40a76b..6b20a8383 100644 --- a/runtime/ui/spoiler_view.mm +++ b/runtime/ui/spoiler_view.mm @@ -1,8 +1,13 @@ // In-game spoiler page (Randomizer tab -> a seed's "Spoiler" button): shows rando//spoiler_view.txt, written by -// tools/rando/spoiler_view.py (walkthrough by playthrough step, items by area, dungeon entrances, entrances). -// Markup: '# ' section, '## ' sub-heading, '- ' bullet, two-space continuation, plain text otherwise. +// tools/rando/spoiler_view.py (the route, everything useful by step, items by area, dungeon entrances and rooms, +// entrances, hints). +// Markup: '# ' section, '## ' sub-heading ("12. Mabe Village": a numbered route stop), '### ' folded group inside a +// sub-heading, '- ' bullet, two-space continuation, plain text otherwise. A line may end in TAB TAB : +// for the seed that's running, a check the tracker has collected is greyed and struck out ("Hide checked" leaves it +// out); flag 'u' = an item that opens things up ("Useful items only"). // The file is English (the same for every player of a seed); its lines show in the menus' language, put together from // their parts (i18n.h L_line). +#include #include #include #include @@ -13,11 +18,28 @@ #include "imgui.h" #include "osk.h" +extern "C" { +#include "../rando.h" +int tracker_check_collected(const char *loc); // tracker_overlay.mm: 1 / 0 / -1 (can't tell) +} + namespace { // (tracker_overlay.mm has its own Node: keep both local or vector code gets merged) +struct Line { + std::string text, loc; + bool useful = false; +}; +struct Group { // "### " (title empty: the lines before any group) + std::string title; + std::vector lines; +}; +struct Sub { + std::string title; + std::vector groups; +}; struct Node { std::string title; - std::vector lines; // text directly under the heading - std::vector>> subs; // "## " blocks + std::vector lines; // text directly under the heading + std::vector subs; // "## " blocks }; } // namespace @@ -26,6 +48,18 @@ static std::vector g_doc; static bool g_missing; +static Line parse_line(const std::string &l) { + Line ln; + size_t t = l.find('\t'); + ln.text = l.substr(0, t); + if (t != std::string::npos) { + size_t t2 = l.find('\t', t + 1); + ln.loc = l.substr(t + 1, t2 == std::string::npos ? std::string::npos : t2 - t - 1); + ln.useful = t2 != std::string::npos && l.find('u', t2 + 1) != std::string::npos; + } + return ln; +} + static void load(const std::string &seed) { g_loaded = seed; g_doc.clear(); @@ -40,25 +74,98 @@ static void load(const std::string &seed) { if (l.rfind("# ", 0) == 0) { g_doc.push_back({l.substr(2), {}, {}}); continue; } if (g_doc.empty()) g_doc.push_back({"", {}, {}}); Node &n = g_doc.back(); - if (l.rfind("## ", 0) == 0) { n.subs.push_back({l.substr(3), {}}); continue; } - if (!n.subs.empty()) n.subs.back().second.push_back(l); - else n.lines.push_back(l); + if (l.rfind("## ", 0) == 0) { n.subs.push_back({l.substr(3), {{"", {}}}}); continue; } + if (n.subs.empty()) { n.lines.push_back(parse_line(l)); continue; } + if (l.rfind("### ", 0) == 0) { n.subs.back().groups.push_back({l.substr(4), {}}); continue; } + n.subs.back().groups.back().lines.push_back(parse_line(l)); } fclose(f); } +// "12. Mabe Village": the number stays, the rest in the menus' language +static std::string shown(const std::string &en) { + size_t i = 0; + while (i < en.size() && isdigit((unsigned char)en[i])) i++; + if (i > 0 && en.compare(i, 2, ". ") == 0) return en.substr(0, i + 2) + L_line(en.substr(i + 2)); + return L_line(en); +} + static bool matches(const std::string &en, const char *q) { if (!q[0]) return true; - std::string a = L_line(en), b = q; // (as shown: the search is in the menus' language) + std::string a = shown(en), b = q; // (as shown: the search is in the menus' language) for (auto &c : a) c = (char)tolower(c); for (auto &c : b) c = (char)tolower(c); return a.find(b) != std::string::npos; } -static void line(const std::string &l) { - if (l.rfind("- ", 0) == 0) { ImGui::Bullet(); ImGui::TextUnformatted(L_line(l.substr(2)).c_str()); } - else if (l.rfind(" ", 0) == 0) { ImGui::Indent(); ImGui::TextUnformatted(L_line(l.substr(2)).c_str()); ImGui::Unindent(); } - else if (!l.empty()) ImGui::TextWrapped("%s", L_line(l).c_str()); +struct Filter { + const char *q; + bool hide_done, useful_only, linked; // linked: the spoiler's seed is the one running (the tracker knows it) +}; + +static int done_of(const Line &l, const Filter &f) { + return f.linked && !l.loc.empty() ? tracker_check_collected(l.loc.c_str()) : -1; +} + +// a check line passes the switches (lines without a location - text, area labels - always do) +static bool passes(const Line &l, const Filter &f) { + if (l.loc.empty()) return true; + if (f.useful_only && !l.useful) return false; + if (f.hide_done && done_of(l, f) == 1) return false; + return true; +} + +// lines shown under a heading whose own title matched (all) or not (only the matching ones); an area label +// ("- Mabe Village:") shows only with something shown under it +static void visible(const std::vector &ls, const Filter &f, bool title_hit, std::vector &out) { + out.assign(ls.size(), 0); + for (size_t i = 0; i < ls.size(); i++) out[i] = passes(ls[i], f) && (title_hit || matches(ls[i].text, f.q)); + for (size_t i = 0; i < ls.size(); i++) { + const std::string &t = ls[i].text; + if (!ls[i].loc.empty() || t.rfind("- ", 0) != 0 || t.empty() || t.back() != ':') continue; + bool any = false; + for (size_t k = i + 1; k < ls.size() && ls[k].text.rfind(" ", 0) == 0; k++) any |= out[k] != 0; + bool filtering = f.q[0] || f.hide_done || f.useful_only; + out[i] = any || (!filtering && out[i]); + } +} + +static void line(const Line &l, const Filter &f) { + int done = done_of(l, f); + const std::string &t = l.text; + std::string s = t.rfind("- ", 0) == 0 || t.rfind(" ", 0) == 0 ? t.substr(2) : t; + if (s.empty()) return; + s = L_line(s); + bool indent = t.rfind(" ", 0) == 0; + if (indent) ImGui::Indent(); + if (t.rfind("- ", 0) == 0) ImGui::Bullet(); + if (done == 1) ImGui::PushStyleColor(ImGuiCol_Text, ImGui::GetStyleColorVec4(ImGuiCol_TextDisabled)); + if (t.rfind("- ", 0) == 0 || indent) ImGui::TextUnformatted(s.c_str()); + else ImGui::TextWrapped("%s", s.c_str()); + if (done == 1) { // (struck out, like the tracker's collected checks) + ImVec2 a = ImGui::GetItemRectMin(), z = ImGui::GetItemRectMax(); + float y = (a.y + z.y) * 0.5f; + ImGui::GetWindowDrawList()->AddLine(ImVec2(a.x, y), ImVec2(z.x, y), ImGui::GetColorU32(ImGuiCol_TextDisabled), + ImGui::GetFontSize() / 14.0f); + ImGui::PopStyleColor(); + } + if (indent) ImGui::Unindent(); +} + +static int draw_lines(const std::vector &ls, const Filter &f, bool title_hit) { + std::vector vis; + visible(ls, f, title_hit, vis); + int n = 0; + for (size_t i = 0; i < ls.size(); i++) if (vis[i]) line(ls[i], f), n++; + return n; +} + +static bool any_visible(const std::vector &ls, const Filter &f, bool title_hit) { + std::vector vis; + visible(ls, f, title_hit, vis); + for (size_t i = 0; i < ls.size(); i++) + if (vis[i] && (!ls[i].loc.empty() || ls[i].text.rfind("- ", 0) == 0 || ls[i].text.rfind(" ", 0) == 0)) return true; + return false; } // Returns false when the page was closed (Back). @@ -83,26 +190,53 @@ bool spoiler_view_draw(const std::string &seed, float scale) { if (ImGui::Button(L("Reveal spoilers"), ImVec2(320 * scale, 0))) revealed = true; return true; } + // the seed that's running: lines of checks already collected are greyed (the tracker's own data) + const char *dir = rando_seed_dir(); + const char *base = dir ? strrchr(dir, '/') : NULL; + bool linked = dir && seed == (base ? base + 1 : dir); static char q[64]; + static bool hide_done, useful_only; ImGui::SetNextItemWidth(420 * scale); ui_text_inline(true); // (filters as typed: typed into directly, not through a prompt) ui_input_text("##q", q, sizeof q, 0, L("Search items and places"), L("Search the spoiler log")); ui_text_inline(false); + ImGui::SameLine(); + ImGui::Checkbox(L("Useful items only"), &useful_only); + if (linked) { + ImGui::SameLine(); + ImGui::Checkbox(L("Hide checked"), &hide_done); + } + Filter f = {q, linked && hide_done, useful_only, linked}; + bool filtering = q[0] || f.hide_done || f.useful_only; ImGui::BeginChild("##spoiler", ImVec2(0, 0), ImGuiChildFlags_None, ImGuiWindowFlags_NavFlattened); for (size_t i = 0; i < g_doc.size(); i++) { Node &n = g_doc[i]; + bool route = n.title == "Route"; // (its stops start open: read top to bottom) ImGui::PushID((int)i); - if (n.title.empty() || ImGui::CollapsingHeader(L_line(n.title).c_str(), i <= 1 ? ImGuiTreeNodeFlags_DefaultOpen : 0)) { - for (auto &l : n.lines) if (matches(l, q)) line(l); + if (n.title.empty() || ImGui::CollapsingHeader(shown(n.title).c_str(), i <= 1 || route ? ImGuiTreeNodeFlags_DefaultOpen : 0)) { + draw_lines(n.lines, f, false); for (size_t k = 0; k < n.subs.size(); k++) { - auto &sb = n.subs[k]; - bool any = matches(sb.first, q); - for (auto &l : sb.second) any |= matches(l, q); - if (!any) continue; + Sub &sb = n.subs[k]; + bool hit = !q[0] || matches(sb.title, q); + bool any = false; + for (auto &g : sb.groups) any |= any_visible(g.lines, f, hit || (!g.title.empty() && matches(g.title, q))); + if (!any && filtering) continue; ImGui::PushID((int)k); - if (q[0]) ImGui::SetNextItemOpen(true); - if (ImGui::TreeNode(L_line(sb.first).c_str())) { - for (auto &l : sb.second) if (matches(sb.first, q) || matches(l, q)) line(l); + if (filtering) ImGui::SetNextItemOpen(true); + if (ImGui::TreeNodeEx(shown(sb.title).c_str(), route ? ImGuiTreeNodeFlags_DefaultOpen : 0)) { + for (size_t g = 0; g < sb.groups.size(); g++) { + Group &gr = sb.groups[g]; + bool ghit = hit || (!gr.title.empty() && matches(gr.title, q)); + if (gr.title.empty()) { draw_lines(gr.lines, f, ghit); continue; } + if (!any_visible(gr.lines, f, ghit)) continue; + ImGui::PushID((int)g); + if (q[0]) ImGui::SetNextItemOpen(true); // (a search opens the folded group too) + if (ImGui::TreeNode(shown(gr.title).c_str())) { + draw_lines(gr.lines, f, ghit); + ImGui::TreePop(); + } + ImGui::PopID(); + } ImGui::TreePop(); } ImGui::PopID(); diff --git a/runtime/ui/tracker_overlay.mm b/runtime/ui/tracker_overlay.mm index 917459ed1..8ddd7bd0c 100644 --- a/runtime/ui/tracker_overlay.mm +++ b/runtime/ui/tracker_overlay.mm @@ -1002,6 +1002,24 @@ static bool map_page_shown(void) { return g_loaded > 0; } +// The spoiler page (spoiler_view.mm): has the running seed's check `loc` been collected? 1 yes, 0 no, -1 can't tell +// (no seed running, or a check the save has no flag for: shop shelves, instruments). Render thread, like the drawing. +extern "C" int tracker_check_collected(const char *loc) { + static std::unordered_map idx; + static size_t idx_for = ~(size_t)0; + if (!rando_seed_dir()) return -1; + if (!g_loaded) load(); + if (g_loaded <= 0) return -1; + if (idx_for != g_checks.size()) { + idx.clear(); + for (size_t i = 0; i < g_checks.size(); i++) idx[g_checks[i].name] = (int)i; + idx_for = g_checks.size(); + } + auto it = idx.find(loc); + if (it == idx.end() || g_checks[it->second].flag < 0) return -1; + return flag_set(g_checks[it->second].flag) ? 1 : 0; +} + // status colours (best first: in logic, trick logic, needs an item, collected) and their text static const ImU32 kStCol[4] = {IM_COL32(0x3F, 0xBF, 0x7F, 255), IM_COL32(0xA5, 0x8A, 0xF0, 255), IM_COL32(0xF2, 0xA3, 0x3A, 255), IM_COL32(0x6F, 0x7C, 0x82, 255)}; diff --git a/tools/menu_strings.py b/tools/menu_strings.py index cdaf3ccc6..36e80835e 100644 --- a/tools/menu_strings.py +++ b/tools/menu_strings.py @@ -187,12 +187,13 @@ def py_strings(path, want): yield a.left.value + '%s' # ('Settings: ' + ', '.join(...)) -MARKUP = re.compile(r'^(# |## |- | )') +MARKUP = re.compile(r'^(# |## |### |- | )') def spoiler_keys(): sys.path.insert(0, os.path.join(ROOT, 'tools', 'rando')) import spoiler_view as sv + import check_names as cn path = os.path.join(ROOT, 'tools', 'rando', 'spoiler_view.py') for s in py_strings(path, {'append'}): s = MARKUP.sub('', s) @@ -202,6 +203,17 @@ def spoiler_keys(): yield "%s's Soul", 'spoiler_view.py', False yield "%s' Soul", 'spoiler_view.py', False yield '%s:', 'spoiler_view.py', False # ("- Mabe Village:") + yield 'room %s', 'spoiler_view.py', False # ("Double stalfos (room A3)", "Catfish's Maw, room D7": room shuffle) + yield 'The last of the %s Triforce pieces you need ends the game.', 'spoiler_view.py', False + yield '2nd', 'spoiler_view.py', True # ("Shield (2nd)": the second copy of a progressive item) + for k in ('shop-slot3-2nd', 'shop-slot5-2nd', 'shop-slot5-3rd'): # (the Town Tool Shop's next items: check_names.py) + yield cn.display_name(k), 'spoiler_view.py', True + import entrance_names + for v in entrance_names.NAMES.values(): + yield v, 'spoiler_view.py', True + for v in sv.PLACE: + if v: + yield v, 'spoiler_view.py', True for d in (sv.AREAS, sv.DUNGEONS, sv.DPREFIX): for v in d.values(): yield v, 'spoiler_view.py', True @@ -215,6 +227,12 @@ def spoiler_keys(): if os.path.exists(yml): for m in re.finditer(r'^\s+-\s+([a-z0-9-]+)\s*$', open(yml).read(), re.M): yield sv.pretty_loc(m.group(1)), 'spoiler_view.py', True + yield cn.display_name(m.group(1)), 'spoiler_view.py', True # (the tracker's wording, used since 2026-11) + # dungeon checks in the tracker's wording ("Beetles"): every item location of LAS's logic + lg = os.path.join(ROOT, 'third_party', 'LAS-Randomizer', 'RandomizerCore', 'Data', 'logic.yml') + if os.path.exists(lg): + for m in re.finditer(r'^(D\d-[a-z0-9-]+):\s*\n\s+type:\s*(item|follower)\b', open(lg).read(), re.M): + yield cn.display_name(m.group(1)), 'spoiler_view.py', True # settings ("Settings: " + the options that are on, dashes as spaces) for f in glob.glob(os.path.join(ROOT, 'runtime', 'ui', 'rando_tab.mm')) + glob.glob(os.path.join(ROOT, 'runtime', 'rando.c')): for m in re.finditer(r'"([a-z0-9]+(?:-[a-z0-9]+)+)"', open(f).read()): diff --git a/tools/rando/check_names.py b/tools/rando/check_names.py index 349f78d6e..baadecac7 100644 --- a/tools/rando/check_names.py +++ b/tools/rando/check_names.py @@ -116,8 +116,11 @@ def display_name(name, kind=None, area=None, where=None): m = re.match(r'trendy-prize-(\d+)$', name) if m: return f'Trendy Game: prize {m.group(1)}' + m = re.match(r'shop-slot(\d)-(2nd|3rd)$', name) # (a shelf's next item once the first is bought) + if m: + return f"Town Tool Shop: shelf {m.group(1)}, {'second' if m.group(2) == '2nd' else 'third'} item" m = re.match(r'(D\d)-(.*)$', name) - if m and not m.group(2).startswith('pot-'): + if m and not re.match(r'pot-\d\d[A-P]-', m.group(2)): # (potsanity's numbered pots: their own wording) return spelled(m.group(2)) if kind in KIND_WORD: parts = [KIND_WORD[kind]] diff --git a/tools/rando/entrance_names.py b/tools/rando/entrance_names.py new file mode 100644 index 000000000..c69f7181c --- /dev/null +++ b/tools/rando/entrance_names.py @@ -0,0 +1,75 @@ +"""Plain names for the entrance randomizer's doors (tools/rando/entrance_data.yml ids), for the readable spoiler. + +The same name serves both sides: "Mabe Village library" is the library's door outside and the library inside. +Anything missing falls back to the id, spelled out. +""" + +NAMES = { + # Tal Tal Mountain Range / Tal Tal Heights + 'd8-west-side-exit': 'Turtle Rock, west side door', 'd8-east-side-exit': 'Turtle Rock, east side door', + 'fire-cave-north': 'Fire cave, north door', 'fire-cave-south': 'Fire cave, south door', + 'windfish-egg': "Wind Fish's egg", 'taltal-cucco-house': 'Tal Tal Heights, rooster house', + 'd7-eagles-tower': "Eagle's Tower", 'd8-turtle-rock': 'Turtle Rock', + 'taltal-phone-d8': 'Telephone booth by Turtle Rock', 'taltal-mad-batter': 'Mad Batter well, Tal Tal', + 'taltal-crossing-west': 'Tal Tal crossing cave, west door', 'taltal-crossing-east': 'Tal Tal crossing cave, east door', + 'mountain-access-entrance': 'Mountain cave, bottom door', 'mountain-access-exit': 'Mountain cave, top door', + 'mountain-access-chest-ledge': 'Mountain cave, ledge door', 'papahl-cave-lower': "Papahl's cave, lower door", + 'papahl-cave-upper': "Papahl's cave, upper door", 'taltal-bird-key-cave': 'Bird Key cave', + 'five-chest-tunnel-west': 'Five chest cave, west door', 'five-chest-tunnel-east': 'Five chest cave, east door', + 'five-chest-game-exit': 'Five chest game, exit door', 'outer-rainbow-cave-west': 'Rainbow cave, outer west door', + 'inner-rainbow-cave-west': 'Rainbow cave, inner west door', 'inner-rainbow-cave-east': 'Rainbow cave, inner east door', + 'outer-rainbow-cave-east': 'Rainbow cave, outer east door', 'taltal-east-fairy': 'Fairy fountain, Tal Tal east', + 'path-to-d7-south': "Cave to Eagle's Tower, south door", 'path-to-d7-north': "Cave to Eagle's Tower, north door", + # Goponga Swamp / Tabahl Wasteland / Kanalet + 'goponga-cave-west': 'Goponga Swamp cave, west door', 'goponga-cave-east': 'Goponga Swamp cave, east door', + 'd2-bottle-grotto': 'Bottle Grotto', 'manbo-cave': "Manbo's cave", + 'd4-connector-west': "Cave by Angler's Tunnel, west door", 'd4-anglers-tunnel': "Angler's Tunnel", + 'd4-connector-east': "Cave by Angler's Tunnel, east door", 'damp-cave': 'Damp cave', + 'raft-return-north': 'Raft cave, north door', 'raft-return-south': 'Raft cave, south door', + 'mr-write-house': "Mr. Write's house", 'swamp-phone': 'Telephone booth, Goponga Swamp', + 'moblin-cave': 'Moblin cave', 'dampe-house': "Dampe's house", 'raft-shop': 'Rapids Ride raft shop', + 'woods-north-cave': 'Mysterious Forest, north cave', 'crazy-tracy-house': "Crazy Tracy's house", + 'kanalet-tunnel-west': 'Kanalet tunnel, west door', 'kanalet-tunnel-east': 'Kanalet tunnel, east door', + 'kanalet-phone': 'Telephone booth by Kanalet Castle', 'kanalet-castle-roof-west': 'Kanalet Castle, roof west door', + 'kanalet-castle-roof-east': 'Kanalet Castle, roof east door', 'kanalet-castle-front': 'Kanalet Castle, front door', + 'kanalet-south-cave': 'Cave south of Kanalet Castle', + # Mysterious Forest / Koholint Prairie / Cemetery + 'woods-crossing-cave-north': 'Forest crossing cave, north door', + 'woods-crossing-cave-south': 'Forest crossing cave, south door', 'woods-mad-batter': 'Mad Batter well, forest', + 'witch-hut': "Witch's hut", 'd6-north-side-exit': 'Face Shrine, north side door', + 'graveyard-cave-west': 'Cemetery cave, west door', 'graveyard-cave-east': 'Cemetery cave, east door', + 'd0-color-dungeon': 'Color Dungeon', 'prairie-fairy': 'Fairy fountain, Koholint Prairie', + 'quadruplet-house-west': "Quadruplets' house, west door", 'quadruplet-house-east': "Quadruplets' house, east door", + 'dream-shrine': 'Dream Shrine', 'ukuku-cave-west': 'Ukuku cave, west door', 'ukuku-cave-east': 'Ukuku cave, east door', + 'prairie-phone-north': 'Telephone booth, Ukuku Prairie north', 'prairie-phone-west': 'Telephone booth, Ukuku Prairie west', + 'seashell-mansion': 'Seashell Mansion', 'd6-face-shrine': 'Face Shrine', + 'd6-connector-west': 'Cave to Face Shrine, west door', 'd6-connector-east': 'Cave to Face Shrine, east door', + 'armos-fairy': 'Fairy fountain by the Armos maze', 'rooster-grave': "Flying Rooster's grave", + 'river-crossing-cave-west': 'River crossing cave, west door', 'river-crossing-cave-east': 'River crossing cave, east door', + 'southern-face-shrine': 'Southern Face Shrine', 'armos-maze-cave': 'Armos maze cave', + # Mabe Village + 'town-tool-shop': 'Town Tool Shop', 'mabe-kennel': "BowWow's kennel", 'madam-meowmeow-house': "Madam MeowMeow's house", + 'marin-tarin-house': "Marin and Tarin's house", 'mabe-library': 'Mabe Village library', 'ulrira-house': "Ulrira's house", + 'mabe-phone': 'Telephone booth, Mabe Village', 'trendy-game': 'Trendy Game', + # south: Key Cavern, Martha's Bay, Animal Village, Yarna Desert + 'd3-key-cavern': 'Key Cavern', 'bay-cliff-cave-north': 'Cliff cave by the bay, north door', + 'bay-cliff-cave-plateau': 'Cliff cave by the bay, plateau door', 'bay-cliff-cave-south': 'Cliff cave by the bay, south door', + 'richard-villa': "Richard's villa", 'richard-villa-cave-exit': "Cave behind Richard's villa", + 'animal-village-rabbit-house': 'Animal Village, rabbit house', 'schule-donavitch-house': "Schule Donavitch's house", + 'christine-house': "Christine's house", 'hidden-zora-house': "Zora's house", 'animal-village-bomb-cave': 'Animal Village, bombed cave', + 'desert-lanmola-cave': 'Lanmola cave, Yarna Desert', 'd1-tail-cave': 'Tail Cave', 'mamu-cave': "Mamu's cave", + 'd5-catfishs-maw': "Catfish's Maw", 'catfish-maw-dive-east': "Catfish's Maw, east dive spot", + 'catfish-maw-dive-west': "Catfish's Maw, west dive spot", 'animal-village-phone': 'Telephone booth, Animal Village', + 'bear-chef-house': "Chef Bear's house", 'banana-sale-house': "Sale's banana house", 'bay-mad-batter': 'Mad Batter well, bay', + 'bay-batter-tunnel-north': 'Tunnel to the bay Mad Batter, north door', + 'bay-batter-tunnel-south': 'Tunnel to the bay Mad Batter, south door', 'bay-phone': "Telephone booth, Martha's Bay", + 'mermaid-statue': 'Mermaid statue', 'bay-fisherman-boat': "Fisherman's boat", 'boomerang-cave': 'Boomerang cave', + 'ghost-house': "Ghost's house", +} + + +def name(door): + if door in NAMES: + return NAMES[door] + s = door.replace('-', ' ') + return s[:1].upper() + s[1:] diff --git a/tools/rando/las_headless.py b/tools/rando/las_headless.py index f9622586a..4e37196d9 100644 --- a/tools/rando/las_headless.py +++ b/tools/rando/las_headless.py @@ -562,6 +562,12 @@ def reach_with_progress(to_reach, placements, *a, **k): import hint_sheet # the Hint Sheet's steps: progression items in playthrough order print('hint sheet steps:', hint_sheet.steps(sh.logic_defs, pl, settings, lambda k, acc: sh.checkAccess(k, acc, settings['logic']), sph, out_dir), flush=True) + try: # the spoiler's Route (presentation only: tools/rando/route.py) + import route + print('route:', route.build(sh.logic_defs, pl, settings, lambda k, acc: sh.checkAccess(k, acc, settings['logic']), + sph, out_dir), 'stops', flush=True) + except Exception as e: + print('route: skipped:', e, flush=True) if settings.get('hints'): # owl statues and phone booths (tools/rando/seed_hints.py) import seed_hints print('hints:', seed_hints.pick(sh.logic_defs, pl, settings, lambda k, acc: sh.checkAccess(k, acc, settings['logic']), diff --git a/tools/rando/route.py b/tools/rando/route.py new file mode 100644 index 000000000..9159ef8dc --- /dev/null +++ b/tools/rando/route.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python3 +"""The spoiler's Route: only the items needed to beat a seed, in an order that can be followed (route.json). + +Presentation only: reads the finished placements and logic, changes nothing in the seed. + +Starts from the Hint Sheet's steps (hint_sheet.steps: items that open progression or the goal) and checks them the +way a player would follow them: a playthrough where only the route's locations give their item. Where an item can +come from two places (two Power Bracelets, Feather or Hookshot for the same gap) the Hint Sheet keeps neither, so +the route could stall; then the earliest item (playthrough order) that lets the route go further is added, until +every route location and the goal are reached. Order: followed like a player would - stay in the same place (a +dungeon, an area) while the route has something reachable there, else go to the earliest reachable stop; each stop +can be reached with the items of the stops before it. + + build(logic_defs, placements, settings, check, sph, out_dir) -> number of stops (writes route.json: + {"spheres": [[[loc, item], ...] per stop, ...], "added": [loc, ...]}) +""" +import json +import os +import re + +import hint_sheet +import playthrough + + +def build(logic_defs, placements, settings, check, sph, out_dir): + p = os.path.join(out_dir, 'hint_steps.json') + if not os.path.exists(p): + return 0 + import time + t0 = time.time() + steps = json.load(open(p))['steps'] + route = {st['loc'] for st in steps if placements.get(st['loc'])} + reach = _reach_fn(logic_defs, settings, check) + full_locs, full_goal = reach(placements) + order = [loc for s in sph for loc, item in s if not loc.startswith('starting-')] + + def only(locs): + return {k: (v if k in locs or k.startswith('starting-') or not isinstance(v, str) else None) + for k, v in placements.items()} + word = re.compile(r'[A-Za-z0-9][A-Za-z0-9\-]*') + read = {w for node in logic_defs.values() for ck, cv in node.items() + if ck.startswith('condition-') and isinstance(cv, str) for w in word.findall(cv)} + + def complete(locs): + got, goal = reach(only(locs)) + return goal >= full_goal and locs <= got + added = [] + stuck, last = False, -1 + for _ in range(300): + got, goal = reach(only(route)) + if goal >= full_goal and route <= got: + break + base = len(got) + 1000 * goal + if base > last: # (the last pick took the route further: look for a single item that does again) + stuck = False + last = base + cand = [loc for loc in order if loc not in route and loc in got + and not hint_sheet.JUNK.match(playthrough.base_item(placements.get(loc)))] + # the earliest item reachable now that takes the route further; else (items that only help together, like a + # dungeon's last keys) the earliest one the logic asks for at all, without testing each again until the route + # grows - the pruning below drops what wasn't needed + pick = None + if not stuck: + for loc in cand: + g2, goal2 = reach(only(route | {loc})) + if len(g2) + 1000 * goal2 > base: + pick = loc + break + stuck = pick is None + if not pick: + pick = next((loc for loc in cand if playthrough.base_item(placements.get(loc)) in read), None) + if not pick: + break + route.add(pick) + added.append(pick) + if complete(route): + for loc in reversed(list(added)): # (only what the route can't do without) + if complete(route - {loc}): + route.discard(loc) + added.remove(loc) + # Follow it like a player: stay where you are while the route has something reachable there (a dungeon's keys + # one after another), else go where the earliest reachable stop is. Items count as soon as they're picked up. + sphere_of = {loc: i for i, s in enumerate(sph) for loc, _ in s} + dungeon_of = settings.get('dungeon-of') or {} + + def area(loc): + m = re.match(r'^(D\d)-', loc) + return dungeon_of.get(loc) or (m.group(1) if m else logic_defs.get(loc, {}).get('spoiler-region', '')) + got, here, out = set(), None, [] + while True: + can = [loc for loc in reach(only(got))[0] if loc in route and loc not in got] + if not can: + break + now = [loc for loc in can if area(loc) == here] + if not now: + first = min(can, key=lambda l: (sphere_of.get(l, 999), l)) + here = area(first) + now = [loc for loc in can if area(loc) == here] + now.sort(key=lambda l: (sphere_of.get(l, 999), l)) + if out and out[-1][0] == here: + out[-1][1].extend(now) + else: + out.append((here, now)) + got.update(now) + left = sorted(route - got, key=lambda l: (sphere_of.get(l, 999), l)) # (shouldn't happen: kept, at the end) + if left: + out.append(('', left)) + print('route: not reachable in order (listed last):', ', '.join(left[:8]), flush=True) + out = [[[loc, placements[loc]] for loc in locs] for _, locs in out] + with open(os.path.join(out_dir, 'route.json'), 'w') as f: + json.dump({'spheres': out, 'added': added}, f) + print(f'route: {len(added)} added, {time.time() - t0:.1f}s', flush=True) + return sum(len(s) for s in out) + + +def _reach_fn(logic_defs, settings, check): + """hint_sheet._reach_fn, counting followers too (the Flying Rooster at its statue is a route stop): -> reach(pl) + = (item and follower locations reached, how much of the goal). Its own copy: the Hint Sheet's must stay as it is + (its steps are part of the seed).""" + junk = set(settings.get('excluded-locations', ())) | set(settings.get('absent-locations', ())) + goal = set(playthrough.INSTRUMENTS) | {'kill-nightmare'} + tri = int(settings.get('triforce-needed', 0) or 0) + word = re.compile(r'[A-Za-z0-9][A-Za-z0-9\-\[\]]*') + readers = {} + for k, node in logic_defs.items(): + toks = set() + for ck, cv in node.items(): + if ck.startswith('condition-') and isinstance(cv, str): + toks.update(word.findall(cv)) + if node.get('region'): + toks.add(node['region']) + for t in toks: + readers.setdefault(t, []).append(k) + keys = list(logic_defs) + + def reach(pl): + access = {k: 1 for k, v in settings.items() if v is True} + seen = set() + todo, queued = list(reversed(keys)), set(keys) + + def give(tok, n=1): + access[tok] = access.get(tok, 0) + n + for r in readers.get(tok, ()): + if r not in queued and r not in seen: + queued.add(r) + todo.append(r) + while todo: + k = todo.pop() + queued.discard(k) + if k in seen: + continue + node = logic_defs[k] + if node.get('type') == 'enemy': + try: + if check(k, access): + seen.add(k) + for t in (k, k + '[pit]', k + '[heavy]'): + if not access.get(t): + give(t) + continue + for v in ('pit', 'heavy'): + t = f'{k}[{v}]' + if f'condition-{v}' in node and not access.get(t) and check(t, access): + give(t) + except Exception: + pass + continue + try: + ok = check(k, access) + except Exception: + ok = False + if not ok: + continue + seen.add(k) + give(k) + item = pl.get(k) if node.get('type') in ('item', 'follower') else None + if item: + give(item) + b = playthrough.base_item(item) + if b != item: + give(b) + return (frozenset(k for k in seen if logic_defs[k].get('type') in ('item', 'follower') and k not in junk), + min(access.get(hint_sheet.TRIFORCE, 0), tri) if tri else sum(1 for g in goal if access.get(g))) + return reach diff --git a/tools/rando/spoiler_view.py b/tools/rando/spoiler_view.py index 8de27faef..8befb0a02 100644 --- a/tools/rando/spoiler_view.py +++ b/tools/rando/spoiler_view.py @@ -1,14 +1,20 @@ #!/usr/bin/env python3 -"""Readable spoiler for a seed: rando//spoiler_view.txt, shown in game (runtime/ui/spoiler_tab.mm). +"""Readable spoiler for a seed: rando//spoiler_view.txt (shown in game, runtime/ui/spoiler_view.mm) and +rando//spoiler.html (the same, for a browser). spoiler_view.py [...] -Sections: settings summary, starting items, a step-by-step walkthrough (playthrough spheres: "with what you have, -go get these"), every item by area, dungeon entrances, shuffled entrances, pots, hints (Hints on). Seeds made before spheres.json -existed are regenerated into build/ (same seed = same placements) to compute the walkthrough. +Sections: seed and settings, the Route (only what's needed to win, in an order that can be followed: route.json from +tools/rando/route.py), everything useful by playthrough step, every item by area (the tracker's check names and the +game's place names, areas in map order, small items folded away), dungeon entrances, shuffled dungeon rooms, +shuffled entrances, hints (Hints on). Seeds made before spheres.json existed are regenerated into build/ (same seed = +same placements) to compute the step list. Presentation only: nothing here changes a seed. -Markup read by the game: '# ' section, '## ' sub-heading, '- ' bullet, ' ' continuation, plain text otherwise. +Markup read by the game: '# ' section, '## ' sub-heading, '### ' folded group inside a sub-heading (closed at first), +'- ' bullet, ' ' continuation, plain text otherwise. A line may end in TAB TAB (not shown): the game +greys the line once the tracker has that check collected; flag 'u' = an item that opens things up. """ +import html import json import os import re @@ -24,6 +30,11 @@ 'eagle-tower': "Eagle's Tower (D7)", 'turtle-rock': 'Turtle Rock (D8)', 'color-dungeon': 'Color Dungeon'} DPREFIX = {'D0': 'Color Dungeon', 'D1': 'Tail Cave', 'D2': 'Bottle Grotto', 'D3': 'Key Cavern', 'D4': "Angler's Tunnel", 'D5': "Catfish's Maw", 'D6': 'Face Shrine', 'D7': "Eagle's Tower", 'D8': 'Turtle Rock'} +DKEY = {'D1': 'tail-cave', 'D2': 'bottle-grotto', 'D3': 'key-cavern', 'D4': 'angler-tunnel', 'D5': 'catfish-maw', + 'D6': 'face-shrine', 'D7': 'eagle-tower', 'D8': 'turtle-rock', 'D0': 'color-dungeon'} +LEVEL_D = {'Lv10ClothesDungeon': 'D0', 'Lv01TailCave': 'D1', 'Lv02BottleGrotto': 'D2', 'Lv03KeyCavern': 'D3', + 'Lv04AnglersTunnel': 'D4', 'Lv05CatfishsMaw': 'D5', 'Lv06FaceShrine': 'D6', 'Lv07EagleTower': 'D7', + 'Lv08TurtleRock': 'D8'} AREAS = {'mabe-village': 'Mabe Village', 'toronbo-shores': 'Toronbo Shores', 'mysterious-woods': 'Mysterious Woods', 'koholint-prairie': 'Koholint Prairie', 'tabahl-wasteland': 'Tabahl Wasteland', 'ukuku-prairie': 'Ukuku Prairie', 'sign-maze': 'Signpost Maze', 'goponga-swamp': 'Goponga Swamp', 'taltal-heights': 'Tal Tal Heights', @@ -31,11 +42,27 @@ 'animal-village': 'Animal Village', 'yarna-desert': 'Yarna Desert', 'ancient-ruins': 'Ancient Ruins', 'rapids-ride': 'Rapids Ride', 'taltal-mountains-east': 'Tal Tal Mountains (east)', 'taltal-mountains-west': 'Tal Tal Mountains (west)', **DUNGEONS} +# the game's place names on the overworld map (tools/rando/tracker.py PLACE: tracker.json 'ar'), and their map order: +# north to south, west to east in each band +PLACE = ['Kanalet Castle', 'Rapids Ride', 'Southern Face Shrine', 'Animal Village', 'Yarna Desert', '', "Martha's Bay", + 'Pothole Field', '', '', 'Mabe Village', 'Mysterious Forest', 'Goponga Swamp', 'Koholint Prairie', + 'Tabahl Wasteland', 'Tal Tal Mountain Range', 'Mt. Tamaranch', 'Tal Tal Heights', 'Toronbo Shores', + 'Ukuku Prairie', 'Cemetery'] +MAP_ORDER = [15, 16, 17, 14, 12, 0, 1, 11, 13, 20, 2, 10, 19, 7, 3, 18, 6, 4] +# LAS spoiler regions (no tracker data) in the same order +REGION_ORDER = ['taltal-mountains-west', 'taltal-mountains-east', 'taltal-heights', 'tabahl-wasteland', 'goponga-swamp', + 'kanalet-castle', 'rapids-ride', 'mysterious-woods', 'koholint-prairie', 'ancient-ruins', 'mabe-village', + 'ukuku-prairie', 'sign-maze', 'pothole-field', 'animal-village', 'toronbo-shores', 'marthas-bay', + 'yarna-desert'] +DUNGEON_ORDER = ['D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D0'] ITEMS = {'rooster': 'Flying Rooster (pet)', 'ghost': 'Ghost (pet)', 'marin-companion': 'Marin (pet)', 'seashell': 'Secret Seashell','heart-piece': 'Piece of Heart', 'heart-container': 'Heart Container', 'rupee-5': '5 Rupees', 'rupee-20': '20 Rupees', 'rupee-50': '50 Rupees', 'rupee-100': '100 Rupees', 'rupee-300': '300 Rupees', 'pot-rupee-5': '5 Rupees', 'pot-rupee-20': '20 Rupees', 'pot-rupee-50': '50 Rupees', - 'pot-rupee-100': '100 Rupees', 'bracelet': 'Power Bracelet', 'feather': "Roc's Feather", 'boots': 'Pegasus Boots', + 'pot-rupee-100': '100 Rupees', 'dig-rupee-1': '1 Rupee', 'dig-rupee-5': '5 Rupees', 'dig-rupee-20': '20 Rupees', + 'pot-heart': 'Heart', 'pot-arrows': 'Arrows', 'pot-bombs': 'Bombs', 'pot-powder': 'Magic Powder', + 'bow-wow': 'BowWow', 'shell-sensor': 'Seashell Sensor', 'mermaid-scale': "Mermaid's Scale", + 'bracelet': 'Power Bracelet', 'feather': "Roc's Feather", 'boots': 'Pegasus Boots', 'rod': 'Magic Rod', 'powder': 'Magic Powder', 'bomb': 'Bombs', 'bombs': 'Bombs', 'bow': 'Bow', 'hookshot': 'Hookshot', 'boomerang': 'Boomerang', 'shovel': 'Shovel', 'flippers': 'Flippers', 'ocarina': 'Ocarina', 'shield': 'Shield', 'sword': 'Sword', 'trap': 'Trap!', 'song-ballad': 'Ballad of the Wind Fish', @@ -50,8 +77,13 @@ 'blue-tunic': 'Blue Tunic', 'golden-leaf': 'Golden Leaf', 'mushroom': 'Sleepy Toadstool', 'medicine': 'Secret Medicine', 'bottle': 'Bottle', 'zol-trap': 'Trap!', 'bomb-capacity': 'Bomb bag upgrade', 'arrow-capacity': 'Quiver upgrade', 'powder-capacity': 'Magic Powder upgrade', 'chamber-stone': 'Chamber Stone', - 'apple': 'Apple', 'green-apple': 'Green Apple'} -JUNK = re.compile(r'^((pot-|dig-)?rupee-\d+|pot-heart|apple|green-apple|pot-arrows|pot-bombs|pot-powder|trap|zol-trap|arrows?(-\d+)?|bombs?-\d+|powder-\d+)$') + 'apple': 'Apple', 'green-apple': 'Green Apple', 'triforce-piece': 'Triforce piece'} +JUNK = re.compile(r'^((pot-|dig-)?rupee-\d+|pot-heart|apple|green-apple|pot-arrows|pot-bombs|pot-powder|trap|.*-trap|arrows?(-\d+)?|bombs?-\d+|powder-\d+)$') +PROGRESSIVE = ('sword', 'shield', 'bracelet') # (a second copy is the upgrade: "Shield (2nd)") +# settings.json entries the generator adds for the runtime (not player options) +INTERNAL = {'create-spoiler', 'escape-bottle', 'hint-sheet', 'ghost-item', 'marin-stays', 'underwater-items', + 'silent-pickups'} +TAG = '\t' def pretty_item(it): @@ -89,6 +121,11 @@ def pretty_loc(loc): return loc.replace('-', ' ').capitalize() +def room_word(cell): + """'03A' -> 'A3' (column letter, row number: as the game's dungeon map and the tracker say it)""" + return f'{cell[2]}{int(cell[:2])}' if cell and len(cell) == 3 else cell + + def parse_spoiler(path): sections, cur = {}, None for line in open(path): @@ -120,6 +157,268 @@ def ensure_spheres(seed_dir): return json.load(open(p)) +def load_json(seed_dir, name, default=None): + p = os.path.join(seed_dir, name) + try: + return json.load(open(p)) if os.path.exists(p) else default + except ValueError: + return default + + +class Seed: + """Everything the text needs about one seed: where each location is (area, readable name) and what it holds.""" + + def __init__(self, seed_dir, S, settings, sph): + self.S, self.settings = S, settings + self.loc_region, self.loc_item = {}, {} + for sec, lines in S.items(): + if sec in AREAS: + for l in lines: + if ':' in l: + loc, it = [x.strip() for x in l.split(':', 1)] + self.loc_region[loc], self.loc_item[loc] = sec, it + tr = load_json(seed_dir, 'tracker.json', {}) + self.checks = {c['n']: c for c in tr.get('checks', ())} + self.rooms_on = settings.get('dungeon-room-shuffle', 'off') not in ('off', None, False) + self.entered_via = {} # dungeon key -> the dungeon whose overworld door leads into it + for l in S.get('dungeon-entrances', []): + a, b = [x.strip() for x in l.split('->')] + if a != b: + self.entered_via[b] = a + self.shells_important = bool(settings.get('seashells-important')) + # progressive items: which copy each location holds (starting items first, then playthrough order) + self.copy_no = {} + count = {} + for it in S.get('starting-items', []): + b = re.sub(r'\[\d+\]$', '', it) + count[b] = count.get(b, 0) + 1 + order = [loc for s in (sph or []) for loc, _ in s] + order += sorted(set(self.loc_item) - set(order)) + for loc in order: + b = re.sub(r'\[\d+\]$', '', self.loc_item.get(loc, '')) + if b in PROGRESSIVE and not loc.startswith('starting-'): + count[b] = count.get(b, 0) + 1 + self.copy_no[loc] = count[b] + + # --- where + def area(self, loc): + """-> (sort key, heading) of the area a location is listed under.""" + c = self.checks.get(loc, {}) + d = c.get('d') or (re.match(r'^(D\d)-', loc) or [None, None])[1] + reg = self.loc_region.get(loc, '') + if not d and reg in DUNGEONS: + d = {v: k for k, v in DKEY.items()}[reg] + if d in DKEY: + return (1, DUNGEON_ORDER.index(d), ''), self.dungeon_title(DKEY[d]) + ar = c.get('ar', -1) + if isinstance(ar, int) and 0 <= ar < len(PLACE) and PLACE[ar]: + return (0, MAP_ORDER.index(ar) if ar in MAP_ORDER else 99, ''), PLACE[ar] + if reg in AREAS: + return (0, 50 + (REGION_ORDER.index(reg) if reg in REGION_ORDER else 49), ''), AREAS[reg] + return (2, 0, ''), 'Elsewhere' + + def dungeon_title(self, dk): + n = DUNGEONS[dk] + if dk in self.entered_via: + n += f" - enter through {DUNGEONS[self.entered_via[dk]].split(' (')[0]}'s entrance" + return n + + def name(self, loc): + c = self.checks.get(loc) + if c and c.get('dn'): + n = c['dn'] + if self.rooms_on and c.get('d') and c.get('dc'): # (room shuffle: which room it's in now) + n += f" (room {room_word(c['dc'])})" + return n + n = pretty_loc(loc) + m = re.match(r'^(D\d)-', loc) + if m and n.startswith(DPREFIX[m.group(1)] + ': '): # (the heading names the dungeon) + n = n[len(DPREFIX[m.group(1)]) + 2:] + n = n[:1].upper() + n[1:] + return n + + # --- what + def item(self, loc, it=None): + it = it if it is not None else self.loc_item.get(loc, '') + n = pretty_item(it) + if self.copy_no.get(loc, 1) == 2: + n += ' (2nd)' + return n + + def useful(self, it): + b = re.sub(r'\[\d+\]$', '', it or '') + return bool(b) and not JUNK.match(b) and not re.search(r'(compass|map|beak)', b) \ + and (self.shells_important or not b.startswith('seashell')) \ + and not b.startswith(('heart-piece', 'heart-container')) + + def line(self, loc, it=None, bullet='- '): + it = it if it is not None else self.loc_item.get(loc, '') + return f"{bullet}{self.name(loc)} -> {self.item(loc, it)}{TAG}{loc}{TAG}{'u' if self.useful(it) else ''}" + + +def natural(s): + return [int(t) if t.isdigit() else t.lower() for t in re.split(r'(\d+)', s)] + + +def finish_line(settings): + tri = int(settings.get('triforce-hunt', 0) or 0) + if tri: + return f'- The last of the {tri} Triforce pieces you need ends the game.' + return '- With all eight instruments, play the Ballad of the Wind Fish at the egg on Tal Tal Heights.' + + +def section_route(sd, seed_dir, out): + r = load_json(seed_dir, 'route.json') + if not r or not r.get('spheres'): + return + out.append('') + out.append('# Route') + out.append('Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.') + stops = [] # [(title, [(loc, item)])]: the route's order, one stop per place in a row + for stop in r['spheres']: + for loc, it in stop: + title = sd.area(loc)[1] + if stops and stops[-1][0] == title: + stops[-1][1].append((loc, it)) + else: + stops.append((title, [(loc, it)])) + for n, (title, items) in enumerate(stops, 1): + head = f'## {n}. {title}' # (the number stays as it is: spoiler_view.mm) + out.append(head) + for loc, it in items: # (in order: a later one can need an earlier one, a dungeon's keys) + out.append(sd.line(loc, it)) + out.append('## Finish') + out.append(finish_line(sd.settings)) + + +def section_steps(sd, sph, out): + out.append('') + out.append('# Everything useful step by step') + if not sph: + out.append('(This seed has no step list.)') + return + out.append('Each step can be done with what you had after the previous steps (any order within a step).') + out.append('Only items that open things up are listed; rupees, traps and similar are left out.') + n = 0 + for s in sph: + keep = [(l, i) for l, i in s if not l.startswith('starting-') and sd.useful(i)] + if not keep: + continue + n += 1 + out.append(f'## Step {n}') + by_area = {} + for l, i in keep: + by_area.setdefault(sd.area(l), []).append((l, i)) + for (key, title) in sorted(by_area): + out.append(f'- {title}:') + for l, i in sorted(by_area[(key, title)], key=lambda x: natural(sd.name(x[0]))): + out.append(sd.line(l, i, ' ')) + out.append('## Finish') + out.append(finish_line(sd.settings)) + + +def section_items(sd, out): + out.append('') + out.append('# Items by area') + by_area = {} + for loc, it in sd.loc_item.items(): + if loc.startswith(('starting-item', 'starting-dungeon-item')): + continue + by_area.setdefault(sd.area(loc), []).append(loc) + for (key, title) in sorted(by_area): + locs = sorted(by_area[(key, title)], key=lambda l: natural(sd.name(l))) + small = [l for l in locs if JUNK.match(re.sub(r'\[\d+\]$', '', sd.loc_item[l]))] + out.append(f'## {title}') + for l in locs: + if l not in small: + out.append(sd.line(l)) + if small: # (rupees, refills, traps: folded away) + out.append(f'### Small items ({len(small)})') + for l in small: + out.append(sd.line(l)) + + +def section_dungeons(sd, out): + if not sd.S.get('dungeon-entrances'): + return + out.append('') + out.append('# Dungeon entrances') + for l in sd.S['dungeon-entrances']: + a, b = [x.strip() for x in l.split('->')] + out.append(f'- {DUNGEONS.get(a, a)} entrance leads into {DUNGEONS.get(b, b)}') + + +def section_rooms(sd, seed_dir, out): + p = os.path.join(seed_dir, 'dungeon_rooms.tsv') # (room shuffle: tools/rando/dungeon_gen.py) + if not sd.rooms_on or not os.path.exists(p): + return + moved = {} + for l in open(p): + f = l.rstrip('\n').split('\t') + if len(f) < 3 or f[0] not in LEVEL_D: + continue + lv, cell, room = f + src_lv, _, src_cell = room.rpartition('_') + if room == f'{lv}_{cell}' or src_lv not in LEVEL_D: + continue + moved.setdefault(LEVEL_D[lv], []).append((cell, LEVEL_D[src_lv], src_cell)) + if not moved: + return + out.append('') + out.append('# Dungeon rooms') + out.append('Where each moved room is now and where it came from.') + for d in DUNGEON_ORDER: + if d not in moved: + continue + out.append(f'## {DUNGEONS[DKEY[d]]}') + for cell, sd_, sc in sorted(moved[d], key=lambda x: (x[0][2], x[0][:2])): + src = DPREFIX[sd_] + out.append(f'- Room {room_word(cell)} -> {src}, room {room_word(sc)}') + + +def section_entrances(sd, seed_dir, out): + import entrance_names + seed_id = sd.settings.get('seed', '') + cands = [os.path.join(seed_dir, f'entrances_{seed_id}.txt'), + os.path.join(seed_dir, f'entrances_{os.path.basename(os.path.normpath(seed_dir))}.txt')] + cands += sorted(f for f in os.listdir(seed_dir) if f.startswith('entrances_') and f.endswith('.txt')) + ent = next((c if os.path.isabs(c) else os.path.join(seed_dir, c) for c in cands + if os.path.exists(c if os.path.isabs(c) else os.path.join(seed_dir, c))), None) + if not ent: + return + doors, exits, mode = [], [], None + for l in open(ent): + if l.startswith('Entrances'): + mode = 'in' + continue + if l.startswith('Exits'): + mode = 'out' + continue + m = re.match(r'^\s+(\S+)\s+->\s+(\S+)', l) + if m and mode: + (doors if mode == 'in' else exits).append(m.groups()) + if not doors: + return + nm = entrance_names.name + out.append('') + out.append('# Entrances') + shuffled = [(a, b) for a, b in doors if a != b] + same = len(doors) - len(shuffled) + out.append('## Doors (each door and where it now leads)') + for a, b in sorted(shuffled, key=lambda x: natural(nm(x[0]))): + out.append(f'- {nm(a)} -> {nm(b)}') + if same: + out.append(f'### Unchanged ({same})') + for a, b in sorted(((a, b) for a, b in doors if a == b), key=lambda x: natural(nm(x[0]))): + out.append(f'- {nm(a)}') + back = {b: a for a, b in doors} + odd = [(a, b) for a, b in exits if back.get(a) != b] # (decoupled: leaving doesn't take you back out the same door) + if odd: + out.append('## Exits (each way out and where it puts you)') + for a, b in sorted(odd, key=lambda x: natural(nm(x[0]))): + out.append(f'- {nm(a)} -> {nm(b)}') + + def build(seed_dir): seed = os.path.basename(os.path.normpath(seed_dir)) sp = os.path.join(seed_dir, 'spoiler.txt') @@ -128,94 +427,23 @@ def build(seed_dir): if not os.path.exists(sp): return None S = parse_spoiler(sp) - settings = json.load(open(os.path.join(seed_dir, 'settings.json'))) if os.path.exists(os.path.join(seed_dir, 'settings.json')) else {} - loc_area, loc_item = {}, {} - for sec, lines in S.items(): - if sec in AREAS: - for l in lines: - if ':' in l: - loc, it = [x.strip() for x in l.split(':', 1)] - loc_area[loc], loc_item[loc] = sec, it - shells_important = bool(settings.get('seashells-important')) - # shuffled dungeons: "tail-cave -> eagle-tower" = Tail Cave's entrance leads into Eagle's Tower - entered_via = {} - for l in S.get('dungeon-entrances', []): - a, b = [x.strip() for x in l.split('->')] - if a != b: - entered_via[b] = a - - def area_name(sec): - n = AREAS.get(sec, 'Elsewhere') - if sec in entered_via: - n += f" - enter through {DUNGEONS[entered_via[sec]].split(' (')[0]}'s entrance" - return n + settings = load_json(seed_dir, 'settings.json', {}) + sph = ensure_spheres(seed_dir) + sd = Seed(seed_dir, S, settings, sph) out = [f'# Seed {seed}'] - on = sorted(k for k, v in settings.items() if v is True and k not in ('create-spoiler',)) + if settings.get('seed') and settings['seed'] != seed: + out.append(f"Seed ID: {settings['seed']}") + on = sorted(k for k, v in settings.items() if v is True and k not in INTERNAL) out.append('Settings: ' + ', '.join(k.replace('-', ' ') for k in on)) if 'starting-items' in S: out.append('Starting items: ' + ', '.join(pretty_item(i) for i in S['starting-items'])) - sph = ensure_spheres(seed_dir) - out.append('') - out.append('# Walkthrough') - if sph: - out.append('Each step can be done with what you had after the previous steps (any order within a step).') - out.append('Only items that open things up are listed; rupees, traps and similar are left out.') - n = 0 - for s in sph: - keep = [(l, i) for l, i in s if not JUNK.match(re.sub(r'\[\d+\]$', '', i)) and not l.startswith('starting-') - and not re.search(r'(compass|map|beak)', i) - and (shells_important or not i.startswith('seashell')) - and not i.startswith(('heart-piece', 'heart-container'))] - if not keep: - continue - n += 1 - out.append(f'## Step {n}') - by_area = {} - for l, i in keep: - by_area.setdefault(area_name(loc_area.get(l, '')), []).append((l, i)) - for area in sorted(by_area): - out.append(f'- {area}:') - for l, i in sorted(by_area[area], key=lambda x: pretty_loc(x[0])): - out.append(f' {pretty_loc(l)} -> {pretty_item(i)}') - out.append('## Finish') - out.append('- With all eight instruments, play the Ballad of the Wind Fish at the egg on Tal Tal Heights.') - else: - out.append('(No walkthrough: this seed has no request.json to recompute it.)') - out.append('') - out.append('# Items by area') - for sec in S: - if sec not in AREAS or not S[sec]: - continue - out.append(f'## {area_name(sec)}') - for l in S[sec]: - if ':' in l: - loc, it = [x.strip() for x in l.split(':', 1)] - out.append(f'- {pretty_loc(loc)} -> {pretty_item(it)}') - if S.get('dungeon-entrances'): - out.append('') - out.append('# Dungeon entrances') - for l in S['dungeon-entrances']: - a, b = [x.strip() for x in l.split('->')] - out.append(f'- {DUNGEONS.get(a, a)} entrance leads into {DUNGEONS.get(b, b)}') - ent = os.path.join(seed_dir, f'entrances_{seed}.txt') - if os.path.exists(ent): - out.append('') - out.append('# Entrances') - mode = None - for l in open(ent): - if l.startswith('Entrances'): - mode = 'in' - out.append('## Doors (outside door -> interior it now leads into)') - continue - if l.startswith('Exits'): - mode = 'out' - out.append('## Exits (interior -> where leaving it puts you)') - continue - m = re.match(r'^\s+(\S+)\s+->\s+(\S+)', l) - if m: - a, b = (x.replace('-', ' ') for x in m.groups()) - out.append(f'- {a} -> {b}' if mode == 'in' else f'- leaving {a} -> outside {b}') + section_route(sd, seed_dir, out) + section_steps(sd, sph, out) + section_items(sd, out) + section_dungeons(sd, out) + section_rooms(sd, seed_dir, out) + section_entrances(sd, seed_dir, out) hp = os.path.join(seed_dir, 'seed_hints.txt') # (Hints on: what each owl statue and phone call says) if os.path.exists(hp): out.append('') @@ -225,9 +453,111 @@ def area_name(sec): out.append(f'- {where}: {text}') with open(os.path.join(seed_dir, 'spoiler_view.txt'), 'w') as f: f.write('\n'.join(out) + '\n') + write_html(out, seed, os.path.join(seed_dir, 'spoiler.html')) return len(out) +# ------------------------------------------------------------------ spoiler.html +CSS = """ +:root{--bg:#f7f3ea;--fg:#2b2620;--mut:#7a7060;--line:#e2d9c6;--acc:#2f6f4f;--card:#fffdf8} +@media (prefers-color-scheme:dark){:root{--bg:#1d1b18;--fg:#ece6da;--mut:#a39a8a;--line:#3a352d;--acc:#7cc79f;--card:#25221e}} +*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.45 -apple-system,system-ui,sans-serif} +main{max-width:860px;margin:0 auto;padding:16px}h1{font-size:22px;margin:8px 0} +.bar{position:sticky;top:0;background:var(--bg);padding:8px 0;display:flex;gap:12px;flex-wrap:wrap;align-items:center;border-bottom:1px solid var(--line);z-index:1} +input[type=search]{flex:1;min-width:200px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--fg);font:inherit} +details{background:var(--card);border:1px solid var(--line);border-radius:10px;margin:10px 0;padding:6px 12px} +details details{border:none;background:none;padding:0 0 0 6px;margin:4px 0} +summary{cursor:pointer;font-weight:600;padding:4px 0}details details summary{font-weight:500} +ul{margin:4px 0 8px;padding-left:20px}li{margin:2px 0}li.sub{list-style:none;margin-left:-4px;color:var(--mut);font-weight:600} +.it{font-weight:600}.u .it{color:var(--acc)}p{margin:6px 0;color:var(--mut)} +#gate{text-align:center;padding:60px 16px}#gate button{font:inherit;padding:10px 22px;border-radius:10px;border:1px solid var(--acc);background:var(--acc);color:var(--bg);cursor:pointer} +.hide{display:none!important} +""" +JS = """ +const q=document.getElementById('q'),u=document.getElementById('u'); +function apply(){const s=q.value.trim().toLowerCase(),uo=u.checked; +document.querySelectorAll('li[data-l]').forEach(li=>{const t=li.textContent.toLowerCase(); +li.classList.toggle('hide',(s&&!t.includes(s)&&!(li.dataset.h||'').includes(s))||(uo&&li.dataset.h&&!li.classList.contains('u')))}); +document.querySelectorAll('li.sub').forEach(h=>{let n=h.nextElementSibling,any=false; +while(n&&!n.classList.contains('sub')){if(n.dataset.l!==undefined&&!n.classList.contains('hide'))any=true;n=n.nextElementSibling}h.classList.toggle('hide',!any)}); +document.querySelectorAll('details').forEach(d=>{const lis=d.querySelectorAll('li[data-l]');if(!lis.length)return; +const vis=[...lis].some(li=>!li.classList.contains('hide'));d.classList.toggle('hide',!vis);if(s&&vis)d.open=true})} +q.addEventListener('input',apply);u.addEventListener('change',apply); +document.getElementById('show').onclick=()=>{document.getElementById('gate').classList.add('hide');document.getElementById('doc').classList.remove('hide')}; +""" + + +def write_html(lines, seed, path): + e = html.escape + body, depth = [], {'sec': False, 'sub': False, 'grp': False, 'ul': False} + add = body.append # (not .append: tools/menu_strings.py takes append() strings for menu text) + + def close(level): + if depth['ul']: + add('') + depth['ul'] = False + for k in ('grp', 'sub', 'sec')[:{'grp': 1, 'sub': 2, 'sec': 3}[level]]: + if depth[k]: + add('') + depth[k] = False + + def li(text, cls='', loc=''): + if not depth['ul']: + add('
    ') + depth['ul'] = True + if ' -> ' in text: + a, b = text.split(' -> ', 1) + text = f'{e(a)} → {e(b)}' + else: + text = e(text) + add(f'
  • {text}
  • ' if cls != 'sub' else f'
  • {text}
  • ') + + title = '' + first_sec, in_route = True, False + for raw in lines: + text, _, rest = raw.partition(TAG) + loc, _, flags = rest.partition(TAG) + cls = 'u' if 'u' in flags else '' + if text.startswith('# '): + close('sec') + if not title: + title = text[2:] + add(f'

    {e(title)}

    ') + continue + add(f'{e(text[2:])}') + first_sec = False + in_route = text[2:] == 'Route' # (its stops start open: read top to bottom) + depth['sec'] = True + elif text.startswith('## '): + close('sub') + add(f'{e(text[3:])}') + depth['sub'] = True + elif text.startswith('### '): + close('grp') + add(f'
    {e(text[4:])}') + depth['grp'] = True + elif text.startswith('- ') and text.endswith(':') and not loc: + li(text[2:-1], 'sub') + elif text.startswith('- ') or text.startswith(' '): + li(text[2:], cls, loc) + elif text: + if depth['ul']: + add('
') + depth['ul'] = False + add(f'

{e(text)}

') + close('sec') + page = (f'' + f'Spoiler - {e(seed)}' + f'
' + f'

Spoiler log - {e(seed)}

This shows where every item is, plus a route to beat ' + f'the seed.

' + f'
' + f'
{"".join(body)}
' + f'
') + with open(path, 'w', encoding='utf-8') as f: + f.write(page) + + if __name__ == '__main__': for d in sys.argv[1:]: print(d, build(d)) diff --git a/tools/test_ios_python.sh b/tools/test_ios_python.sh index f2e33ef56..43a5c9705 100755 --- a/tools/test_ios_python.sh +++ b/tools/test_ios_python.sh @@ -61,10 +61,11 @@ echo "$(wc -l < "$W/ios-files.txt" | tr -d ' ') files from the device" echo '{"seed": "pytest", "create-spoiler": true}' > "$W/request.json" (cd tools/rando && PYTHONHASHSEED=0 "../../$PY" las_headless.py "$PWD/../../$ROMFS" "../../$W/mac" "../../$W/request.json" > "../../$W/mac-generate.log" 2>&1) -# compare (generate.log and request.json: the device's own paths; spoiler_view.txt's first line names the folder) +# compare (generate.log and request.json: the device's own paths; spoiler_view.txt's first line names the folder, and +# spoiler.html is that file as a page) fail=0 while IFS= read -r rel; do - case "$rel" in generate.log|request.json) continue ;; esac + case "$rel" in generate.log|request.json|spoiler.html) continue ;; esac # (spoiler.html: spoiler_view.txt as a page, names the folder) if [ ! -f "$W/mac/$rel" ]; then echo "only on the device: $rel"; fail=1 elif [ "$rel" = spoiler_view.txt ]; then cmp -s <(tail -n +2 "$W/mac/$rel") <(tail -n +2 "$W/ios/$rel") || { echo "DIFF $rel"; fail=1; } From 3c3ebf498139238652183773ab1dca354cbca3ac Mon Sep 17 00:00:00 2001 From: Peiikai <339721950+peiikai@users.noreply.github.com> Date: Thu, 12 Nov 2026 19:03:05 -0600 Subject: [PATCH 2/8] Spoiler log: call the step list Spheres (the usual randomizer word) Co-Authored-By: Claude Opus 5.5 --- runtime/ui/lang/de.inc | 10 +++++++--- runtime/ui/lang/es.inc | 10 +++++++--- runtime/ui/lang/fr.inc | 10 +++++++--- runtime/ui/lang/it.inc | 10 +++++++--- runtime/ui/lang/ja.inc | 10 +++++++--- runtime/ui/lang/ko.inc | 10 +++++++--- runtime/ui/lang/nl.inc | 10 +++++++--- runtime/ui/lang/pt-BR.inc | 10 +++++++--- runtime/ui/lang/ru.inc | 10 +++++++--- runtime/ui/lang/zh-Hans.inc | 10 +++++++--- runtime/ui/lang/zh-Hant.inc | 10 +++++++--- runtime/ui/spoiler_view.mm | 2 +- tools/menu_strings.py | 2 +- tools/rando/spoiler_view.py | 10 +++++----- 14 files changed, 84 insertions(+), 40 deletions(-) diff --git a/runtime/ui/lang/de.inc b/runtime/ui/lang/de.inc index 28f00541d..67e92a967 100644 --- a/runtime/ui/lang/de.inc +++ b/runtime/ui/lang/de.inc @@ -20,6 +20,7 @@ {"Trendy figure %s", "Kran-Figur %s"}, {"fairy %s", "Fee %s"}, {"Step %s", "Schritt %s"}, +{"Sphere %s", "Sphäre %s"}, {"Seed %s", "Seed %s"}, // runtime/cosmetic_colour.c {"Default", "Standard"}, @@ -1307,8 +1308,8 @@ {"Route", "Route"}, {"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Nur, was du brauchst, um den Seed zu schaffen. Jeder Schritt ist mit den Items der vorherigen Schritte erreichbar."}, {"Finish", "Abschluss"}, -{"Everything useful step by step", "Alles Nützliche, Schritt für Schritt"}, -{"Each step can be done with what you had after the previous steps (any order within a step).", "Jeder Schritt ist mit dem machbar, was du nach den vorigen Schritten hattest (innerhalb eines Schritts in beliebiger Reihenfolge)."}, +{"Spheres", "Sphären"}, +{"Each sphere can be done with what you had after the previous spheres (any order within a sphere).", "Jede Sphäre ist mit dem machbar, was du nach den vorigen Sphären hattest (innerhalb einer Sphäre in beliebiger Reihenfolge)."}, {"Only items that open things up are listed; rupees", "Gelistet sind nur Items, die etwas freischalten; Rubine"}, {"traps and similar are left out.", "Fallen und Ähnliches fehlen."}, {"Items by area", "Items nach Gebiet"}, @@ -1318,7 +1319,7 @@ {"Doors", "Türen"}, {"each door and where it now leads", "jede Tür und wohin sie jetzt führt"}, {"Settings: %s", "Einstellungen: %s"}, -{"(This seed has no step list.)", "(Dieser Seed hat keine Schrittliste.)"}, +{"(This seed has no sphere list.)", "(Dieser Seed hat keine Sphärenliste.)"}, {"%s entrance leads into %s", "Eingang %s führt in %s"}, {"Unchanged (%s)", "Unverändert (%s)"}, {"Exits", "Ausgänge"}, @@ -1808,6 +1809,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"Everything useful step by step", "Alles Nützliche, Schritt für Schritt"}, +{"Each step can be done with what you had after the previous steps (any order within a step).", "Jeder Schritt ist mit dem machbar, was du nach den vorigen Schritten hattest (innerhalb eines Schritts in beliebiger Reihenfolge)."}, +{"(This seed has no step list.)", "(Dieser Seed hat keine Schrittliste.)"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "An: Er kommt dorthin, wo dein Daumen landet, überall unten links. Aus: Er bleibt, wo er ist (verschieben unter Touch-Layout bearbeiten)."}, {"Edit touch layout", "Touch-Layout bearbeiten"}, {"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Verschiebe die Bildschirmknöpfe, ändere ihre Größe oder blende sie aus, direkt über dem Spiel. Verfügbar während des Spielens."}, diff --git a/runtime/ui/lang/es.inc b/runtime/ui/lang/es.inc index f5500d9a8..c01d54118 100644 --- a/runtime/ui/lang/es.inc +++ b/runtime/ui/lang/es.inc @@ -20,6 +20,7 @@ {"Trendy figure %s", "Figura %s de la Sala de juegos"}, {"fairy %s", "hada %s"}, {"Step %s", "Paso %s"}, +{"Sphere %s", "Esfera %s"}, {"Seed %s", "Semilla %s"}, // runtime/cosmetic_colour.c {"Default", "Predeterminado"}, @@ -1307,8 +1308,8 @@ {"Route", "Ruta"}, {"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Solo lo necesario para completar la semilla. Cada parada se alcanza con los objetos de las anteriores."}, {"Finish", "Final"}, -{"Everything useful step by step", "Todo lo útil, paso a paso"}, -{"Each step can be done with what you had after the previous steps (any order within a step).", "Cada paso se puede hacer con lo que tenías tras los pasos anteriores (en cualquier orden dentro de un paso)."}, +{"Spheres", "Esferas"}, +{"Each sphere can be done with what you had after the previous spheres (any order within a sphere).", "Cada esfera se puede hacer con lo que tenías tras las esferas anteriores (en cualquier orden dentro de una esfera)."}, {"Only items that open things up are listed; rupees", "Solo se indican los objetos que abren camino; las rupias"}, {"traps and similar are left out.", "las trampas y similares se omiten."}, {"Items by area", "Objetos por zona"}, @@ -1318,7 +1319,7 @@ {"Doors", "Puertas"}, {"each door and where it now leads", "cada puerta y adónde lleva ahora"}, {"Settings: %s", "Opciones: %s"}, -{"(This seed has no step list.)", "(Esta semilla no tiene lista de pasos.)"}, +{"(This seed has no sphere list.)", "(Esta semilla no tiene lista de esferas.)"}, {"%s entrance leads into %s", "La entrada de %s lleva a %s"}, {"Unchanged (%s)", "Sin cambios (%s)"}, {"Exits", "Salidas"}, @@ -1808,6 +1809,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"Everything useful step by step", "Todo lo útil, paso a paso"}, +{"Each step can be done with what you had after the previous steps (any order within a step).", "Cada paso se puede hacer con lo que tenías tras los pasos anteriores (en cualquier orden dentro de un paso)."}, +{"(This seed has no step list.)", "(Esta semilla no tiene lista de pasos.)"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Activado: aparece donde pongas el pulgar, en cualquier parte de la zona inferior izquierda. Desactivado: se queda en su sitio (muévelo en Editar disposición táctil)."}, {"Edit touch layout", "Editar disposición táctil"}, {"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Mueve los botones en pantalla, cambia el tamaño de cada uno u ocúltalo, sobre el juego. Disponible mientras juegas."}, diff --git a/runtime/ui/lang/fr.inc b/runtime/ui/lang/fr.inc index a2a18fcfb..9f5728c76 100644 --- a/runtime/ui/lang/fr.inc +++ b/runtime/ui/lang/fr.inc @@ -20,6 +20,7 @@ {"Trendy figure %s", "Figurine du jeu dans le vent %s"}, {"fairy %s", "fée %s"}, {"Step %s", "Étape %s"}, +{"Sphere %s", "Sphère %s"}, {"Seed %s", "Seed %s"}, // runtime/cosmetic_colour.c {"Default", "Par défaut"}, @@ -1307,8 +1308,8 @@ {"Route", "Parcours"}, {"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Seulement ce qu'il faut pour finir la seed. Chaque étape est accessible avec les objets des étapes précédentes."}, {"Finish", "Fin"}, -{"Everything useful step by step", "Tout ce qui est utile, étape par étape"}, -{"Each step can be done with what you had after the previous steps (any order within a step).", "Chaque étape peut se faire avec ce que tu avais après les étapes précédentes (dans n'importe quel ordre au sein d'une étape)."}, +{"Spheres", "Sphères"}, +{"Each sphere can be done with what you had after the previous spheres (any order within a sphere).", "Chaque sphère peut se faire avec ce que tu avais après les sphères précédentes (dans n'importe quel ordre au sein d'une sphère)."}, {"Only items that open things up are listed; rupees", "Seuls les objets qui débloquent quelque chose sont listés ; rubis"}, {"traps and similar are left out.", "pièges et autres sont omis."}, {"Items by area", "Objets par zone"}, @@ -1318,7 +1319,7 @@ {"Doors", "Portes"}, {"each door and where it now leads", "chaque porte et où elle mène maintenant"}, {"Settings: %s", "Paramètres : %s"}, -{"(This seed has no step list.)", "(Cette seed n'a pas de liste d'étapes.)"}, +{"(This seed has no sphere list.)", "(Cette seed n'a pas de liste de sphères.)"}, {"%s entrance leads into %s", "L'entrée de %s mène à %s"}, {"Unchanged (%s)", "Inchangées (%s)"}, {"Exits", "Sorties"}, @@ -1808,6 +1809,9 @@ {", ", ", "}, {": ", " : "}, // not used any more +{"Everything useful step by step", "Tout ce qui est utile, étape par étape"}, +{"Each step can be done with what you had after the previous steps (any order within a step).", "Chaque étape peut se faire avec ce que tu avais après les étapes précédentes (dans n'importe quel ordre au sein d'une étape)."}, +{"(This seed has no step list.)", "(Cette seed n'a pas de liste d'étapes.)"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Oui : il vient là où se pose ton pouce, n'importe où en bas à gauche. Non : il reste à sa place (déplace-le dans Modifier la disposition tactile)."}, {"Edit touch layout", "Modifier la disposition tactile"}, {"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Déplace les boutons à l'écran, change la taille de chacun ou masque-le, par-dessus le jeu. Disponible en cours de partie."}, diff --git a/runtime/ui/lang/it.inc b/runtime/ui/lang/it.inc index 5a7da895d..e40e6ba2b 100644 --- a/runtime/ui/lang/it.inc +++ b/runtime/ui/lang/it.inc @@ -20,6 +20,7 @@ {"Trendy figure %s", "Statuetta gioco alla moda %s"}, {"fairy %s", "fata %s"}, {"Step %s", "Fase %s"}, +{"Sphere %s", "Sfera %s"}, {"Seed %s", "Seed %s"}, // runtime/cosmetic_colour.c {"Default", "Predefinito"}, @@ -1307,8 +1308,8 @@ {"Route", "Percorso"}, {"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Solo ciò che serve per completare il seed. Ogni tappa si raggiunge con gli oggetti delle tappe precedenti."}, {"Finish", "Finale"}, -{"Everything useful step by step", "Tutto ciò che è utile, passo per passo"}, -{"Each step can be done with what you had after the previous steps (any order within a step).", "Ogni fase si può completare con quello che avevi dopo le fasi precedenti (in qualsiasi ordine all'interno di una fase)."}, +{"Spheres", "Sfere"}, +{"Each sphere can be done with what you had after the previous spheres (any order within a sphere).", "Ogni sfera si può completare con quello che avevi dopo le sfere precedenti (in qualsiasi ordine all'interno di una sfera)."}, {"Only items that open things up are listed; rupees", "Sono elencati solo gli oggetti che sbloccano qualcosa; rupie"}, {"traps and similar are left out.", "trappole e simili sono esclusi."}, {"Items by area", "Oggetti per zona"}, @@ -1318,7 +1319,7 @@ {"Doors", "Porte"}, {"each door and where it now leads", "ogni porta e dove conduce ora"}, {"Settings: %s", "Impostazioni: %s"}, -{"(This seed has no step list.)", "(Questo seed non ha un elenco di passi.)"}, +{"(This seed has no sphere list.)", "(Questo seed non ha un elenco di sfere.)"}, {"%s entrance leads into %s", "L'ingresso di %s porta in %s"}, {"Unchanged (%s)", "Invariati (%s)"}, {"Exits", "Uscite"}, @@ -1808,6 +1809,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"Everything useful step by step", "Tutto ciò che è utile, passo per passo"}, +{"Each step can be done with what you had after the previous steps (any order within a step).", "Ogni fase si può completare con quello che avevi dopo le fasi precedenti (in qualsiasi ordine all'interno di una fase)."}, +{"(This seed has no step list.)", "(Questo seed non ha un elenco di passi.)"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Sì: si sposta dove appoggi il pollice, ovunque in basso a sinistra. No: resta dov'è (spostalo in Modifica layout touch)."}, {"Edit touch layout", "Modifica layout touch"}, {"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Sposta i pulsanti sullo schermo, cambia la dimensione di ognuno o nascondilo, sopra il gioco. Disponibile durante la partita."}, diff --git a/runtime/ui/lang/ja.inc b/runtime/ui/lang/ja.inc index d3c7ccfdd..5341f8919 100644 --- a/runtime/ui/lang/ja.inc +++ b/runtime/ui/lang/ja.inc @@ -20,6 +20,7 @@ {"Trendy figure %s", "今はやりのゲームのフィギュア%s"}, {"fairy %s", "妖精%s"}, {"Step %s", "ステップ%s"}, +{"Sphere %s", "スフィア %s"}, {"Seed %s", "シード %s"}, // runtime/cosmetic_colour.c {"Default", "デフォルト"}, @@ -1307,8 +1308,8 @@ {"Route", "ルート"}, {"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "シードをクリアするのに必要なものだけです。各ステップは、それより前のステップで手に入るアイテムで行けます。"}, {"Finish", "クリア"}, -{"Everything useful step by step", "役立つものを順番にすべて"}, -{"Each step can be done with what you had after the previous steps (any order within a step).", "各ステップは、それまでのステップで手に入れたもので進められます(ステップ内の順番は自由)。"}, +{"Spheres", "スフィア"}, +{"Each sphere can be done with what you had after the previous spheres (any order within a sphere).", "各スフィアは、それまでのスフィアで手に入れたもので進められます(スフィア内の順番は自由)。"}, {"Only items that open things up are listed; rupees", "先へ進むのに必要なアイテムだけを載せています。ルピー"}, {"traps and similar are left out.", "トラップなどは省いています。"}, {"Items by area", "エリア別アイテム"}, @@ -1318,7 +1319,7 @@ {"Doors", "トビラ"}, {"each door and where it now leads", "各トビラと今つながっている先"}, {"Settings: %s", "設定: %s"}, -{"(This seed has no step list.)", "(このシードにはステップ一覧がありません。)"}, +{"(This seed has no sphere list.)", "(このシードにはスフィアの一覧がありません。)"}, {"%s entrance leads into %s", "%sの入口は%sにつながっています"}, {"Unchanged (%s)", "変更なし(%s)"}, {"Exits", "出口"}, @@ -1808,6 +1809,9 @@ {", ", "、"}, {": ", ":"}, // not used any more +{"Everything useful step by step", "役立つものを順番にすべて"}, +{"Each step can be done with what you had after the previous steps (any order within a step).", "各ステップは、それまでのステップで手に入れたもので進められます(ステップ内の順番は自由)。"}, +{"(This seed has no step list.)", "(このシードにはステップ一覧がありません。)"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "オン: 左下のどこでも、親指を置いた場所に移動します。オフ: その場所に固定されます(「タッチ配置を編集」で移動できます)。"}, {"Edit touch layout", "タッチ配置を編集"}, {"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "ゲーム画面の上で、画面上のボタンを動かしたり、大きさを変えたり、隠したりできます。プレイ中に使えます。"}, diff --git a/runtime/ui/lang/ko.inc b/runtime/ui/lang/ko.inc index 6b57e3171..992347fe9 100644 --- a/runtime/ui/lang/ko.inc +++ b/runtime/ui/lang/ko.inc @@ -20,6 +20,7 @@ {"Trendy figure %s", "최신 유행 게임 피규어 %s"}, {"fairy %s", "요정 %s"}, {"Step %s", "단계 %s"}, +{"Sphere %s", "스피어 %s"}, {"Seed %s", "시드 %s"}, // runtime/cosmetic_colour.c {"Default", "기본"}, @@ -1307,8 +1308,8 @@ {"Route", "경로"}, {"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "시드를 클리어하는 데 필요한 것만 보여 줍니다. 각 단계는 앞선 단계에서 얻은 아이템으로 갈 수 있습니다."}, {"Finish", "마무리"}, -{"Everything useful step by step", "유용한 것 전부, 단계별로"}, -{"Each step can be done with what you had after the previous steps (any order within a step).", "각 단계는 이전 단계까지 얻은 것으로 진행할 수 있습니다 (단계 안에서는 순서 자유)."}, +{"Spheres", "스피어"}, +{"Each sphere can be done with what you had after the previous spheres (any order within a sphere).", "각 스피어는 이전 스피어까지 얻은 것으로 진행할 수 있습니다 (스피어 안에서는 순서 자유)."}, {"Only items that open things up are listed; rupees", "길을 여는 아이템만 표시합니다. 루피"}, {"traps and similar are left out.", "함정 등은 뺐습니다."}, {"Items by area", "지역별 아이템"}, @@ -1318,7 +1319,7 @@ {"Doors", "문"}, {"each door and where it now leads", "각 문과 지금 이어지는 곳"}, {"Settings: %s", "설정: %s"}, -{"(This seed has no step list.)", "(이 시드에는 단계 목록이 없습니다.)"}, +{"(This seed has no sphere list.)", "(이 시드에는 스피어 목록이 없습니다.)"}, {"%s entrance leads into %s", "%s 입구 → %s"}, {"Unchanged (%s)", "변경 없음 (%s)"}, {"Exits", "출구"}, @@ -1808,6 +1809,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"Everything useful step by step", "유용한 것 전부, 단계별로"}, +{"Each step can be done with what you had after the previous steps (any order within a step).", "각 단계는 이전 단계까지 얻은 것으로 진행할 수 있습니다 (단계 안에서는 순서 자유)."}, +{"(This seed has no step list.)", "(이 시드에는 단계 목록이 없습니다.)"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "켜기: 왼쪽 아래 어디든 엄지를 대는 곳으로 옵니다. 끄기: 제자리에 있습니다(터치 배치 편집에서 옮길 수 있음)."}, {"Edit touch layout", "터치 배치 편집"}, {"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "게임 화면 위에서 화면 버튼을 옮기거나, 크기를 바꾸거나, 숨깁니다. 플레이 중에 쓸 수 있습니다."}, diff --git a/runtime/ui/lang/nl.inc b/runtime/ui/lang/nl.inc index 50c05e72f..8174679cf 100644 --- a/runtime/ui/lang/nl.inc +++ b/runtime/ui/lang/nl.inc @@ -20,6 +20,7 @@ {"Trendy figure %s", "Speelhalbeeldje %s"}, {"fairy %s", "fee %s"}, {"Step %s", "Stap %s"}, +{"Sphere %s", "Sfeer %s"}, {"Seed %s", "Seed %s"}, // runtime/cosmetic_colour.c {"Default", "Standaard"}, @@ -1307,8 +1308,8 @@ {"Route", "Route"}, {"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Alleen wat je nodig hebt om de seed uit te spelen. Elke stop is te bereiken met de voorwerpen van de stops ervoor."}, {"Finish", "Einde"}, -{"Everything useful step by step", "Alles wat nuttig is, stap voor stap"}, -{"Each step can be done with what you had after the previous steps (any order within a step).", "Elke stap kun je doen met wat je na de vorige stappen had (binnen een stap in elke volgorde)."}, +{"Spheres", "Sferen"}, +{"Each sphere can be done with what you had after the previous spheres (any order within a sphere).", "Elke sfeer kun je doen met wat je na de vorige sferen had (binnen een sfeer in elke volgorde)."}, {"Only items that open things up are listed; rupees", "Alleen voorwerpen die iets openen staan erbij; rupees"}, {"traps and similar are left out.", "vallen en dergelijke zijn weggelaten."}, {"Items by area", "Voorwerpen per gebied"}, @@ -1318,7 +1319,7 @@ {"Doors", "Deuren"}, {"each door and where it now leads", "elke deur en waar die nu naartoe leidt"}, {"Settings: %s", "Instellingen: %s"}, -{"(This seed has no step list.)", "(Deze seed heeft geen stappenlijst.)"}, +{"(This seed has no sphere list.)", "(Deze seed heeft geen lijst met sferen.)"}, {"%s entrance leads into %s", "Ingang %s leidt naar %s"}, {"Unchanged (%s)", "Ongewijzigd (%s)"}, {"Exits", "Uitgangen"}, @@ -1808,6 +1809,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"Everything useful step by step", "Alles wat nuttig is, stap voor stap"}, +{"Each step can be done with what you had after the previous steps (any order within a step).", "Elke stap kun je doen met wat je na de vorige stappen had (binnen een stap in elke volgorde)."}, +{"(This seed has no step list.)", "(Deze seed heeft geen stappenlijst.)"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Aan: hij komt waar je duim neerkomt, overal linksonder. Uit: hij blijft waar hij is (verplaats hem in Touch-indeling bewerken)."}, {"Edit touch layout", "Touch-indeling bewerken"}, {"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Verplaats de knoppen op het scherm, wijzig van elke knop de grootte of verberg hem, boven op het spel. Beschikbaar tijdens het spelen."}, diff --git a/runtime/ui/lang/pt-BR.inc b/runtime/ui/lang/pt-BR.inc index 2094831d2..322fb01cc 100644 --- a/runtime/ui/lang/pt-BR.inc +++ b/runtime/ui/lang/pt-BR.inc @@ -20,6 +20,7 @@ {"Trendy figure %s", "Boneco %s do Jogo Moderno"}, {"fairy %s", "fada %s"}, {"Step %s", "Passo %s"}, +{"Sphere %s", "Esfera %s"}, {"Seed %s", "Seed %s"}, // runtime/cosmetic_colour.c {"Default", "Padrão"}, @@ -1307,8 +1308,8 @@ {"Route", "Rota"}, {"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Só o necessário para concluir a seed. Cada parada pode ser alcançada com os itens das paradas anteriores."}, {"Finish", "Final"}, -{"Everything useful step by step", "Tudo o que é útil, passo a passo"}, -{"Each step can be done with what you had after the previous steps (any order within a step).", "Cada etapa pode ser feita com o que você tinha após as etapas anteriores (em qualquer ordem dentro de uma etapa)."}, +{"Spheres", "Esferas"}, +{"Each sphere can be done with what you had after the previous spheres (any order within a sphere).", "Cada esfera pode ser feita com o que você tinha após as esferas anteriores (em qualquer ordem dentro de uma esfera)."}, {"Only items that open things up are listed; rupees", "Só aparecem itens que abrem caminho; rupias"}, {"traps and similar are left out.", "armadilhas e similares ficam de fora."}, {"Items by area", "Itens por área"}, @@ -1318,7 +1319,7 @@ {"Doors", "Portas"}, {"each door and where it now leads", "cada porta e para onde ela leva agora"}, {"Settings: %s", "Configurações: %s"}, -{"(This seed has no step list.)", "(Esta seed não tem lista de passos.)"}, +{"(This seed has no sphere list.)", "(Esta seed não tem lista de esferas.)"}, {"%s entrance leads into %s", "A entrada de %s leva a %s"}, {"Unchanged (%s)", "Inalteradas (%s)"}, {"Exits", "Saídas"}, @@ -1808,6 +1809,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"Everything useful step by step", "Tudo o que é útil, passo a passo"}, +{"Each step can be done with what you had after the previous steps (any order within a step).", "Cada etapa pode ser feita com o que você tinha após as etapas anteriores (em qualquer ordem dentro de uma etapa)."}, +{"(This seed has no step list.)", "(Esta seed não tem lista de passos.)"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Ativado: ele vai para onde seu polegar tocar, em qualquer ponto da parte inferior esquerda. Desligado: ele fica onde está (mova-o em Editar layout de toque)."}, {"Edit touch layout", "Editar layout de toque"}, {"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Mova os botões na tela, mude o tamanho de cada um ou oculte-os, sobre o jogo. Disponível durante o jogo."}, diff --git a/runtime/ui/lang/ru.inc b/runtime/ui/lang/ru.inc index f6e1e749c..ff0d8f627 100644 --- a/runtime/ui/lang/ru.inc +++ b/runtime/ui/lang/ru.inc @@ -20,6 +20,7 @@ {"Trendy figure %s", "Фигурка «Зала удачи» %s"}, {"fairy %s", "фея %s"}, {"Step %s", "Шаг %s"}, +{"Sphere %s", "Сфера %s"}, {"Seed %s", "Сид %s"}, // runtime/cosmetic_colour.c {"Default", "Стандартный"}, @@ -1307,8 +1308,8 @@ {"Route", "Маршрут"}, {"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "Только то, что нужно для прохождения сида. Каждую точку можно достичь с предметами из предыдущих."}, {"Finish", "Финал"}, -{"Everything useful step by step", "Всё полезное по шагам"}, -{"Each step can be done with what you had after the previous steps (any order within a step).", "Каждый шаг можно выполнить с тем, что у вас было после предыдущих шагов (внутри шага — в любом порядке)."}, +{"Spheres", "Сферы"}, +{"Each sphere can be done with what you had after the previous spheres (any order within a sphere).", "Каждую сферу можно пройти с тем, что у вас было после предыдущих сфер (внутри сферы — в любом порядке)."}, {"Only items that open things up are listed; rupees", "Указаны только предметы, которые что-то открывают; рупии"}, {"traps and similar are left out.", "ловушки и прочее не указаны."}, {"Items by area", "Предметы по областям"}, @@ -1318,7 +1319,7 @@ {"Doors", "Двери"}, {"each door and where it now leads", "каждая дверь и куда она ведет"}, {"Settings: %s", "Настройки: %s"}, -{"(This seed has no step list.)", "(У этого сида нет списка шагов.)"}, +{"(This seed has no sphere list.)", "(У этого сида нет списка сфер.)"}, {"%s entrance leads into %s", "%s: вход ведет в «%s»"}, {"Unchanged (%s)", "Без изменений (%s)"}, {"Exits", "Выходы"}, @@ -1808,6 +1809,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"Everything useful step by step", "Всё полезное по шагам"}, +{"Each step can be done with what you had after the previous steps (any order within a step).", "Каждый шаг можно выполнить с тем, что у вас было после предыдущих шагов (внутри шага — в любом порядке)."}, +{"(This seed has no step list.)", "(У этого сида нет списка шагов.)"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "Вкл.: он появляется там, куда вы ставите палец, в любом месте слева внизу. Выкл.: он остается на месте (переместить его можно в «Изменить сенсорную раскладку»)."}, {"Edit touch layout", "Изменить сенсорную раскладку"}, {"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "Перемещайте экранные кнопки, меняйте их размер или скрывайте их прямо поверх игры. Доступно во время игры."}, diff --git a/runtime/ui/lang/zh-Hans.inc b/runtime/ui/lang/zh-Hans.inc index aab4e7313..4d127c03a 100644 --- a/runtime/ui/lang/zh-Hans.inc +++ b/runtime/ui/lang/zh-Hans.inc @@ -20,6 +20,7 @@ {"Trendy figure %s", "流行游戏塑像%s"}, {"fairy %s", "妖精%s"}, {"Step %s", "第%s步"}, +{"Sphere %s", "Sphere %s"}, {"Seed %s", "种子 %s"}, // runtime/cosmetic_colour.c {"Default", "默认"}, @@ -1307,8 +1308,8 @@ {"Route", "路线"}, {"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "只列出通关种子所需的内容。每一站都能用前面各站获得的道具到达。"}, {"Finish", "结局"}, -{"Everything useful step by step", "所有有用内容,逐步列出"}, -{"Each step can be done with what you had after the previous steps (any order within a step).", "每一步都能用之前步骤得到的东西完成(同一步内顺序随意)。"}, +{"Spheres", "Sphere"}, +{"Each sphere can be done with what you had after the previous spheres (any order within a sphere).", "每个 Sphere 都能用之前 Sphere 得到的东西完成(同一 Sphere 内顺序随意)。"}, {"Only items that open things up are listed; rupees", "只列出能开辟新路的道具;卢比"}, {"traps and similar are left out.", "陷阱等不列出。"}, {"Items by area", "各区域道具"}, @@ -1318,7 +1319,7 @@ {"Doors", "门"}, {"each door and where it now leads", "每扇门及其现在通往的地方"}, {"Settings: %s", "设置:%s"}, -{"(This seed has no step list.)", "(此种子没有步骤列表。)"}, +{"(This seed has no sphere list.)", "(这个种子没有 Sphere 列表。)"}, {"%s entrance leads into %s", "%s的入口通往%s"}, {"Unchanged (%s)", "未变(%s)"}, {"Exits", "出口"}, @@ -1808,6 +1809,9 @@ {", ", "、"}, {": ", ":"}, // not used any more +{"Everything useful step by step", "所有有用内容,逐步列出"}, +{"Each step can be done with what you had after the previous steps (any order within a step).", "每一步都能用之前步骤得到的东西完成(同一步内顺序随意)。"}, +{"(This seed has no step list.)", "(此种子没有步骤列表。)"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "开:拇指按在左下方任何位置,它都会移到那里。关:保持在原位(可在“编辑触控布局”中移动)。"}, {"Edit touch layout", "编辑触控布局"}, {"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "在游戏画面上移动屏幕按钮,调整各按钮的大小或将其隐藏。游玩时可用。"}, diff --git a/runtime/ui/lang/zh-Hant.inc b/runtime/ui/lang/zh-Hant.inc index 746744f18..0cc6f6218 100644 --- a/runtime/ui/lang/zh-Hant.inc +++ b/runtime/ui/lang/zh-Hant.inc @@ -20,6 +20,7 @@ {"Trendy figure %s", "流行遊戲塑像%s"}, {"fairy %s", "妖精%s"}, {"Step %s", "第%s步"}, +{"Sphere %s", "Sphere %s"}, {"Seed %s", "種子 %s"}, // runtime/cosmetic_colour.c {"Default", "預設"}, @@ -1307,8 +1308,8 @@ {"Route", "路線"}, {"Only what you need to beat the seed. Each stop can be reached with the items from the stops before it.", "只列出破關種子所需的內容。每一站都能用前面各站取得的道具到達。"}, {"Finish", "終點"}, -{"Everything useful step by step", "所有有用內容,逐步列出"}, -{"Each step can be done with what you had after the previous steps (any order within a step).", "每一步都能用前面步驟取得的道具完成(同一步內順序不拘)。"}, +{"Spheres", "Sphere"}, +{"Each sphere can be done with what you had after the previous spheres (any order within a sphere).", "每個 Sphere 都能用前面 Sphere 取得的道具完成(同一 Sphere 內順序不拘)。"}, {"Only items that open things up are listed; rupees", "只列出能開啟新區域的道具;盧比"}, {"traps and similar are left out.", "陷阱等都不列出。"}, {"Items by area", "各區域的道具"}, @@ -1318,7 +1319,7 @@ {"Doors", "門"}, {"each door and where it now leads", "每扇門及其現在通往的地方"}, {"Settings: %s", "設定:%s"}, -{"(This seed has no step list.)", "(此種子沒有步驟清單。)"}, +{"(This seed has no sphere list.)", "(這個種子沒有 Sphere 列表。)"}, {"%s entrance leads into %s", "%s的入口通往%s"}, {"Unchanged (%s)", "未變(%s)"}, {"Exits", "出口"}, @@ -1808,6 +1809,9 @@ {", ", "、"}, {": ", ":"}, // not used any more +{"Everything useful step by step", "所有有用內容,逐步列出"}, +{"Each step can be done with what you had after the previous steps (any order within a step).", "每一步都能用前面步驟取得的道具完成(同一步內順序不拘)。"}, +{"(This seed has no step list.)", "(此種子沒有步驟清單。)"}, {"On: it comes to where your thumb lands, anywhere on the lower left. Off: it stays where it is (move it in Edit touch layout).", "開:拇指按在左下方任何位置,它都會移到那裡。關:維持在原位(可在「編輯觸控配置」中移動)。"}, {"Edit touch layout", "編輯觸控配置"}, {"Move the on-screen buttons, change each one's size or hide it, over the game. Available while playing.", "在遊戲畫面上移動螢幕按鈕,調整各按鈕的大小或將其隱藏。遊玩時可用。"}, diff --git a/runtime/ui/spoiler_view.mm b/runtime/ui/spoiler_view.mm index 6b20a8383..0e8428641 100644 --- a/runtime/ui/spoiler_view.mm +++ b/runtime/ui/spoiler_view.mm @@ -1,5 +1,5 @@ // In-game spoiler page (Randomizer tab -> a seed's "Spoiler" button): shows rando//spoiler_view.txt, written by -// tools/rando/spoiler_view.py (the route, everything useful by step, items by area, dungeon entrances and rooms, +// tools/rando/spoiler_view.py (the route, the spheres, items by area, dungeon entrances and rooms, // entrances, hints). // Markup: '# ' section, '## ' sub-heading ("12. Mabe Village": a numbered route stop), '### ' folded group inside a // sub-heading, '- ' bullet, two-space continuation, plain text otherwise. A line may end in TAB TAB : diff --git a/tools/menu_strings.py b/tools/menu_strings.py index 36e80835e..e4c574566 100644 --- a/tools/menu_strings.py +++ b/tools/menu_strings.py @@ -341,7 +341,7 @@ def comp(s, src, d=0): # matches them, so they're texts of their own PATTERNS = ['leaving %s', 'outside %s', 'Outside %s', 'Room %s', 'Warp hole: %s', 'Level %s', '%s #%s', 'Bush %s', 'Dig %s', 'Pot %s', 'pot %s', 'pot %s in room %s', '%s: pot %s', '%s: pot %s in room %s', - 'rupee %s', 'Apple tree (%s), %s of 3', 'Trendy prize %s', 'Trendy figure %s', 'fairy %s', 'Step %s', + 'rupee %s', 'Apple tree (%s), %s of 3', 'Trendy prize %s', 'Trendy figure %s', 'fairy %s', 'Step %s', 'Sphere %s', 'Seed %s'] # the separators L_line joins parts with: a language may have its own ("、" for ", ", " : " in French) SEPARATORS = [', ', ': '] diff --git a/tools/rando/spoiler_view.py b/tools/rando/spoiler_view.py index 8befb0a02..952de73fb 100644 --- a/tools/rando/spoiler_view.py +++ b/tools/rando/spoiler_view.py @@ -5,7 +5,7 @@ spoiler_view.py [...] Sections: seed and settings, the Route (only what's needed to win, in an order that can be followed: route.json from -tools/rando/route.py), everything useful by playthrough step, every item by area (the tracker's check names and the +tools/rando/route.py), the playthrough spheres (useful items only), every item by area (the tracker's check names and the game's place names, areas in map order, small items folded away), dungeon entrances, shuffled dungeon rooms, shuffled entrances, hints (Hints on). Seeds made before spheres.json existed are regenerated into build/ (same seed = same placements) to compute the step list. Presentation only: nothing here changes a seed. @@ -293,11 +293,11 @@ def section_route(sd, seed_dir, out): def section_steps(sd, sph, out): out.append('') - out.append('# Everything useful step by step') + out.append('# Spheres') if not sph: - out.append('(This seed has no step list.)') + out.append('(This seed has no sphere list.)') return - out.append('Each step can be done with what you had after the previous steps (any order within a step).') + out.append('Each sphere can be done with what you had after the previous spheres (any order within a sphere).') out.append('Only items that open things up are listed; rupees, traps and similar are left out.') n = 0 for s in sph: @@ -305,7 +305,7 @@ def section_steps(sd, sph, out): if not keep: continue n += 1 - out.append(f'## Step {n}') + out.append(f'## Sphere {n}') by_area = {} for l, i in keep: by_area.setdefault(sd.area(l), []).append((l, i)) From aed97edda3716b48336f3b9591af58977c9b1be5 Mon Sep 17 00:00:00 2001 From: Peiikai <339721950+peiikai@users.noreply.github.com> Date: Thu, 12 Nov 2026 19:16:34 -0600 Subject: [PATCH 3/8] Spoiler page: two columns like the other tabs, Route as a stepper The in-game spoiler page now uses the option rows the Randomizer, Warp and Save Editor tabs use: the log's sections on the left (with counts), search and the switches under them, the chosen section's rows on the right. - Route: stops done fold into one row, the next stop to do is lit, and for the running seed a bar shows how many of the route's checks are collected. - Spheres and Items by area: headers that open and close, like the Warp tab's areas; "Small items" folds inside each area. - Collected checks are greyed; Hide checked leaves them out. - A dungeon's own name is left off its keys under its heading. - B / Left steps back (right pane, left column, the seed sheet) without closing the menu. - New text in all 11 menu languages. Co-Authored-By: Claude Opus 5.5 --- runtime/ui/lang/de.inc | 12 +- runtime/ui/lang/es.inc | 12 +- runtime/ui/lang/fr.inc | 12 +- runtime/ui/lang/it.inc | 12 +- runtime/ui/lang/ja.inc | 12 +- runtime/ui/lang/ko.inc | 12 +- runtime/ui/lang/nl.inc | 12 +- runtime/ui/lang/pt-BR.inc | 12 +- runtime/ui/lang/ru.inc | 12 +- runtime/ui/lang/zh-Hans.inc | 12 +- runtime/ui/lang/zh-Hant.inc | 12 +- runtime/ui/rando_tab.mm | 6 +- runtime/ui/spoiler_view.mm | 425 ++++++++++++++++++++++++------------ 13 files changed, 378 insertions(+), 185 deletions(-) diff --git a/runtime/ui/lang/de.inc b/runtime/ui/lang/de.inc index 67e92a967..360b99e90 100644 --- a/runtime/ui/lang/de.inc +++ b/runtime/ui/lang/de.inc @@ -1081,13 +1081,15 @@ {"Boots", "Stiefel"}, {"Bracelet", "Armband"}, // runtime/ui/spoiler_view.mm -{"< Back", "< Zurück"}, -{"Spoiler log - %s", "Spoiler-Log - %s"}, +{"%d of %d collected", "%d von %d eingesammelt"}, +{"Stops done", "Erledigte Stationen"}, {"This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older version don't have one.", "Für diesen Seed gibt es kein Spoiler-Log. Seeds, die mit ausgeschaltetem Spoiler-Log oder von einer älteren Version erstellt wurden, haben keins."}, {"This shows where every item is, plus a step-by-step route to beat the seed.", "Hier steht, wo jedes Item liegt, dazu ein Weg Schritt für Schritt, um den Seed zu schaffen."}, {"Reveal spoilers", "Spoiler zeigen"}, +{"Back", "Zurück"}, +{"Seed settings", "Seed-Einstellungen"}, +{"Search", "Suchen"}, {"Search items and places", "Items und Orte suchen"}, -{"Search the spoiler log", "Spoiler-Log durchsuchen"}, {"Useful items only", "Nur nützliche Items"}, {"Hide checked", "Erledigte ausblenden"}, // runtime/ui/tracker_overlay.mm @@ -1177,7 +1179,6 @@ {"%d places", "%d Orte"}, {"Load a save to warp.", "Lade einen Spielstand, um zu teleportieren."}, {"Places", "Orte"}, -{"Search", "Suchen"}, {"Search places...", "Orte suchen ..."}, {"Link is here", "Link ist hier"}, // warp_data.h @@ -1809,6 +1810,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"< Back", "< Zurück"}, +{"Spoiler log - %s", "Spoiler-Log - %s"}, +{"Search the spoiler log", "Spoiler-Log durchsuchen"}, {"Everything useful step by step", "Alles Nützliche, Schritt für Schritt"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Jeder Schritt ist mit dem machbar, was du nach den vorigen Schritten hattest (innerhalb eines Schritts in beliebiger Reihenfolge)."}, {"(This seed has no step list.)", "(Dieser Seed hat keine Schrittliste.)"}, diff --git a/runtime/ui/lang/es.inc b/runtime/ui/lang/es.inc index c01d54118..f5cf07b62 100644 --- a/runtime/ui/lang/es.inc +++ b/runtime/ui/lang/es.inc @@ -1081,13 +1081,15 @@ {"Boots", "Botas"}, {"Bracelet", "Brazalete"}, // runtime/ui/spoiler_view.mm -{"< Back", "< Volver"}, -{"Spoiler log - %s", "Registro de spoilers - %s"}, +{"%d of %d collected", "%d de %d recogidos"}, +{"Stops done", "Paradas hechas"}, {"This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older version don't have one.", "Esta semilla no tiene registro de spoilers. Las semillas creadas con el registro desactivado o con una versión anterior no lo tienen."}, {"This shows where every item is, plus a step-by-step route to beat the seed.", "Aquí se ve dónde está cada objeto, además de una ruta paso a paso para completar la semilla."}, {"Reveal spoilers", "Mostrar spoilers"}, +{"Back", "Volver"}, +{"Seed settings", "Ajustes de la semilla"}, +{"Search", "Buscar"}, {"Search items and places", "Buscar objetos y lugares"}, -{"Search the spoiler log", "Buscar en el registro de spoilers"}, {"Useful items only", "Solo objetos útiles"}, {"Hide checked", "Ocultar revisadas"}, // runtime/ui/tracker_overlay.mm @@ -1177,7 +1179,6 @@ {"%d places", "%d lugares"}, {"Load a save to warp.", "Carga una partida para teletransportarte."}, {"Places", "Lugares"}, -{"Search", "Buscar"}, {"Search places...", "Buscar lugares..."}, {"Link is here", "Link está aquí"}, // warp_data.h @@ -1809,6 +1810,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"< Back", "< Volver"}, +{"Spoiler log - %s", "Registro de spoilers - %s"}, +{"Search the spoiler log", "Buscar en el registro de spoilers"}, {"Everything useful step by step", "Todo lo útil, paso a paso"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Cada paso se puede hacer con lo que tenías tras los pasos anteriores (en cualquier orden dentro de un paso)."}, {"(This seed has no step list.)", "(Esta semilla no tiene lista de pasos.)"}, diff --git a/runtime/ui/lang/fr.inc b/runtime/ui/lang/fr.inc index 9f5728c76..9db6f5899 100644 --- a/runtime/ui/lang/fr.inc +++ b/runtime/ui/lang/fr.inc @@ -1081,13 +1081,15 @@ {"Boots", "Bottes"}, {"Bracelet", "Bracelet"}, // runtime/ui/spoiler_view.mm -{"< Back", "< Retour"}, -{"Spoiler log - %s", "Spoiler log - %s"}, +{"%d of %d collected", "%d sur %d récupérés"}, +{"Stops done", "Étapes faites"}, {"This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older version don't have one.", "Cette seed n'a pas de spoiler log à afficher. Les seeds créées avec le spoiler log désactivé ou par une ancienne version n'en ont pas."}, {"This shows where every item is, plus a step-by-step route to beat the seed.", "Ceci montre où se trouve chaque objet, avec un parcours étape par étape pour finir la seed."}, {"Reveal spoilers", "Afficher les spoilers"}, +{"Back", "Retour"}, +{"Seed settings", "Réglages de la seed"}, +{"Search", "Chercher"}, {"Search items and places", "Chercher objets et lieux"}, -{"Search the spoiler log", "Chercher dans le spoiler log"}, {"Useful items only", "Objets utiles seulement"}, {"Hide checked", "Masquer les faits"}, // runtime/ui/tracker_overlay.mm @@ -1177,7 +1179,6 @@ {"%d places", "%d lieux"}, {"Load a save to warp.", "Charge une sauvegarde pour te téléporter."}, {"Places", "Lieux"}, -{"Search", "Chercher"}, {"Search places...", "Chercher un lieu..."}, {"Link is here", "Link est ici"}, // warp_data.h @@ -1809,6 +1810,9 @@ {", ", ", "}, {": ", " : "}, // not used any more +{"< Back", "< Retour"}, +{"Spoiler log - %s", "Spoiler log - %s"}, +{"Search the spoiler log", "Chercher dans le spoiler log"}, {"Everything useful step by step", "Tout ce qui est utile, étape par étape"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Chaque étape peut se faire avec ce que tu avais après les étapes précédentes (dans n'importe quel ordre au sein d'une étape)."}, {"(This seed has no step list.)", "(Cette seed n'a pas de liste d'étapes.)"}, diff --git a/runtime/ui/lang/it.inc b/runtime/ui/lang/it.inc index e40e6ba2b..07b98bf2d 100644 --- a/runtime/ui/lang/it.inc +++ b/runtime/ui/lang/it.inc @@ -1081,13 +1081,15 @@ {"Boots", "Calzari"}, {"Bracelet", "Bracciale"}, // runtime/ui/spoiler_view.mm -{"< Back", "< Indietro"}, -{"Spoiler log - %s", "Registro spoiler - %s"}, +{"%d of %d collected", "%d su %d raccolti"}, +{"Stops done", "Tappe fatte"}, {"This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older version don't have one.", "Questo seed non ha un registro spoiler da mostrare. I seed creati con Registro spoiler disattivato o con una versione precedente non ce l'hanno."}, {"This shows where every item is, plus a step-by-step route to beat the seed.", "Qui vedi dove si trova ogni oggetto, più un percorso passo per passo per completare il seed."}, {"Reveal spoilers", "Mostra spoiler"}, +{"Back", "Indietro"}, +{"Seed settings", "Impostazioni del seed"}, +{"Search", "Cerca"}, {"Search items and places", "Cerca oggetti e luoghi"}, -{"Search the spoiler log", "Cerca nel registro spoiler"}, {"Useful items only", "Solo oggetti utili"}, {"Hide checked", "Nascondi fatti"}, // runtime/ui/tracker_overlay.mm @@ -1177,7 +1179,6 @@ {"%d places", "%d luoghi"}, {"Load a save to warp.", "Carica un salvataggio per teletrasportarti."}, {"Places", "Luoghi"}, -{"Search", "Cerca"}, {"Search places...", "Cerca luoghi..."}, {"Link is here", "Link è qui"}, // warp_data.h @@ -1809,6 +1810,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"< Back", "< Indietro"}, +{"Spoiler log - %s", "Registro spoiler - %s"}, +{"Search the spoiler log", "Cerca nel registro spoiler"}, {"Everything useful step by step", "Tutto ciò che è utile, passo per passo"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Ogni fase si può completare con quello che avevi dopo le fasi precedenti (in qualsiasi ordine all'interno di una fase)."}, {"(This seed has no step list.)", "(Questo seed non ha un elenco di passi.)"}, diff --git a/runtime/ui/lang/ja.inc b/runtime/ui/lang/ja.inc index 5341f8919..e32754af4 100644 --- a/runtime/ui/lang/ja.inc +++ b/runtime/ui/lang/ja.inc @@ -1081,13 +1081,15 @@ {"Boots", "くつ"}, {"Bracelet", "ブレスレット"}, // runtime/ui/spoiler_view.mm -{"< Back", "< 戻る"}, -{"Spoiler log - %s", "スポイラーログ - %s"}, +{"%d of %d collected", "%d / %d 回収済み"}, +{"Stops done", "済んだ地点"}, {"This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older version don't have one.", "このシードには表示できるスポイラーログがありません。スポイラーログをオフにして作ったシードや、古いバージョンで作ったシードにはありません。"}, {"This shows where every item is, plus a step-by-step route to beat the seed.", "すべてのアイテムの場所と、シードをクリアするための手順を表示します。"}, {"Reveal spoilers", "ネタバレを表示"}, +{"Back", "戻る"}, +{"Seed settings", "シードの設定"}, +{"Search", "検索"}, {"Search items and places", "アイテムと場所を検索"}, -{"Search the spoiler log", "スポイラーログを検索"}, {"Useful items only", "役立つアイテムのみ"}, {"Hide checked", "済みを隠す"}, // runtime/ui/tracker_overlay.mm @@ -1177,7 +1179,6 @@ {"%d places", "%dか所"}, {"Load a save to warp.", "ワープするにはセーブデータをロードしてください。"}, {"Places", "場所"}, -{"Search", "検索"}, {"Search places...", "場所を検索..."}, {"Link is here", "リンクはここ"}, // warp_data.h @@ -1809,6 +1810,9 @@ {", ", "、"}, {": ", ":"}, // not used any more +{"< Back", "< 戻る"}, +{"Spoiler log - %s", "スポイラーログ - %s"}, +{"Search the spoiler log", "スポイラーログを検索"}, {"Everything useful step by step", "役立つものを順番にすべて"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "各ステップは、それまでのステップで手に入れたもので進められます(ステップ内の順番は自由)。"}, {"(This seed has no step list.)", "(このシードにはステップ一覧がありません。)"}, diff --git a/runtime/ui/lang/ko.inc b/runtime/ui/lang/ko.inc index 992347fe9..3a97999ce 100644 --- a/runtime/ui/lang/ko.inc +++ b/runtime/ui/lang/ko.inc @@ -1081,13 +1081,15 @@ {"Boots", "신발"}, {"Bracelet", "팔찌"}, // runtime/ui/spoiler_view.mm -{"< Back", "< 뒤로"}, -{"Spoiler log - %s", "스포일러 로그 - %s"}, +{"%d of %d collected", "%d / %d 획득"}, +{"Stops done", "완료한 지점"}, {"This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older version don't have one.", "이 시드에는 보여 줄 스포일러 로그가 없습니다. 스포일러 로그를 끄고 만든 시드나 이전 버전에서 만든 시드에는 없습니다."}, {"This shows where every item is, plus a step-by-step route to beat the seed.", "모든 아이템의 위치와 시드를 클리어하는 단계별 루트를 보여 줍니다."}, {"Reveal spoilers", "스포일러 보기"}, +{"Back", "뒤로"}, +{"Seed settings", "시드 설정"}, +{"Search", "검색"}, {"Search items and places", "아이템과 장소 검색"}, -{"Search the spoiler log", "스포일러 로그 검색"}, {"Useful items only", "유용한 아이템만"}, {"Hide checked", "체크 끝난 곳 숨기기"}, // runtime/ui/tracker_overlay.mm @@ -1177,7 +1179,6 @@ {"%d places", "%d곳"}, {"Load a save to warp.", "워프하려면 세이브 데이터를 불러오세요."}, {"Places", "장소"}, -{"Search", "검색"}, {"Search places...", "장소 검색..."}, {"Link is here", "링크가 있는 곳"}, // warp_data.h @@ -1809,6 +1810,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"< Back", "< 뒤로"}, +{"Spoiler log - %s", "스포일러 로그 - %s"}, +{"Search the spoiler log", "스포일러 로그 검색"}, {"Everything useful step by step", "유용한 것 전부, 단계별로"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "각 단계는 이전 단계까지 얻은 것으로 진행할 수 있습니다 (단계 안에서는 순서 자유)."}, {"(This seed has no step list.)", "(이 시드에는 단계 목록이 없습니다.)"}, diff --git a/runtime/ui/lang/nl.inc b/runtime/ui/lang/nl.inc index 8174679cf..0c8e14881 100644 --- a/runtime/ui/lang/nl.inc +++ b/runtime/ui/lang/nl.inc @@ -1081,13 +1081,15 @@ {"Boots", "Laarzen"}, {"Bracelet", "Armband"}, // runtime/ui/spoiler_view.mm -{"< Back", "< Terug"}, -{"Spoiler log - %s", "Spoilerlog - %s"}, +{"%d of %d collected", "%d van %d verzameld"}, +{"Stops done", "Gedane stops"}, {"This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older version don't have one.", "Deze seed heeft geen spoilerlog. Seeds die gemaakt zijn met Spoilerlog uit of met een oudere versie hebben er geen."}, {"This shows where every item is, plus a step-by-step route to beat the seed.", "Dit laat zien waar elk voorwerp ligt, plus een route stap voor stap om de seed uit te spelen."}, {"Reveal spoilers", "Spoilers tonen"}, +{"Back", "Terug"}, +{"Seed settings", "Seed-instellingen"}, +{"Search", "Zoeken"}, {"Search items and places", "Zoek voorwerpen en plaatsen"}, -{"Search the spoiler log", "Zoek in de spoilerlog"}, {"Useful items only", "Alleen nuttige voorwerpen"}, {"Hide checked", "Gedane verbergen"}, // runtime/ui/tracker_overlay.mm @@ -1177,7 +1179,6 @@ {"%d places", "%d plekken"}, {"Load a save to warp.", "Laad een opslagbestand om te teleporteren."}, {"Places", "Plaatsen"}, -{"Search", "Zoeken"}, {"Search places...", "Zoek plaatsen..."}, {"Link is here", "Link is hier"}, // warp_data.h @@ -1809,6 +1810,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"< Back", "< Terug"}, +{"Spoiler log - %s", "Spoilerlog - %s"}, +{"Search the spoiler log", "Zoek in de spoilerlog"}, {"Everything useful step by step", "Alles wat nuttig is, stap voor stap"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Elke stap kun je doen met wat je na de vorige stappen had (binnen een stap in elke volgorde)."}, {"(This seed has no step list.)", "(Deze seed heeft geen stappenlijst.)"}, diff --git a/runtime/ui/lang/pt-BR.inc b/runtime/ui/lang/pt-BR.inc index 322fb01cc..0d0785d02 100644 --- a/runtime/ui/lang/pt-BR.inc +++ b/runtime/ui/lang/pt-BR.inc @@ -1081,13 +1081,15 @@ {"Boots", "Botas"}, {"Bracelet", "Bracelete"}, // runtime/ui/spoiler_view.mm -{"< Back", "< Voltar"}, -{"Spoiler log - %s", "Registro de spoilers - %s"}, +{"%d of %d collected", "%d de %d coletados"}, +{"Stops done", "Paradas feitas"}, {"This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older version don't have one.", "Esta seed não tem registro de spoilers. Seeds criadas com o Registro de spoilers desligado ou por uma versão antiga não têm um."}, {"This shows where every item is, plus a step-by-step route to beat the seed.", "Isto mostra onde está cada item, mais uma rota passo a passo para zerar a seed."}, {"Reveal spoilers", "Mostrar spoilers"}, +{"Back", "Voltar"}, +{"Seed settings", "Configurações da seed"}, +{"Search", "Buscar"}, {"Search items and places", "Buscar itens e lugares"}, -{"Search the spoiler log", "Buscar no registro de spoilers"}, {"Useful items only", "Só itens úteis"}, {"Hide checked", "Ocultar verificados"}, // runtime/ui/tracker_overlay.mm @@ -1177,7 +1179,6 @@ {"%d places", "%d lugares"}, {"Load a save to warp.", "Carregue um arquivo salvo para se teleportar."}, {"Places", "Lugares"}, -{"Search", "Buscar"}, {"Search places...", "Buscar lugares..."}, {"Link is here", "Link está aqui"}, // warp_data.h @@ -1809,6 +1810,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"< Back", "< Voltar"}, +{"Spoiler log - %s", "Registro de spoilers - %s"}, +{"Search the spoiler log", "Buscar no registro de spoilers"}, {"Everything useful step by step", "Tudo o que é útil, passo a passo"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Cada etapa pode ser feita com o que você tinha após as etapas anteriores (em qualquer ordem dentro de uma etapa)."}, {"(This seed has no step list.)", "(Esta seed não tem lista de passos.)"}, diff --git a/runtime/ui/lang/ru.inc b/runtime/ui/lang/ru.inc index ff0d8f627..541219b37 100644 --- a/runtime/ui/lang/ru.inc +++ b/runtime/ui/lang/ru.inc @@ -1081,13 +1081,15 @@ {"Boots", "Сапоги"}, {"Bracelet", "Браслет"}, // runtime/ui/spoiler_view.mm -{"< Back", "< Назад"}, -{"Spoiler log - %s", "Журнал спойлеров — %s"}, +{"%d of %d collected", "Собрано %d из %d"}, +{"Stops done", "Пройденные точки"}, {"This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older version don't have one.", "У этого сида нет журнала спойлеров. Его нет у сидов, созданных с отключенным журналом или в старой версии."}, {"This shows where every item is, plus a step-by-step route to beat the seed.", "Здесь видно, где лежит каждый предмет, и есть пошаговый маршрут прохождения сида."}, {"Reveal spoilers", "Показать спойлеры"}, +{"Back", "Назад"}, +{"Seed settings", "Настройки сида"}, +{"Search", "Поиск"}, {"Search items and places", "Поиск предметов и мест"}, -{"Search the spoiler log", "Поиск по журналу спойлеров"}, {"Useful items only", "Только полезные предметы"}, {"Hide checked", "Скрыть пройденные"}, // runtime/ui/tracker_overlay.mm @@ -1177,7 +1179,6 @@ {"%d places", "мест: %d"}, {"Load a save to warp.", "Загрузите сохранение, чтобы перемещаться."}, {"Places", "Места"}, -{"Search", "Поиск"}, {"Search places...", "Поиск мест..."}, {"Link is here", "Линк здесь"}, // warp_data.h @@ -1809,6 +1810,9 @@ {", ", ", "}, {": ", ": "}, // not used any more +{"< Back", "< Назад"}, +{"Spoiler log - %s", "Журнал спойлеров — %s"}, +{"Search the spoiler log", "Поиск по журналу спойлеров"}, {"Everything useful step by step", "Всё полезное по шагам"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "Каждый шаг можно выполнить с тем, что у вас было после предыдущих шагов (внутри шага — в любом порядке)."}, {"(This seed has no step list.)", "(У этого сида нет списка шагов.)"}, diff --git a/runtime/ui/lang/zh-Hans.inc b/runtime/ui/lang/zh-Hans.inc index 4d127c03a..d1dc21119 100644 --- a/runtime/ui/lang/zh-Hans.inc +++ b/runtime/ui/lang/zh-Hans.inc @@ -1081,13 +1081,15 @@ {"Boots", "鞋子"}, {"Bracelet", "手镯"}, // runtime/ui/spoiler_view.mm -{"< Back", "< 返回"}, -{"Spoiler log - %s", "剧透日志 - %s"}, +{"%d of %d collected", "已获得 %d / %d"}, +{"Stops done", "已完成的站点"}, {"This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older version don't have one.", "这个种子没有可显示的剧透日志。关闭“剧透日志”或用旧版本生成的种子没有日志。"}, {"This shows where every item is, plus a step-by-step route to beat the seed.", "这里会显示所有道具的位置,以及通关这个种子的逐步路线。"}, {"Reveal spoilers", "显示剧透"}, +{"Back", "返回"}, +{"Seed settings", "种子设置"}, +{"Search", "搜索"}, {"Search items and places", "搜索道具和地点"}, -{"Search the spoiler log", "搜索剧透日志"}, {"Useful items only", "仅显示有用道具"}, {"Hide checked", "隐藏已检查"}, // runtime/ui/tracker_overlay.mm @@ -1177,7 +1179,6 @@ {"%d places", "%d个地点"}, {"Load a save to warp.", "读取存档后才能传送。"}, {"Places", "地点"}, -{"Search", "搜索"}, {"Search places...", "搜索地点..."}, {"Link is here", "林克在这里"}, // warp_data.h @@ -1809,6 +1810,9 @@ {", ", "、"}, {": ", ":"}, // not used any more +{"< Back", "< 返回"}, +{"Spoiler log - %s", "剧透日志 - %s"}, +{"Search the spoiler log", "搜索剧透日志"}, {"Everything useful step by step", "所有有用内容,逐步列出"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "每一步都能用之前步骤得到的东西完成(同一步内顺序随意)。"}, {"(This seed has no step list.)", "(此种子没有步骤列表。)"}, diff --git a/runtime/ui/lang/zh-Hant.inc b/runtime/ui/lang/zh-Hant.inc index 0cc6f6218..fe869a620 100644 --- a/runtime/ui/lang/zh-Hant.inc +++ b/runtime/ui/lang/zh-Hant.inc @@ -1081,13 +1081,15 @@ {"Boots", "鞋子"}, {"Bracelet", "手鐲"}, // runtime/ui/spoiler_view.mm -{"< Back", "< 返回"}, -{"Spoiler log - %s", "劇透紀錄 - %s"}, +{"%d of %d collected", "已取得 %d / %d"}, +{"Stops done", "已完成的站點"}, {"This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older version don't have one.", "這個種子沒有可顯示的劇透紀錄。關閉劇透紀錄或用舊版產生的種子沒有紀錄。"}, {"This shows where every item is, plus a step-by-step route to beat the seed.", "這裡會顯示每個道具的位置,以及破關種子的逐步路線。"}, {"Reveal spoilers", "顯示劇透"}, +{"Back", "返回"}, +{"Seed settings", "種子設定"}, +{"Search", "搜尋"}, {"Search items and places", "搜尋道具和地點"}, -{"Search the spoiler log", "搜尋劇透紀錄"}, {"Useful items only", "僅顯示有用道具"}, {"Hide checked", "隱藏已檢查"}, // runtime/ui/tracker_overlay.mm @@ -1177,7 +1179,6 @@ {"%d places", "%d個地點"}, {"Load a save to warp.", "載入存檔後才能傳送。"}, {"Places", "地點"}, -{"Search", "搜尋"}, {"Search places...", "搜尋地點..."}, {"Link is here", "林克在這裡"}, // warp_data.h @@ -1809,6 +1810,9 @@ {", ", "、"}, {": ", ":"}, // not used any more +{"< Back", "< 返回"}, +{"Spoiler log - %s", "劇透紀錄 - %s"}, +{"Search the spoiler log", "搜尋劇透紀錄"}, {"Everything useful step by step", "所有有用內容,逐步列出"}, {"Each step can be done with what you had after the previous steps (any order within a step).", "每一步都能用前面步驟取得的道具完成(同一步內順序不拘)。"}, {"(This seed has no step list.)", "(此種子沒有步驟清單。)"}, diff --git a/runtime/ui/rando_tab.mm b/runtime/ui/rando_tab.mm index 4a7dc43be..5bdba4c61 100644 --- a/runtime/ui/rando_tab.mm +++ b/runtime/ui/rando_tab.mm @@ -654,7 +654,7 @@ static void gen_overlay(float scale) { ImGui::EndPopup(); } -bool spoiler_view_draw(const std::string &seed, float scale); // spoiler_view.mm +int spoiler_view_draw(const std::string &seed, float scale); // spoiler_view.mm: 0 closed, 2 took B static std::string g_spoiler_seed; // seed whose spoiler page is open // ---- the tab, in two columns (as the Controls tab's Configure inputs): Seeds and the seed option categories on the @@ -1471,7 +1471,9 @@ static void seed_sheet(float scale, const char *active) { static bool spoiler_test; // LARECOMP_SPOILER_TEST=: open that seed's spoiler page (test hook) if (!spoiler_test && getenv("LARECOMP_SPOILER_TEST")) { spoiler_test = true; g_spoiler_seed = getenv("LARECOMP_SPOILER_TEST"); } if (!g_spoiler_seed.empty()) { // the spoiler page replaces the tab until Back - if (!spoiler_view_draw(g_spoiler_seed, scale)) g_spoiler_seed.clear(); + int r = spoiler_view_draw(g_spoiler_seed, scale); + if (r != 1) g_back_frame = ImGui::GetFrameCount(); // (B was the page's: not the menu's as well) + if (r == 0) g_spoiler_seed.clear(); return; } static bool opts_once; // the options the player last set (larecomp.ini) diff --git a/runtime/ui/spoiler_view.mm b/runtime/ui/spoiler_view.mm index 0e8428641..60e518804 100644 --- a/runtime/ui/spoiler_view.mm +++ b/runtime/ui/spoiler_view.mm @@ -1,22 +1,31 @@ -// In-game spoiler page (Randomizer tab -> a seed's "Spoiler" button): shows rando//spoiler_view.txt, written by -// tools/rando/spoiler_view.py (the route, the spheres, items by area, dungeon entrances and rooms, -// entrances, hints). +// In-game spoiler page (Randomizer tab -> a seed's "Spoiler log"): rando//spoiler_view.txt, written by +// tools/rando/spoiler_view.py, in two panes like the other two-column tabs (option_rows.h): the log's sections on the +// left (Route, Spheres, Items by area, entrances, rooms, hints, the seed's settings) with the search and the switches +// under them, the chosen section's rows on the right. +// Route a stepper: the stops done fold into one row, the next stop to do is lit (title colour); with the running +// seed, how many of the route's checks are collected +// others headers that open and close (Spheres, areas, "Small items"), rows "check -> item" +// For the running seed a check the tracker has collected is greyed ("Hide checked" leaves it out). The cursor follows +// the left column: the section it's on shows; A / Right goes into its rows, B / Left back; B on the left: back to the +// Randomizer tab. // Markup: '# ' section, '## ' sub-heading ("12. Mabe Village": a numbered route stop), '### ' folded group inside a -// sub-heading, '- ' bullet, two-space continuation, plain text otherwise. A line may end in TAB TAB : -// for the seed that's running, a check the tracker has collected is greyed and struck out ("Hide checked" leaves it -// out); flag 'u' = an item that opens things up ("Useful items only"). -// The file is English (the same for every player of a seed); its lines show in the menus' language, put together from -// their parts (i18n.h L_line). +// sub-heading, '- ' bullet, two-space continuation, plain text otherwise. A line may end in TAB TAB +// (flag 'u': an item that opens things up). The file is English (the same for every player of a seed); its lines show +// in the menus' language, put together from their parts (i18n.h L_line). #include #include #include #include +#include #include #include +#include "../platform.h" // (PLAT_TOUCH) #include "i18n.h" #include "imgui.h" +#include "option_rows.h" #include "osk.h" +#include "plastic.h" extern "C" { #include "../rando.h" @@ -41,12 +50,18 @@ std::vector lines; // text directly under the heading std::vector subs; // "## " blocks }; - +struct Filter { + std::string q; // (lower case) + bool hide_done, useful_only, linked; +}; } // namespace static std::string g_loaded; // seed whose file is loaded static std::vector g_doc; static bool g_missing; +static int g_sec = 1; // the section shown on the right (g_doc index) +static std::set g_open; // open headers (section index + title) +static int g_enter_right, g_back_left = -1; // (cursor moves: into the right pane / back to section row n) static Line parse_line(const std::string &l) { Line ln; @@ -63,7 +78,9 @@ static Line parse_line(const std::string &l) { static void load(const std::string &seed) { g_loaded = seed; g_doc.clear(); + g_open.clear(); g_missing = false; + g_sec = 1; std::string p = "rando/" + seed + "/spoiler_view.txt"; FILE *f = fopen(p.c_str(), "r"); if (!f) { g_missing = true; return; } @@ -75,11 +92,12 @@ static void load(const std::string &seed) { if (g_doc.empty()) g_doc.push_back({"", {}, {}}); Node &n = g_doc.back(); if (l.rfind("## ", 0) == 0) { n.subs.push_back({l.substr(3), {{"", {}}}}); continue; } - if (n.subs.empty()) { n.lines.push_back(parse_line(l)); continue; } + if (n.subs.empty()) { if (!l.empty()) n.lines.push_back(parse_line(l)); continue; } if (l.rfind("### ", 0) == 0) { n.subs.back().groups.push_back({l.substr(4), {}}); continue; } - n.subs.back().groups.back().lines.push_back(parse_line(l)); + if (!l.empty()) n.subs.back().groups.back().lines.push_back(parse_line(l)); } fclose(f); + if (g_doc.size() < 2) g_sec = 0; } // "12. Mabe Village": the number stays, the rest in the menus' language @@ -89,161 +107,290 @@ static void load(const std::string &seed) { if (i > 0 && en.compare(i, 2, ". ") == 0) return en.substr(0, i + 2) + L_line(en.substr(i + 2)); return L_line(en); } - -static bool matches(const std::string &en, const char *q) { - if (!q[0]) return true; - std::string a = shown(en), b = q; // (as shown: the search is in the menus' language) - for (auto &c : a) c = (char)tolower(c); - for (auto &c : b) c = (char)tolower(c); - return a.find(b) != std::string::npos; +static std::string lower(std::string s) { + for (auto &c : s) c = (char)tolower((unsigned char)c); + return s; } - -struct Filter { - const char *q; - bool hide_done, useful_only, linked; // linked: the spoiler's seed is the one running (the tracker knows it) -}; - +static bool hit(const std::string &en, const Filter &f) { + return f.q.empty() || lower(shown(en)).find(f.q) != std::string::npos; +} +static std::string body(const Line &l) { // (the line without its markup) + const std::string &t = l.text; + return t.rfind("- ", 0) == 0 || t.rfind(" ", 0) == 0 ? t.substr(2) : t; +} +static bool is_label(const Line &l) { // "- Mabe Village:" over the Spheres' rows + return l.loc.empty() && l.text.rfind("- ", 0) == 0 && !l.text.empty() && l.text.back() == ':'; +} +static bool is_text(const Line &l) { return l.text.rfind("- ", 0) != 0 && l.text.rfind(" ", 0) != 0; } static int done_of(const Line &l, const Filter &f) { return f.linked && !l.loc.empty() ? tracker_check_collected(l.loc.c_str()) : -1; } - -// a check line passes the switches (lines without a location - text, area labels - always do) -static bool passes(const Line &l, const Filter &f) { - if (l.loc.empty()) return true; - if (f.useful_only && !l.useful) return false; +// a row shows (switches and search; title_hit: its header matched the search) +static bool shows(const Line &l, const Filter &f, bool title_hit) { + if (is_label(l) || is_text(l)) return false; + if (!l.loc.empty() && f.useful_only && !l.useful) return false; if (f.hide_done && done_of(l, f) == 1) return false; - return true; + return title_hit || hit(body(l), f); +} +static int count_rows(const std::vector &ls, const Filter &f, bool title_hit) { + int n = 0; + for (auto &l : ls) n += shows(l, f, title_hit); + return n; +} +static int count_sub(const Sub &s, const Filter &f) { + bool th = !f.q.empty() && hit(s.title, f); + int n = 0; + for (auto &g : s.groups) n += count_rows(g.lines, f, th || (!g.title.empty() && !f.q.empty() && hit(g.title, f))); + return n; +} +static int count_node(const Node &n, const Filter &f) { + int c = count_rows(n.lines, f, false); + for (auto &s : n.subs) c += count_sub(s, f); + return c; } -// lines shown under a heading whose own title matched (all) or not (only the matching ones); an area label -// ("- Mabe Village:") shows only with something shown under it -static void visible(const std::vector &ls, const Filter &f, bool title_hit, std::vector &out) { - out.assign(ls.size(), 0); - for (size_t i = 0; i < ls.size(); i++) out[i] = passes(ls[i], f) && (title_hit || matches(ls[i].text, f.q)); +// ---- right pane rows +static void heading(const std::string &t, bool lit) { // (a section's own line: already in the menus' language) + if (ImGui::GetCursorPosY() > ImGui::GetStyle().WindowPadding.y + 1) ImGui::Dummy(ImVec2(0, 6 * ImGui::GetFontSize() / 16)); + const PlasticTheme &th = plastic_theme(); + ImGui::PushTextWrapPos(0); // ("2. Tail Cave (D1) - enter through Bottle Grotto's entrance": long in some languages) + ImGui::TextColored(plastic_col(lit ? th.title : th.section), "%s", i18n_upper(t.c_str()).c_str()); + ImGui::PopTextWrapPos(); +} +static void row(const Line &l, const Filter &f, const std::string &where) { + std::string b = body(l), label, value, desc = where; + size_t a = b.find(" -> "); + if (a != std::string::npos) label = shown(b.substr(0, a)), value = shown(b.substr(a + 6)); + else if (l.loc.empty() && (a = b.find(": ")) != std::string::npos && b.find(": ", a + 2) == std::string::npos) + label = shown(b.substr(0, a)), desc = shown(b.substr(a + 2)); // ("Owl statue, Tal Tal Heights: ": below) + else label = shown(b); + // "Small Key (Tail Cave)" under Tail Cave: the heading already says whose (a key for another dungeon keeps it) + size_t o = value.rfind(" ("); + if (o != std::string::npos && value.back() == ')' && where.find(value.substr(o + 2, value.size() - o - 3)) != std::string::npos) + value.erase(o); + ImGui::PushID(&l); + if (done_of(l, f) == 1) opt_disable_next(); + opt_shown_next(); + opt_action(label.c_str(), value.c_str(), desc.empty() ? NULL : desc.c_str(), false, l.useful); + ImGui::PopID(); +} +static void rows(const std::vector &ls, const Filter &f, bool title_hit, const std::string &where) { + std::string area = where; for (size_t i = 0; i < ls.size(); i++) { - const std::string &t = ls[i].text; - if (!ls[i].loc.empty() || t.rfind("- ", 0) != 0 || t.empty() || t.back() != ':') continue; - bool any = false; - for (size_t k = i + 1; k < ls.size() && ls[k].text.rfind(" ", 0) == 0; k++) any |= out[k] != 0; - bool filtering = f.q[0] || f.hide_done || f.useful_only; - out[i] = any || (!filtering && out[i]); + const Line &l = ls[i]; + if (is_label(l)) { // (a label shows only with a row under it) + std::string b = body(l); + area = shown(b.substr(0, b.size() - 1)); + int n = 0; + for (size_t k = i + 1; k < ls.size() && ls[k].text.rfind(" ", 0) == 0; k++) n += shows(ls[k], f, title_hit); + if (n) heading(area, false); + continue; + } + if (is_text(l)) { + if (f.q.empty() && !f.useful_only && !f.hide_done) { + ImGui::PushTextWrapPos(0); + ImGui::TextDisabled("%s", shown(l.text).c_str()); + ImGui::PopTextWrapPos(); + } + continue; + } + if (shows(l, f, title_hit)) row(l, f, area); } } - -static void line(const Line &l, const Filter &f) { - int done = done_of(l, f); - const std::string &t = l.text; - std::string s = t.rfind("- ", 0) == 0 || t.rfind(" ", 0) == 0 ? t.substr(2) : t; - if (s.empty()) return; - s = L_line(s); - bool indent = t.rfind(" ", 0) == 0; - if (indent) ImGui::Indent(); - if (t.rfind("- ", 0) == 0) ImGui::Bullet(); - if (done == 1) ImGui::PushStyleColor(ImGuiCol_Text, ImGui::GetStyleColorVec4(ImGuiCol_TextDisabled)); - if (t.rfind("- ", 0) == 0 || indent) ImGui::TextUnformatted(s.c_str()); - else ImGui::TextWrapped("%s", s.c_str()); - if (done == 1) { // (struck out, like the tracker's collected checks) - ImVec2 a = ImGui::GetItemRectMin(), z = ImGui::GetItemRectMax(); - float y = (a.y + z.y) * 0.5f; - ImGui::GetWindowDrawList()->AddLine(ImVec2(a.x, y), ImVec2(z.x, y), ImGui::GetColorU32(ImGuiCol_TextDisabled), - ImGui::GetFontSize() / 14.0f); - ImGui::PopStyleColor(); +// a header that opens and closes (its count on the right); true when open +static bool fold(const std::string &key, const std::string &title, int count, const Filter &f) { + bool open = !f.q.empty() || g_open.count(key) > 0; + char v[16]; + snprintf(v, sizeof v, "%d", count); + ImGui::PushID(key.c_str()); + if (open) opt_mark_next(); + opt_shown_next(); + bool clicked = opt_link(title.c_str(), NULL, v); + ImGui::PopID(); + if (clicked && f.q.empty()) { + if (g_open.count(key)) g_open.erase(key); + else g_open.insert(key); + open = !open; } - if (indent) ImGui::Unindent(); + return open; } -static int draw_lines(const std::vector &ls, const Filter &f, bool title_hit) { - std::vector vis; - visible(ls, f, title_hit, vis); - int n = 0; - for (size_t i = 0; i < ls.size(); i++) if (vis[i]) line(ls[i], f), n++; - return n; +// the route's checks the tracker has collected, and all of them +static void route_progress(const Node &n, const Filter &f, int *got, int *total) { + *got = *total = 0; + for (auto &s : n.subs) + for (auto &g : s.groups) + for (auto &l : g.lines) if (!l.loc.empty()) (*total)++, *got += done_of(l, f) == 1; +} + +static void draw_route(int si, const Filter &f) { + const Node &n = g_doc[si]; + // each stop: done when every check of it the tracker knows is collected (shop shelves and instruments it can't + // tell: they don't hold a stop open) + std::vector done(n.subs.size(), 0); + for (size_t k = 0; k < n.subs.size(); k++) { + int known = 0, got = 0; + for (auto &g : n.subs[k].groups) + for (auto &l : g.lines) { + int d = done_of(l, f); + known += d >= 0, got += d == 1; + } + done[k] = known > 0 && got == known; + } + int current = -1; + for (size_t k = 0; k < n.subs.size(); k++) + if (!done[k] && n.subs[k].title != "Finish") { current = (int)k; break; } + bool searching = !f.q.empty(); + if (!searching) + for (auto &l : n.lines) ImGui::TextWrapped("%s", shown(l.text).c_str()); + int got, total, ndone = 0; + route_progress(n, f, &got, &total); + if (f.linked && total) { + char b[64]; + snprintf(b, sizeof b, L("%d of %d collected"), got, total); + ImGui::Spacing(); + plastic_progress_bar((float)got / total, ImVec2(-1, 0), b, ImGui::GetFontSize() / 16); + } + for (char d : done) ndone += d; + bool show_done = false; + if (ndone && !searching && !f.hide_done) { + ImGui::Spacing(); + show_done = fold("route-done", L("Stops done"), ndone, f); + } + for (size_t k = 0; k < n.subs.size(); k++) { + const Sub &s = n.subs[k]; + bool finish = s.title == "Finish"; + if (done[k] && !searching && !show_done) continue; + if (finish && searching) continue; + bool th = searching && hit(s.title, f); + if (!finish && !count_sub(s, f)) continue; + heading(shown(s.title), (int)k == current); + if (finish) { + for (auto &g : s.groups) + for (auto &l : g.lines) ImGui::TextWrapped("%s", shown(body(l)).c_str()); + continue; + } + if ((int)k == current && g_enter_right) opt_focus_next_row(), g_enter_right = 0; + for (auto &g : s.groups) rows(g.lines, f, th, shown(s.title)); + } } -static bool any_visible(const std::vector &ls, const Filter &f, bool title_hit) { - std::vector vis; - visible(ls, f, title_hit, vis); - for (size_t i = 0; i < ls.size(); i++) - if (vis[i] && (!ls[i].loc.empty() || ls[i].text.rfind("- ", 0) == 0 || ls[i].text.rfind(" ", 0) == 0)) return true; - return false; +static void draw_section(int si, const Filter &f) { + const Node &n = g_doc[si]; + if (n.title == "Route") { draw_route(si, f); return; } + if (si == 0) { // (the seed's own lines: its ID, settings, starting items) + for (auto &l : n.lines) ImGui::TextWrapped("%s", shown(l.text).c_str()), ImGui::Spacing(); + return; + } + rows(n.lines, f, false, ""); + bool folds = n.subs.size() > 3; // (Spheres, areas: headers that open; a few blocks (entrances): open, titled) + for (size_t k = 0; k < n.subs.size(); k++) { + const Sub &s = n.subs[k]; + if (!count_sub(s, f)) continue; + bool th = !f.q.empty() && hit(s.title, f); + std::string key = std::to_string(si) + "/" + s.title; + if (folds) { + if (!fold(key, shown(s.title), count_sub(s, f), f)) continue; + opt_indent(1); + } else heading(shown(s.title), false); + for (auto &g : s.groups) { + if (g.title.empty()) { rows(g.lines, f, th, shown(s.title)); continue; } + bool gh = th || (!f.q.empty() && hit(g.title, f)); + int gc = count_rows(g.lines, f, gh); + if (!gc) continue; + if (fold(key + "/" + g.title, shown(g.title.substr(0, g.title.rfind(" ("))), gc, f)) { // ("Small items") + opt_indent(1); + rows(g.lines, f, gh, shown(s.title)); + opt_indent(-1); + } + } + if (folds) opt_indent(-1); + } } -// Returns false when the page was closed (Back). -bool spoiler_view_draw(const std::string &seed, float scale) { +// Returns 0 when the page was closed (B on its left column, Back, or the X on touch screens), 2 when B / Left stepped +// back within it (the menu mustn't take that B too), else 1. +int spoiler_view_draw(const std::string &seed, float scale) { static bool revealed; static std::string revealed_for; if (revealed_for != seed) { revealed = getenv("LARECOMP_SPOILER_TEST") != NULL; revealed_for = seed; } if (g_loaded != seed) load(seed); - if (ImGui::Button(L("< Back"))) return false; - ImGui::SameLine(); - ImGui::AlignTextToFramePadding(); - ImGui::Text(L("Spoiler log - %s"), seed.c_str()); - ImGui::Separator(); - if (g_missing) { - ImGui::TextWrapped("%s", L("This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older " - "version don't have one.")); - return true; - } - if (!revealed) { - ImGui::Spacing(); - ImGui::TextWrapped("%s", L("This shows where every item is, plus a step-by-step route to beat the seed.")); - if (ImGui::Button(L("Reveal spoilers"), ImVec2(320 * scale, 0))) revealed = true; - return true; + static bool in_right; + bool free_b = !ui_text_busy() && !ImGui::IsPopupOpen("", ImGuiPopupFlags_AnyPopupId); + int ret = 1; + if (free_b && in_right && (opt_pressed_back() || (opt_pressed_left() && !opt_focused_lr()))) g_back_left = g_sec, ret = 2; + else if (free_b && !in_right && opt_pressed_back()) return 0; + + ImGui::TextColored(plastic_col(plastic_theme().title), "%s", seed.c_str()); + ImGui::TextDisabled("%s", L("Spoiler log")); + ImGui::Spacing(); + if (g_missing || !revealed) { +#if PLAT_TOUCH + if (plastic_close_corner(44 * scale, scale)) return 0; // (one column: the screen's corner) +#endif + opt_begin("##spoiler_gate", scale); + if (g_missing) { + ImGui::TextWrapped("%s", L("This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older " + "version don't have one.")); + } else { + ImGui::TextWrapped("%s", L("This shows where every item is, plus a step-by-step route to beat the seed.")); + ImGui::Spacing(); + opt_button_next(); + if (opt_action("Reveal spoilers", "", NULL)) revealed = true; + } + opt_button_next(); + bool back = opt_action("Back", "", NULL); + opt_end(); + return back ? 0 : ret; } - // the seed that's running: lines of checks already collected are greyed (the tracker's own data) + // the seed that's running: its collected checks are greyed (the tracker's own data) const char *dir = rando_seed_dir(); const char *base = dir ? strrchr(dir, '/') : NULL; - bool linked = dir && seed == (base ? base + 1 : dir); static char q[64]; static bool hide_done, useful_only; - ImGui::SetNextItemWidth(420 * scale); + Filter f; + f.linked = dir && seed == (base ? base + 1 : dir); + f.hide_done = f.linked && hide_done, f.useful_only = useful_only, f.q = lower(q); + + // (the left column's rows: the sections from g_doc[1] on, then the seed's own as the last one) + if (g_back_left >= 0) opt_focus_row(g_back_left == 0 ? (int)g_doc.size() - 1 : g_back_left - 1), g_back_left = -1; + opt_begin("##spoiler", scale, true); + opt_compact(); + for (size_t i = 1; i <= g_doc.size(); i++) { + int si = i < g_doc.size() ? (int)i : 0; + const Node &n = g_doc[si]; + char v[32] = ""; + if (n.title == "Route" && f.linked) { + int got, total; + route_progress(n, f, &got, &total); + snprintf(v, sizeof v, "%d / %d", got, total); + } else if (si != 0) snprintf(v, sizeof v, "%d", count_node(n, f)); + if (si == g_sec) opt_mark_next(); + opt_shown_next(); + std::string t = si == 0 ? std::string(L("Seed settings")) : shown(n.title); + if (opt_link(t.c_str(), NULL, v)) g_sec = si, g_enter_right = 1; + if (opt_item_nav_focused() || (ImGui::IsItemHovered() && !in_right)) g_sec = si; + } + ImGui::Dummy(ImVec2(0, 6 * scale)); ui_text_inline(true); // (filters as typed: typed into directly, not through a prompt) - ui_input_text("##q", q, sizeof q, 0, L("Search items and places"), L("Search the spoiler log")); + opt_text("Search", q, sizeof q, "Search items and places", NULL); ui_text_inline(false); - ImGui::SameLine(); - ImGui::Checkbox(L("Useful items only"), &useful_only); - if (linked) { - ImGui::SameLine(); - ImGui::Checkbox(L("Hide checked"), &hide_done); - } - Filter f = {q, linked && hide_done, useful_only, linked}; - bool filtering = q[0] || f.hide_done || f.useful_only; - ImGui::BeginChild("##spoiler", ImVec2(0, 0), ImGuiChildFlags_None, ImGuiWindowFlags_NavFlattened); - for (size_t i = 0; i < g_doc.size(); i++) { - Node &n = g_doc[i]; - bool route = n.title == "Route"; // (its stops start open: read top to bottom) - ImGui::PushID((int)i); - if (n.title.empty() || ImGui::CollapsingHeader(shown(n.title).c_str(), i <= 1 || route ? ImGuiTreeNodeFlags_DefaultOpen : 0)) { - draw_lines(n.lines, f, false); - for (size_t k = 0; k < n.subs.size(); k++) { - Sub &sb = n.subs[k]; - bool hit = !q[0] || matches(sb.title, q); - bool any = false; - for (auto &g : sb.groups) any |= any_visible(g.lines, f, hit || (!g.title.empty() && matches(g.title, q))); - if (!any && filtering) continue; - ImGui::PushID((int)k); - if (filtering) ImGui::SetNextItemOpen(true); - if (ImGui::TreeNodeEx(shown(sb.title).c_str(), route ? ImGuiTreeNodeFlags_DefaultOpen : 0)) { - for (size_t g = 0; g < sb.groups.size(); g++) { - Group &gr = sb.groups[g]; - bool ghit = hit || (!gr.title.empty() && matches(gr.title, q)); - if (gr.title.empty()) { draw_lines(gr.lines, f, ghit); continue; } - if (!any_visible(gr.lines, f, ghit)) continue; - ImGui::PushID((int)g); - if (q[0]) ImGui::SetNextItemOpen(true); // (a search opens the folded group too) - if (ImGui::TreeNode(shown(gr.title).c_str())) { - draw_lines(gr.lines, f, ghit); - ImGui::TreePop(); - } - ImGui::PopID(); - } - ImGui::TreePop(); - } - ImGui::PopID(); - } - } - ImGui::PopID(); + opt_toggle("Useful items only", &useful_only, false, NULL); + if (f.linked) opt_toggle("Hide checked", &hide_done, false, NULL); + // ---- right: the chosen section + opt_split(); +#if PLAT_TOUCH + if (plastic_close_pane(44 * scale, scale)) { opt_split_end(); return 0; } +#endif + if (g_sec >= 0 && g_sec < (int)g_doc.size()) { + opt_list_begin(); + if (g_enter_right && g_doc[g_sec].title != "Route") opt_focus_next_row(), g_enter_right = 0; + draw_section(g_sec, f); + g_enter_right = 0; + opt_list_end(); + opt_desc_text(); } - ImGui::EndChild(); - return true; + in_right = opt_in_right(); + opt_split_end(); + return ret; } From d6231dea9cee5502a1b1f860a5d188e5cb046e3d Mon Sep 17 00:00:00 2001 From: Peiikai <339721950+peiikai@users.noreply.github.com> Date: Thu, 12 Nov 2026 23:54:39 -0600 Subject: [PATCH 4/8] Spoiler page: search at the top with live results, sphere count, no route intro or bar Co-Authored-By: Claude Opus 5.5 --- runtime/ui/spoiler_view.mm | 39 ++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/runtime/ui/spoiler_view.mm b/runtime/ui/spoiler_view.mm index 60e518804..87538b0b5 100644 --- a/runtime/ui/spoiler_view.mm +++ b/runtime/ui/spoiler_view.mm @@ -241,16 +241,7 @@ static void draw_route(int si, const Filter &f) { for (size_t k = 0; k < n.subs.size(); k++) if (!done[k] && n.subs[k].title != "Finish") { current = (int)k; break; } bool searching = !f.q.empty(); - if (!searching) - for (auto &l : n.lines) ImGui::TextWrapped("%s", shown(l.text).c_str()); - int got, total, ndone = 0; - route_progress(n, f, &got, &total); - if (f.linked && total) { - char b[64]; - snprintf(b, sizeof b, L("%d of %d collected"), got, total); - ImGui::Spacing(); - plastic_progress_bar((float)got / total, ImVec2(-1, 0), b, ImGui::GetFontSize() / 16); - } + int ndone = 0; for (char d : done) ndone += d; bool show_done = false; if (ndone && !searching && !f.hide_done) { @@ -348,14 +339,19 @@ int spoiler_view_draw(const std::string &seed, float scale) { const char *base = dir ? strrchr(dir, '/') : NULL; static char q[64]; static bool hide_done, useful_only; + static bool q_test; // (test: LARECOMP_SPOILER_QUERY fills the search once) + if (!q_test && (q_test = true) && getenv("LARECOMP_SPOILER_QUERY")) snprintf(q, sizeof q, "%s", getenv("LARECOMP_SPOILER_QUERY")); Filter f; f.linked = dir && seed == (base ? base + 1 : dir); f.hide_done = f.linked && hide_done, f.useful_only = useful_only, f.q = lower(q); - // (the left column's rows: the sections from g_doc[1] on, then the seed's own as the last one) - if (g_back_left >= 0) opt_focus_row(g_back_left == 0 ? (int)g_doc.size() - 1 : g_back_left - 1), g_back_left = -1; + // (the left column's rows: Search, the sections from g_doc[1] on, then the seed's own as the last one) + if (g_back_left >= 0) opt_focus_row(g_back_left == 0 ? (int)g_doc.size() : g_back_left), g_back_left = -1; opt_begin("##spoiler", scale, true); opt_compact(); + ui_text_inline(true); // (filters as typed: typed into directly, not through a prompt) + opt_text("Search", q, sizeof q, "Search items and places", NULL); + ui_text_inline(false); for (size_t i = 1; i <= g_doc.size(); i++) { int si = i < g_doc.size() ? (int)i : 0; const Node &n = g_doc[si]; @@ -364,6 +360,10 @@ int spoiler_view_draw(const std::string &seed, float scale) { int got, total; route_progress(n, f, &got, &total); snprintf(v, sizeof v, "%d / %d", got, total); + } else if (n.title == "Spheres") { // (how many spheres, not how many items) + int c = 0; + for (auto &sb : n.subs) c += count_sub(sb, f) > 0; + snprintf(v, sizeof v, "%d", c); } else if (si != 0) snprintf(v, sizeof v, "%d", count_node(n, f)); if (si == g_sec) opt_mark_next(); opt_shown_next(); @@ -372,9 +372,6 @@ int spoiler_view_draw(const std::string &seed, float scale) { if (opt_item_nav_focused() || (ImGui::IsItemHovered() && !in_right)) g_sec = si; } ImGui::Dummy(ImVec2(0, 6 * scale)); - ui_text_inline(true); // (filters as typed: typed into directly, not through a prompt) - opt_text("Search", q, sizeof q, "Search items and places", NULL); - ui_text_inline(false); opt_toggle("Useful items only", &useful_only, false, NULL); if (f.linked) opt_toggle("Hide checked", &hide_done, false, NULL); // ---- right: the chosen section @@ -385,7 +382,17 @@ int spoiler_view_draw(const std::string &seed, float scale) { if (g_sec >= 0 && g_sec < (int)g_doc.size()) { opt_list_begin(); if (g_enter_right && g_doc[g_sec].title != "Route") opt_focus_next_row(), g_enter_right = 0; - draw_section(g_sec, f); + if (!f.q.empty()) { // (searching: what matches in every section, live as it's typed) + int shown_any = 0; + for (size_t si = 1; si < g_doc.size(); si++) { + const Node &n = g_doc[si]; + if (n.title == "Route" || n.title == "Spheres" || !count_node(n, f)) continue; // (the same items again) + heading(shown(n.title), false); + draw_section((int)si, f); + shown_any = 1; + } + if (!shown_any) ImGui::TextDisabled("%s", L("No matches.")); + } else draw_section(g_sec, f); g_enter_right = 0; opt_list_end(); opt_desc_text(); From 787a47ebceaf5ab7fb933aa22c264b7b7c5002fa Mon Sep 17 00:00:00 2001 From: Peiikai <339721950+peiikai@users.noreply.github.com> Date: Thu, 12 Nov 2026 23:59:48 -0600 Subject: [PATCH 5/8] Spoiler page: Sections heading, section names on top instead of intro text, rows aligned Co-Authored-By: Claude Opus 5.5 --- runtime/ui/lang/de.inc | 1 + runtime/ui/lang/es.inc | 1 + runtime/ui/lang/fr.inc | 1 + runtime/ui/lang/it.inc | 1 + runtime/ui/lang/ja.inc | 1 + runtime/ui/lang/ko.inc | 1 + runtime/ui/lang/nl.inc | 1 + runtime/ui/lang/pt-BR.inc | 1 + runtime/ui/lang/ru.inc | 1 + runtime/ui/lang/zh-Hans.inc | 1 + runtime/ui/lang/zh-Hant.inc | 1 + runtime/ui/spoiler_view.mm | 11 +++++++++-- 12 files changed, 20 insertions(+), 2 deletions(-) diff --git a/runtime/ui/lang/de.inc b/runtime/ui/lang/de.inc index 360b99e90..c05055e90 100644 --- a/runtime/ui/lang/de.inc +++ b/runtime/ui/lang/de.inc @@ -2130,3 +2130,4 @@ {"This seed picked your look. Commit to it!", "Dieser Seed hat deinen Look gewählt. Steh dazu!"}, {"shared", "geteilt"}, {"Marin is an item in the pool, and the desert is blocked without her.", "Marin ist ein Item im Pool, und ohne sie ist die Wüste versperrt."}, +{"Sections", "Bereiche"}, diff --git a/runtime/ui/lang/es.inc b/runtime/ui/lang/es.inc index f5cf07b62..f7909bdfb 100644 --- a/runtime/ui/lang/es.inc +++ b/runtime/ui/lang/es.inc @@ -2130,3 +2130,4 @@ {"This seed picked your look. Commit to it!", "Esta semilla ha elegido tu aspecto. ¡Acéptalo!"}, {"shared", "compartida"}, {"Marin is an item in the pool, and the desert is blocked without her.", "Marin es un objeto de la reserva, y el desierto está bloqueado sin ella."}, +{"Sections", "Secciones"}, diff --git a/runtime/ui/lang/fr.inc b/runtime/ui/lang/fr.inc index 9db6f5899..5d876dcfd 100644 --- a/runtime/ui/lang/fr.inc +++ b/runtime/ui/lang/fr.inc @@ -2130,3 +2130,4 @@ {"This seed picked your look. Commit to it!", "Cette seed a choisi ton look. Assume-le !"}, {"shared", "partagée"}, {"Marin is an item in the pool, and the desert is blocked without her.", "Marine est un objet de la réserve, et le désert est bloqué sans elle."}, +{"Sections", "Sections"}, diff --git a/runtime/ui/lang/it.inc b/runtime/ui/lang/it.inc index 07b98bf2d..264af24f2 100644 --- a/runtime/ui/lang/it.inc +++ b/runtime/ui/lang/it.inc @@ -2130,3 +2130,4 @@ {"This seed picked your look. Commit to it!", "Il tuo aspetto l'ha scelto questo seed. Tienitelo!"}, {"shared", "condivisa"}, {"Marin is an item in the pool, and the desert is blocked without her.", "Marin è un oggetto del pool, e senza di lei il deserto è bloccato."}, +{"Sections", "Sezioni"}, diff --git a/runtime/ui/lang/ja.inc b/runtime/ui/lang/ja.inc index e32754af4..35b52bd44 100644 --- a/runtime/ui/lang/ja.inc +++ b/runtime/ui/lang/ja.inc @@ -2130,3 +2130,4 @@ {"This seed picked your look. Commit to it!", "見た目はこのシードが決めました。これで行きましょう!"}, {"shared", "共有"}, {"Marin is an item in the pool, and the desert is blocked without her.", "マリンがアイテムプールのアイテムになり、マリンがいないと砂漠に入れません。"}, +{"Sections", "セクション"}, diff --git a/runtime/ui/lang/ko.inc b/runtime/ui/lang/ko.inc index 3a97999ce..9bd638344 100644 --- a/runtime/ui/lang/ko.inc +++ b/runtime/ui/lang/ko.inc @@ -2130,3 +2130,4 @@ {"This seed picked your look. Commit to it!", "이 시드가 외형을 정했습니다. 받아들이세요!"}, {"shared", "공용"}, {"Marin is an item in the pool, and the desert is blocked without her.", "마린이 풀의 아이템이 되며, 마린이 없으면 사막에 갈 수 없습니다."}, +{"Sections", "섹션"}, diff --git a/runtime/ui/lang/nl.inc b/runtime/ui/lang/nl.inc index 0c8e14881..53eb2c85c 100644 --- a/runtime/ui/lang/nl.inc +++ b/runtime/ui/lang/nl.inc @@ -2130,3 +2130,4 @@ {"This seed picked your look. Commit to it!", "Deze seed heeft je uiterlijk gekozen. Hou je eraan!"}, {"shared", "gedeeld"}, {"Marin is an item in the pool, and the desert is blocked without her.", "Marin is een voorwerp in de pool, en zonder haar is de woestijn geblokkeerd."}, +{"Sections", "Onderdelen"}, diff --git a/runtime/ui/lang/pt-BR.inc b/runtime/ui/lang/pt-BR.inc index 0d0785d02..6c89b2776 100644 --- a/runtime/ui/lang/pt-BR.inc +++ b/runtime/ui/lang/pt-BR.inc @@ -2130,3 +2130,4 @@ {"This seed picked your look. Commit to it!", "Esta seed escolheu seu visual. Aceite!"}, {"shared", "compartilhada"}, {"Marin is an item in the pool, and the desert is blocked without her.", "Marin é um item na lista, e o deserto fica bloqueado sem ela."}, +{"Sections", "Seções"}, diff --git a/runtime/ui/lang/ru.inc b/runtime/ui/lang/ru.inc index 541219b37..0eea0b648 100644 --- a/runtime/ui/lang/ru.inc +++ b/runtime/ui/lang/ru.inc @@ -2130,3 +2130,4 @@ {"This seed picked your look. Commit to it!", "Этот сид выбрал вам внешний вид. Смиритесь!"}, {"shared", "общий"}, {"Marin is an item in the pool, and the desert is blocked without her.", "Марин — предмет в общем пуле, без нее путь в пустыню закрыт."}, +{"Sections", "Разделы"}, diff --git a/runtime/ui/lang/zh-Hans.inc b/runtime/ui/lang/zh-Hans.inc index d1dc21119..5296b4907 100644 --- a/runtime/ui/lang/zh-Hans.inc +++ b/runtime/ui/lang/zh-Hans.inc @@ -2130,3 +2130,4 @@ {"This seed picked your look. Commit to it!", "你的外观由这个种子决定。就这样吧!"}, {"shared", "共用"}, {"Marin is an item in the pool, and the desert is blocked without her.", "玛林是道具池中的道具,没有她就进不了沙漠。"}, +{"Sections", "分区"}, diff --git a/runtime/ui/lang/zh-Hant.inc b/runtime/ui/lang/zh-Hant.inc index fe869a620..0ca3d9279 100644 --- a/runtime/ui/lang/zh-Hant.inc +++ b/runtime/ui/lang/zh-Hant.inc @@ -2130,3 +2130,4 @@ {"This seed picked your look. Commit to it!", "這個種子已經決定了你的外觀。就這樣吧!"}, {"shared", "共用"}, {"Marin is an item in the pool, and the desert is blocked without her.", "瑪林是道具池中的道具,沒有她就無法進入沙漠。"}, +{"Sections", "分區"}, diff --git a/runtime/ui/spoiler_view.mm b/runtime/ui/spoiler_view.mm index 87538b0b5..5c30e2b95 100644 --- a/runtime/ui/spoiler_view.mm +++ b/runtime/ui/spoiler_view.mm @@ -270,11 +270,16 @@ static void draw_section(int si, const Filter &f) { const Node &n = g_doc[si]; if (n.title == "Route") { draw_route(si, f); return; } if (si == 0) { // (the seed's own lines: its ID, settings, starting items) + heading(L("Seed settings"), false); for (auto &l : n.lines) ImGui::TextWrapped("%s", shown(l.text).c_str()), ImGui::Spacing(); return; } - rows(n.lines, f, false, ""); - bool folds = n.subs.size() > 3; // (Spheres, areas: headers that open; a few blocks (entrances): open, titled) + bool folds = n.subs.size() > 3; + // the section's name on top (its intro text stays in the HTML page only); the rows line up with the left + std::vector top; + for (auto &l : n.lines) if (!is_text(l)) top.push_back(l); + if (f.q.empty() && (folds || !n.lines.empty())) heading(shown(n.title), false); + rows(top, f, false, ""); // (Spheres, areas: headers that open; a few blocks (entrances): open, titled) for (size_t k = 0; k < n.subs.size(); k++) { const Sub &s = n.subs[k]; if (!count_sub(s, f)) continue; @@ -349,6 +354,8 @@ int spoiler_view_draw(const std::string &seed, float scale) { if (g_back_left >= 0) opt_focus_row(g_back_left == 0 ? (int)g_doc.size() : g_back_left), g_back_left = -1; opt_begin("##spoiler", scale, true); opt_compact(); + ImGui::Dummy(ImVec2(0, ImGui::GetStyle().ItemSpacing.y)); // (the right column's list starts this much lower) + heading(L("Sections"), false); // (level with the right column's first heading: the rows line up) ui_text_inline(true); // (filters as typed: typed into directly, not through a prompt) opt_text("Search", q, sizeof q, "Search items and places", NULL); ui_text_inline(false); From 4dccf032a87fa2eba88ffe4e2b32111f3c21d859 Mon Sep 17 00:00:00 2001 From: Peiikai <339721950+peiikai@users.noreply.github.com> Date: Fri, 13 Nov 2026 00:00:55 -0600 Subject: [PATCH 6/8] Spoiler page on touch screens: full-screen columns with pinned headings level with the X, as the Randomizer and Warp Co-Authored-By: Claude Opus 5.5 --- runtime/ui/spoiler_view.mm | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/runtime/ui/spoiler_view.mm b/runtime/ui/spoiler_view.mm index 5c30e2b95..f014df8f6 100644 --- a/runtime/ui/spoiler_view.mm +++ b/runtime/ui/spoiler_view.mm @@ -270,7 +270,7 @@ static void draw_section(int si, const Filter &f) { const Node &n = g_doc[si]; if (n.title == "Route") { draw_route(si, f); return; } if (si == 0) { // (the seed's own lines: its ID, settings, starting items) - heading(L("Seed settings"), false); + if (!PLAT_TOUCH) heading(L("Seed settings"), false); for (auto &l : n.lines) ImGui::TextWrapped("%s", shown(l.text).c_str()), ImGui::Spacing(); return; } @@ -278,7 +278,7 @@ static void draw_section(int si, const Filter &f) { // the section's name on top (its intro text stays in the HTML page only); the rows line up with the left std::vector top; for (auto &l : n.lines) if (!is_text(l)) top.push_back(l); - if (f.q.empty() && (folds || !n.lines.empty())) heading(shown(n.title), false); + if (!PLAT_TOUCH && f.q.empty() && (folds || !n.lines.empty())) heading(shown(n.title), false); rows(top, f, false, ""); // (Spheres, areas: headers that open; a few blocks (entrances): open, titled) for (size_t k = 0; k < n.subs.size(); k++) { const Sub &s = n.subs[k]; @@ -304,6 +304,16 @@ static void draw_section(int si, const Filter &f) { } } +#if PLAT_TOUCH +// a column's heading on the full-screen touch page: level with the X, pinned (as rando_tab.mm's pane_heading) +static void pane_heading(const std::string &title, float scale) { + float top = 10 * scale, bx = 44 * 1.35f * scale; // (plastic_close_pane's place and size) + ImGui::SetCursorPosY(top + (bx - ImGui::GetTextLineHeight()) / 2); + ImGui::TextColored(plastic_col(plastic_theme().section), "%s", i18n_upper(title.c_str()).c_str()); + ImGui::SetCursorPosY(top + bx + 4 * scale); +} +#endif + // Returns 0 when the page was closed (B on its left column, Back, or the X on touch screens), 2 when B / Left stepped // back within it (the menu mustn't take that B too), else 1. int spoiler_view_draw(const std::string &seed, float scale) { @@ -317,9 +327,11 @@ int spoiler_view_draw(const std::string &seed, float scale) { if (free_b && in_right && (opt_pressed_back() || (opt_pressed_left() && !opt_focused_lr()))) g_back_left = g_sec, ret = 2; else if (free_b && !in_right && opt_pressed_back()) return 0; - ImGui::TextColored(plastic_col(plastic_theme().title), "%s", seed.c_str()); - ImGui::TextDisabled("%s", L("Spoiler log")); - ImGui::Spacing(); + if (!PLAT_TOUCH || g_missing || !revealed) { // (touch: the page has the whole screen, its columns their headings) + ImGui::TextColored(plastic_col(plastic_theme().title), "%s", seed.c_str()); + ImGui::TextDisabled("%s", L("Spoiler log")); + ImGui::Spacing(); + } if (g_missing || !revealed) { #if PLAT_TOUCH if (plastic_close_corner(44 * scale, scale)) return 0; // (one column: the screen's corner) @@ -354,8 +366,13 @@ int spoiler_view_draw(const std::string &seed, float scale) { if (g_back_left >= 0) opt_focus_row(g_back_left == 0 ? (int)g_doc.size() : g_back_left), g_back_left = -1; opt_begin("##spoiler", scale, true); opt_compact(); +#if PLAT_TOUCH + pane_heading(L("Sections"), scale); + ImGui::BeginChild("##left_list", ImVec2(0, 0), ImGuiChildFlags_NavFlattened); // (the heading pinned: the list scrolls) +#else ImGui::Dummy(ImVec2(0, ImGui::GetStyle().ItemSpacing.y)); // (the right column's list starts this much lower) heading(L("Sections"), false); // (level with the right column's first heading: the rows line up) +#endif ui_text_inline(true); // (filters as typed: typed into directly, not through a prompt) opt_text("Search", q, sizeof q, "Search items and places", NULL); ui_text_inline(false); @@ -381,10 +398,16 @@ int spoiler_view_draw(const std::string &seed, float scale) { ImGui::Dummy(ImVec2(0, 6 * scale)); opt_toggle("Useful items only", &useful_only, false, NULL); if (f.linked) opt_toggle("Hide checked", &hide_done, false, NULL); +#if PLAT_TOUCH + ImGui::EndChild(); // (##left_list) +#endif // ---- right: the chosen section opt_split(); #if PLAT_TOUCH if (plastic_close_pane(44 * scale, scale)) { opt_split_end(); return 0; } + if (!f.q.empty()) pane_heading(L("Search"), scale); + else if (g_sec == 0) pane_heading(L("Seed settings"), scale); + else if (g_sec > 0 && g_sec < (int)g_doc.size()) pane_heading(shown(g_doc[g_sec].title), scale); #endif if (g_sec >= 0 && g_sec < (int)g_doc.size()) { opt_list_begin(); From c6eca1599d17dba903c783400c9eeb7b60041080 Mon Sep 17 00:00:00 2001 From: Peiikai <339721950+peiikai@users.noreply.github.com> Date: Fri, 13 Nov 2026 00:05:03 -0600 Subject: [PATCH 7/8] Spoiler page: every right-hand pane starts with a heading, so its rows line up with the left column Co-Authored-By: Claude Opus 5.5 --- runtime/ui/spoiler_view.mm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/runtime/ui/spoiler_view.mm b/runtime/ui/spoiler_view.mm index f014df8f6..d4f3e780a 100644 --- a/runtime/ui/spoiler_view.mm +++ b/runtime/ui/spoiler_view.mm @@ -268,7 +268,11 @@ static void draw_route(int si, const Filter &f) { static void draw_section(int si, const Filter &f) { const Node &n = g_doc[si]; - if (n.title == "Route") { draw_route(si, f); return; } + if (n.title == "Route") { + if (!PLAT_TOUCH && f.q.empty()) heading(shown(n.title), false); // (always: the first rows line up with the left) + draw_route(si, f); + return; + } if (si == 0) { // (the seed's own lines: its ID, settings, starting items) if (!PLAT_TOUCH) heading(L("Seed settings"), false); for (auto &l : n.lines) ImGui::TextWrapped("%s", shown(l.text).c_str()), ImGui::Spacing(); @@ -278,7 +282,7 @@ static void draw_section(int si, const Filter &f) { // the section's name on top (its intro text stays in the HTML page only); the rows line up with the left std::vector top; for (auto &l : n.lines) if (!is_text(l)) top.push_back(l); - if (!PLAT_TOUCH && f.q.empty() && (folds || !n.lines.empty())) heading(shown(n.title), false); + if (!PLAT_TOUCH && f.q.empty()) heading(shown(n.title), false); // (always: the first rows line up with the left) rows(top, f, false, ""); // (Spheres, areas: headers that open; a few blocks (entrances): open, titled) for (size_t k = 0; k < n.subs.size(); k++) { const Sub &s = n.subs[k]; @@ -421,7 +425,10 @@ int spoiler_view_draw(const std::string &seed, float scale) { draw_section((int)si, f); shown_any = 1; } - if (!shown_any) ImGui::TextDisabled("%s", L("No matches.")); + if (!shown_any) { + if (!PLAT_TOUCH) heading(L("Search"), false); + ImGui::TextDisabled("%s", L("No matches.")); + } } else draw_section(g_sec, f); g_enter_right = 0; opt_list_end(); From cabb61fdfddf324ad30cb8f3928847d7a9700bd5 Mon Sep 17 00:00:00 2001 From: Peiikai <339721950+peiikai@users.noreply.github.com> Date: Fri, 13 Nov 2026 00:09:19 -0600 Subject: [PATCH 8/8] Spoiler page on touch, before Reveal: the X in the panel with the page name, as the seed's page Co-Authored-By: Claude Opus 5.5 --- runtime/ui/spoiler_view.mm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/runtime/ui/spoiler_view.mm b/runtime/ui/spoiler_view.mm index d4f3e780a..f61417b61 100644 --- a/runtime/ui/spoiler_view.mm +++ b/runtime/ui/spoiler_view.mm @@ -331,16 +331,21 @@ int spoiler_view_draw(const std::string &seed, float scale) { if (free_b && in_right && (opt_pressed_back() || (opt_pressed_left() && !opt_focused_lr()))) g_back_left = g_sec, ret = 2; else if (free_b && !in_right && opt_pressed_back()) return 0; - if (!PLAT_TOUCH || g_missing || !revealed) { // (touch: the page has the whole screen, its columns their headings) + if (!PLAT_TOUCH) { // (touch: the page has the whole screen, its columns their headings) ImGui::TextColored(plastic_col(plastic_theme().title), "%s", seed.c_str()); ImGui::TextDisabled("%s", L("Spoiler log")); ImGui::Spacing(); } if (g_missing || !revealed) { + opt_begin("##spoiler_gate", scale); #if PLAT_TOUCH - if (plastic_close_corner(44 * scale, scale)) return 0; // (one column: the screen's corner) + // (one column: as the seed's own page and Cosmetics - the X in the panel with the page's name on its line, + // the seed's name under it. In the screen's corner it was cut off and under the FPS counter.) + if (plastic_close_pane(44 * scale, scale)) { opt_end(); return 0; } + pane_heading(L("Spoiler log"), scale); + ImGui::TextColored(plastic_col(plastic_theme().title), "%s", seed.c_str()); + ImGui::Spacing(); #endif - opt_begin("##spoiler_gate", scale); if (g_missing) { ImGui::TextWrapped("%s", L("This seed has no spoiler log to show. Seeds made with Spoiler log off or by an older " "version don't have one."));