Add tooltips to settings

This commit is contained in:
2025-12-14 14:11:18 -06:00
parent 2f6a309cca
commit 9fec8b00fd
6 changed files with 1079 additions and 762 deletions

1732
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -23,7 +23,7 @@
"vue-select": "^4.0.0-beta.6" "vue-select": "^4.0.0-beta.6"
}, },
"devDependencies": { "devDependencies": {
"@modyfi/vite-plugin-yaml": "^1.1.1", "@modyfi/vite-plugin-yaml": "^1.0.2",
"@vitejs/plugin-vue": "^5.2.1", "@vitejs/plugin-vue": "^5.2.1",
"vite": "^6.1.0", "vite": "^6.1.0",
"vite-plugin-vue-devtools": "^7.7.2" "vite-plugin-vue-devtools": "^7.7.2"

View File

@@ -1,5 +1,5 @@
<script setup> <script setup>
import { RouterLink, RouterView } from "vue-router"; import { RouterView } from "vue-router";
</script> </script>
<template> <template>

View File

@@ -1,4 +1,5 @@
<script> <script>
import { Tooltip } from 'bootstrap'
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import localforage from "localforage"; import localforage from "localforage";
@@ -45,6 +46,7 @@ export default defineComponent({
}, },
}, },
async mounted() { async mounted() {
this.$refs.tips.forEach(el => new Tooltip(el));
this.selected = await localforage.getItem(`${this.prefix}setting_${this.name}`) ?? this.settings.default; this.selected = await localforage.getItem(`${this.prefix}setting_${this.name}`) ?? this.settings.default;
this.change(); this.change();
}, },
@@ -67,7 +69,7 @@ export default defineComponent({
<template v-if="settings.values[value]"> <template v-if="settings.values[value]">
<input type="radio" class="btn-check" :name="`${prefix}${name}`" :id="`${prefix}${name}_${value}`" <input type="radio" class="btn-check" :name="`${prefix}${name}`" :id="`${prefix}${name}_${value}`"
autocomplete="off" :value="value" v-model="selected" @change="change" /> autocomplete="off" :value="value" v-model="selected" @change="change" />
<label :class="`btn btn-outline-${color} nav-item m-1`" :for="`${prefix}${name}_${value}`"> <label :class="`btn btn-outline-${color} nav-item m-1`" :for="`${prefix}${name}_${value}`" data-bs-toggle="tooltip" data-bs-placement="bottom" :title="settings.values[value].tip" ref="tips">
{{ settings.values[value].display }} {{ settings.values[value].display }}
</label> </label>
</template> </template>

View File

@@ -23,32 +23,44 @@ weapons:
display: Random display: Random
assured: assured:
display: Assured display: Assured
tip: The player begins with the Fighter Sword.
vanilla: vanilla:
display: Vanilla display: Vanilla
tip: "Swords are placed in their vanilla locations: Uncle, Pedestal, Blacksmith, and Pyramid Fairy"
swordless: swordless:
display: Swordless display: Swordless
tip: The player will never find a sword. Ganon can instead be damaged with the hammer.
assured_master: assured_master:
display: Assured Master display: Assured Master
tip: The player begins with the Master Sword.
goal: goal:
display: Goal display: Goal
default: ganon default: ganon
values: values:
ganon: ganon:
display: Ganon display: Ganon
tip: Ganon must be defeated to complete the game, but can only be defeated once the player has collected a sufficient number of crystals and defeated the form of Agahnim at the top of Ganon's Tower.
fast_ganon: fast_ganon:
display: Fast Ganon display: Fast Ganon
tip: Ganon must be defeated to complete the game, but can only be defeated once the player has collected a sufficient number of crystals.
all_dungeons: all_dungeons:
display: All Dungeons display: All Dungeons
tip: Ganon must be defeated to complete the game, but can only be defeated once the player has collected all seven crystals, all three pendants, and has defeated both forms of Agahnim.
pedestal: pedestal:
display: Pedestal display: Pedestal
tip: Collecting all three pendants and pulling the item from the Master Sword Pedestal will complete the game.
triforce_hunt: triforce_hunt:
display: Triforce Hunt display: Triforce Hunt
tip: The player must collect enough triforce pieces and then turn them in to Murahdala outside Hyrule Castle to complete the game.
ganon_hunt: ganon_hunt:
display: Ganon Hunt display: Ganon Hunt
tip: Ganon must be defeated to complete the game, but can only be defeated once the player has collected enough triforce pieces.
completionist: completionist:
display: Completionist display: Completionist
tip: Ganon must be defeated to complete the game, but can only be defeated once every single randomized item has been collected.
sanctuary: sanctuary:
display: Sanctuary display: Sanctuary
tip: Opening the chest in the sanctuary will complete the game.
crystals_ganon: crystals_ganon:
display: Crystals for Ganon display: Crystals for Ganon
default: "7" default: "7"
@@ -129,6 +141,7 @@ ganon_item:
display: Random display: Random
none: none:
display: No Weakness display: No Weakness
tip: Ganon cannot be injured while in his blue vulnerable state, and can only be harmed during the frames while he raises his arms.
entrance_shuffle: entrance_shuffle:
display: Entrance Shuffle display: Entrance Shuffle
default: vanilla default: vanilla
@@ -149,22 +162,29 @@ skull_woods:
values: values:
original: original:
display: Shuffled in SW display: Shuffled in SW
tip: The entrances (aside from the fire-locked skull entrance) and drops in Skull Woods are each shuffled within their own pool.
restricted: restricted:
display: Vanilla Drops display: Vanilla Drops
tip: The entrances (aside from the fire-locked skull entrance) in Skull Woods are shuffled within their own pool, and the drops all lead to their vanilla placements.
loose: loose:
display: Vanilla Drops, Loose Entrances display: Vanilla Drops, Loose Entrances
tip: The drops into Skull Woods all lead to their vanilla location; the entrances are shuffled into the main pool of entrances.
follow_linked: follow_linked:
display: Chaos display: Chaos
tip: The front entrance to Skull Woods (with the drop that leads to the Big Chest) and the middle entrance (with the northern drop accessible from the back) form two more linked dropdowns that are shuffled into the broader pool of dropdowns. The remaining two drops both lead to their vanilla locations.
linked_drops: linked_drops:
display: Linked Drops display: Linked Drops
default: unset default: unset
values: values:
unset: unset:
display: Unset display: Unset
tip: Dropdowns are linked unless the entrance shuffle mode is set to decoupled.
linked: linked:
display: Linked display: Linked
tip: Dropdowns are linked with their nearby entrance and shuffled as pairs.
independent: independent:
display: Independent display: Independent
tip: Dropdowns are shuffled independently from their nearby entrances.
boss_shuffle: boss_shuffle:
display: Boss Shuffle display: Boss Shuffle
default: vanilla default: vanilla
@@ -173,12 +193,16 @@ boss_shuffle:
display: None display: None
simple: simple:
display: Simple display: Simple
tip: The thirteen bosses (the ten main dungeon bosses plus the three mini-bosses in Ganon's Tower) are shuffled with their vanilla counts (two copies of each light world boss, one of each dark world boss).
full: full:
display: Full display: Full
tip: The thirteen bosses (the ten main dungeon bosses plus the three mini-bosses in Ganon's Tower) are shuffled to contain at least one copy of each boss, with three bosses chosen at random having a duplicate.
random: random:
display: Random display: Random
tip: The thirteen bosses (the ten main dungeon bosses plus the three mini-bosses in Ganon's Tower) are each chosen randomly, indepedent of how many copies there are of each boss.
prize_unique: prize_unique:
display: Prize Unique display: Prize Unique
tip: The ten main dungeons will have one copy of each boss; the three mini-bosses in Ganon's Tower can be any boss.
enemy_shuffle: enemy_shuffle:
display: Enemy Shuffle display: Enemy Shuffle
default: vanilla default: vanilla
@@ -197,48 +221,78 @@ damage_table_shuffle:
display: None display: None
randomized: randomized:
display: Randomized display: Randomized
tip: Every sword entry in the damage table that would normally deal damage is randomized indepedently; this means that higher level swords will not necessarily do more damage against a given enemy.
small_keys: small_keys:
display: Small Key Shuffle display: Small Key Shuffle
default: dungeon default: dungeon
values: values:
dungeon: dungeon:
display: In Dungeon display: In Dungeon
tip: Small Keys are all within their own dungeon.
wild: wild:
display: Wild display: Wild
tip: Small Keys are all shuffled anywhere within the world.
nearby: nearby:
display: Nearby display: Nearby
tip: Small Keys are all either within their own dungeon, or in a nearby non-dungeon location.
universal: universal:
display: Universal display: Universal
tip: Small Keys are no longer restricted to certain dungeons, and can be freely used in any dungeon. At least one shop will have keys for sale.
big_keys: big_keys:
display: Big Key Shuffle display: Big Key Shuffle
default: dungeon default: dungeon
values: values:
dungeon: dungeon:
display: In Dungeon display: In Dungeon
tip: Big Keys are all within their own dungeon.
wild: wild:
display: Wild display: Wild
tip: Big Keys are all shuffled anywhere within the world.
nearby: nearby:
display: Nearby display: Nearby
tip: Big Keys are all either within their own dungeon, or in a nearby non-dungeon location.
maps: maps:
display: Map Shuffle display: Map Shuffle
default: dungeon default: dungeon
values: values:
dungeon: dungeon:
display: In Dungeon display: In Dungeon
tip: Maps are all within their own dungeon.
wild: wild:
display: Wild display: Wild
tip: Maps are all shuffled anywhere within the world.
nearby: nearby:
display: Nearby display: Nearby
tip: Maps are all either within their own dungeon, or in a nearby non-dungeon location.
compasses: compasses:
display: Compass Shuffle display: Compass Shuffle
default: dungeon default: dungeon
values: values:
dungeon: dungeon:
display: In Dungeon display: In Dungeon
tip: Compasses are all within their own dungeon.
wild: wild:
display: Wild display: Wild
tip: Compasses are all shuffled anywhere within the world.
nearby: nearby:
display: Nearby display: Nearby
tip: Compasses are all either within their own dungeon, or in a nearby non-dungeon location.
prize_shuffle:
display: Prize Shuffle
default: vanilla
values:
vanilla:
display: On Boss
tip: Dungeon prizes are on bosses as in the vanilla game.
dungeon:
display: In Dungeon
tip: Dungeon prizes are all within their own dungeon.
nearby:
display: Nearby
tip: Dungeon prizes are all either within their own dungeon, or in a nearby non-dungeon location.
wild:
display: Wild
tip: Dungeon prizes are all shuffled anywhere within the world.
shop_shuffle: shop_shuffle:
display: Shop Shuffle display: Shop Shuffle
default: vanilla default: vanilla
@@ -248,49 +302,49 @@ shop_shuffle:
shuffled: shuffled:
display: Shuffled display: Shuffled
drop_shuffle: drop_shuffle:
display: Drop Shuffle display: Enemy Drop Shuffle
default: vanilla default: vanilla
values: values:
vanilla: vanilla:
display: None display: None
tip: Every enemy that drops a key in vanilla will continue to drop a key.
keys: keys:
display: Key Drops display: Key Drops
tip: Drops from enemies that normally have a key in vanilla are shuffled into the pool of items.
underworld: underworld:
display: All Underworld Enemies display: All Underworld Enemies
tip: Drops from every underworld enemy are shuffled into the pool of items.
pottery: pottery:
display: Pottery Shuffle display: Pottery Shuffle
default: vanilla default: vanilla
values: values:
vanilla: vanilla:
display: None display: None
tip: Every pot that contains a key in vanilla will continue to contain a key.
keys: keys:
display: Keys display: Keys
tip: Pots that contain keys in vanilla are shuffled into the pool of items.
cave: cave:
display: Caves display: Caves
tip: Underworld pots that are not inside a dungeon are shuffled into the pool of items.
cave_keys: cave_keys:
display: Caves & Keys display: Caves & Keys
tip: Underworld pots that either contain a key in vanilla or are not inside a dungeon are shuffled into the pool of items.
reduced: reduced:
display: Reduced display: Reduced
tip: Underworld pots that either contain a key in vanilla or are not inside a dungeon are shuffled into the pool of items, as well as about a quarter of all remaining dungeon pots.
clustered: clustered:
tip: Underworld pots that either contain a key in vanilla or are not inside a dungeon are shuffled into the pool of items, as well as about half of all remaining dungeon pots.
display: Clustered display: Clustered
non_empty: non_empty:
display: Non-Empty display: Non-Empty
tip: Items inside every pot that is non-empty is vanilla are shuffled into the pool of items.
dungeon: dungeon:
display: Dungeon display: Dungeon
tip: Underworld pots that are within a dungeon are shuffled into the pool of items.
lottery: lottery:
display: Lottery display: Lottery
prize_shuffle: tip: All underworld pots are shuffled into the pool of items.
display: Prize Shuffle
default: vanilla
values:
vanilla:
display: On Boss
dungeon:
display: In Dungeon
nearby:
display: Nearby
wild:
display: Wild
boots: boots:
display: Boots display: Boots
default: normal default: normal
@@ -299,6 +353,7 @@ boots:
display: No Starting Boots display: No Starting Boots
pseudoboots: pseudoboots:
display: Pseudoboots display: Pseudoboots
tip: The player can dash, but not knock items loose or bonk over most pits.
starting: starting:
display: Starting Boots display: Starting Boots
flute: flute:
@@ -307,24 +362,35 @@ flute:
values: values:
normal: normal:
display: Flute Needs Activation display: Flute Needs Activation
tip: The flute needs to be activated at the weathervane in Kakariko before the player can use it to travel.
preactivated: preactivated:
display: Preactivated display: Preactivated
tip: Once the player finds the flute they can immediately use it to travel without needing to activate it in Kakariko.
pseudoflute:
display: Pseudoflute
tip: The player begins the game with a flute that can only take the player to locations they have already visited (except for the portal area in the desert). Obtaining the real flute will unlock all flute locations.
starting: starting:
display: Starting Activated Flute display: Starting Activated Flute
tip: The player begins the game with a pre-activated flute.
dark_rooms: dark_rooms:
display: Dark Room Logic display: Dark Room Logic
default: require_lamp default: require_lamp
values: values:
require_lamp: require_lamp:
display: Lamp Required display: Lamp Required
tip: Dark rooms are only considered to be in logic if the player has the lamp.
always_light_cone: always_light_cone:
display: Free Light Cone display: Free Light Cone
tip: The player always gets a light cone in dark rooms, whether or not they have the lamp.
no_dark_rooms: no_dark_rooms:
display: All Rooms Lit display: All Rooms Lit
tip: There are no dark rooms; all rooms that would normally be dark (except for Ganon) are instead fully lit, regardless of whether the player has the lamp.
always_in_logic: always_in_logic:
display: Always in Logic display: Dark Rooms in Logic
tip: Dark rooms are always considered to be in logic, even if the player does not have the lamp.
starting_lamp: starting_lamp:
display: Starting Lamp display: Starting Lamp
tip: The player starts with the lamp.
bombs: bombs:
display: Bombs display: Bombs
default: normal default: normal
@@ -333,6 +399,7 @@ bombs:
display: No Bomb Bag Required display: No Bomb Bag Required
bomb_bag_required: bomb_bag_required:
display: Bomb Bag Required display: Bomb Bag Required
tip: The player cannot collect any bombs until they obtain a bomb bag.
book: book:
display: Book display: Book
default: normal default: normal
@@ -341,6 +408,7 @@ book:
display: No Special Functionality display: No Special Functionality
crystal_switches: crystal_switches:
display: Can Flip Crystal Switches display: Can Flip Crystal Switches
tip: Using the book indoors will flip the state of the crystal switch pegs.
door_shuffle: door_shuffle:
display: Door Shuffle display: Door Shuffle
default: vanilla default: vanilla
@@ -401,8 +469,10 @@ damage_challenge:
display: Normal display: Normal
ohko: ohko:
display: One-Hit KO display: One-Hit KO
tip: Every amount of damage the player takes is fatal.
gloom: gloom:
display: Gloom display: Gloom
tip: Every enemy will deal one permanent heart container of damage. The only way to regain health is to find heart containers or collect four heart pieces.
hints: hints:
display: Hints display: Hints
default: off default: off

View File

@@ -5,6 +5,7 @@ import router from "./router";
import "bootstrap/dist/css/bootstrap.min.css"; import "bootstrap/dist/css/bootstrap.min.css";
import "bootstrap-icons/font/bootstrap-icons.css"; import "bootstrap-icons/font/bootstrap-icons.css";
import "vue-select/dist/vue-select.css"; import "vue-select/dist/vue-select.css";
import "@popperjs/core/dist/umd/popper.min.js";
import "bootstrap/js/dist/tab.js"; import "bootstrap/js/dist/tab.js";
import "bootstrap"; import "bootstrap";